web-dev-qa-db-ja.com

Linux上でコマンドラインを使用して起動可能なISOから起動可能なUSBを作成する方法

私はISOファイルから作成されたCDを持っています。それは私がplop linuxを通してUbuntuのカスタムバージョンをインストールするために使用します。

CDは問題なく動作しますが、代わりに起動可能なUSBドライブを使用したいのですが。起動可能なUSBを試して作成するためにddコマンドを使用しました。

dd if=filename.iso of=/dev/sdb1 bs=4k

これでファイルがコピーされ、USBが起動可能になりますが、「Missing operating system」というエラーが表示されます。

何か案は?

50
xsdf

いくつかの調査の後にわかりました、私は解決策を考え出しました、そして、私は段階的にそれを通って行きます。問題は2つありました。

  1. USBフラッシュドライブを接続し、次のコマンドでマウントされているデバイスを確認します。

    Sudo fdisk -l
    

    今回は/ dev/sdc1でしたので、これを私の例として使用します。

  2. デバイスをマウント解除する

    umount /dev/sdc1
    
  3. 念のため、必要であればわかりませんが、ドライブをFAT32でフォーマットしました。

    Sudo mkdosfs -n 'USB-Drive-Name' -I /dev/sdc -F 32
    
  4. 今私のISOはsyslinuxではなくisolinuxを使っていました。私はそれがCDでうまくいくことを知っていたので、私はISOがハードドライブからBIOSによって認識されることを可能にするisohybridコマンドを呼び出す必要があることを考え出した。

     isohybrid filename.iso
    

    このコマンドの詳細 はこちら で確認できますが、これが "Missing Operating System"というメッセージの原因となっていました。 "isolinux.binが見つからないか、破損している"

  5. 次のステップはisoをコピーすることです。私の2つ目の問題は、デバイスsdcではなくパーティションsdc1にコピーしていたことです。

    Sudo dd if=filename.iso of=/dev/sdc bs=4k
    

    これは問題なく動作するようですが、私が最後に修正したフォーラムです。デバイスを取り外す前に次のことを行うことをお勧めしました。

    sync
    Sudo eject /dev/sdc
    
58
xsdf

これはSanDisk USBスティック、またはFAT32でフォーマットされていないスティックの一般的な問題です。

どちらでもない場合は、スティックパーティションの順序またはsyslinux.cfgファイルの問題であることが最も確実です。

3
Shouvik Sayef

isohybridは常に機能するとは限りません。たとえば、FreeDOSで.isoがあり、isohybridはそこにいくつかの重要なファイルを見つけることができませんでした(私が使用したsyslinuxによってそこに置かれるべきかどうかはわかりません)。ここでいくつかの代替案を提案します。

1)GRUBなどの別のブートローダーをインストールします。説明されている ここ

「USBスティックの最初のパーティションがFAT32で、そのパーティションが/ dev/sdy1であると仮定します」(Fedora Coreにgrub2があったので、コマンドを少し変更しました):

# mkdir -p /mnt/usb ; mount /dev/sdy1 /mnt/usb
# grub2-install --target=i386-pc --recheck --debug --boot-directory=/mnt/usb/boot /dev/sdy
# grub2-mkconfig -o /mnt/usb/boot/grub2/grub.cfg

# optional, backup config files of grub.cfg
# mkdir -p /mnt/usb/etc/default
# cp /etc/default/grub /mnt/usb/etc/default
# cp -a /etc/grub.d /mnt/usb/etc

# sync; umount /mnt/usb

2)FreeDOS wikiは、GRUBとsyslinux here を使用した複合メソッドを提供します(ただし、grub>の起動方法がわかりませんが、USBから起動できませんでした)その段階まで)。

3) ここ は役立つ投稿です-「command.com、kernel.sys、syslinux.cfg、ldlinux.sys、およびfat32lba.bssファイルがルートにある限りドライブとMBRおよびブートセクターは書き換えられず、ドライブはブート可能なままである必要があります。

4) ここ syslinuxブートローダーで起動可能な.isoファイルを生成する方法が説明されています。アイソハイブリッドも使用していません。残念ながら、それは私を助けませんでした(たぶんsyslinuxのため)。

5 *)wineを介してWindowsプログラムを使用します。ルーファスを試してみましたが、うまくいきませんでした。デバイスが見つかりませんでした。

残念ながら、この問題を解決できず、私のデバイスは起動できませんでしたが、これが他の人々(また、USBにLinuxではなくインストールしたい人々)に役立つことを願っています。 chtaubeによって生成されたusbイメージは私にとっては機能しましたが、これらの方法は正しいと思います。

UPD:3番目の方法は実際に機能します(カスタムインストールファイルの 修正 を使用)。

UPD2:(固定リンク)。 isohybridの問題は、おそらくisoとシステム上のisolinux.binのバージョンが異なるためでした。提案されたgenisoimageを使用してisoを再コンパイルしました here

genisoimage -l -r -J -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o fd11new.iso fd11new

いくつかの問題もありました。それらはgenisoimageの前にメソッド here によって解決されました:

cp /boot/extlinux/*.c32 fd11new/isolinux/
extlinux --install /boot/isolinux

== UPD2を終了==

1

あなたは bootisoユーティリティ を使うことができます。

bootiso -d /dev/sdb filename.iso

bootisoは、選択されたデバイス/dev/sdbがUSB経由で接続されているかどうかを確認し、接続されていない場合は失敗します。これは大きなセキュリティ上の利点です。システムに接続されているUSBドライブが1つだけの場合は、USBデバイスも自動的に検出されます。

Syslinuxブートローダをインストールして@xsdfで言及されている問題を回避したい場合は、-bオプションを使用してください。

 bootiso -b -d /dev/sdb filename.iso

インストールするには:

curl -L https://rawgit.com/jsamr/bootiso/latest/bootiso -O
chmod +x bootiso
0
Jules Randolph