iso image – Linux で起動可能な ISO から起動可能な USB をコマンドラインで作成するには?

bootable-media dd iso-image isolinux linux

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

cdは正常に動作しますが、代わりにブータブルUSBドライブを使用したいと思います。dd コマンドを使ってブータブル USB を作成してみました

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

今、これはファイルをコピーしてUSBを起動可能にしますが、私はエラー “missing operating system “を取得します

Any ideas?

  50  xsdf  2013-05-03


ベストアンサー

いくつかの研究の後、私は解決策を考え出しました、そして私はそれを一歩一歩進めていきます。問題は二つあった

  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 “というメッセージが表示されていました

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

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

    これで問題なく動作しているようですが、最後に修正してもらったフォーラムでは、デバイスを抜く前に以下のようにすることを推奨されていました

    sync
    sudo eject /dev/sdc
    

58  xsdf  2013-05-07


これは、SanDisk USBスティック、またはFAT32でフォーマットされていないスティックでよく見られる問題です

もしどちらでもなければ、スティックパーティションの順番や syslinux.cfg ファイルに問題があることは間違いありません

3  Shouvik Sayef  2013-05-03


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 を使った複合的な方法 こちら があります (grub> の起動方法がよくわかりませんが – それまでは usb からの起動ができませんでした)

3) こちらに有用な投稿があります – ‘command.com, kernel.sys, syslinux.cfg, ldlinux.sys, fat32lba.bss ファイルがドライブのルートにあり、MBR とブートセクタが書き換えられていない限り、ドライブは起動可能なままです

4) こちら syslinux ブートローダで起動可能な .iso ファイルを生成する方法が説明されています。isohybrid も使っていません。残念ながら参考になりませんでした (syslinux のせいかもしれません)

5*)wineを経由してwindowsのプログラムを使用します。rufusを試してみましたが、デバイスを見つけることができませんでした

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

UPD: 3番目の方法は本当に機能します(カスタムインストールファイルの修正

UPD2: (リンクを修正しました)。isohybridで問題になったのは、iso上のisolinux.binのバージョンと私のシステムのバージョンが違っていたからだと思われます。こちら を参考に、genisoimageを使ってisoを再コンパイルしました

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

いくつかの問題もありましたが、それらはこちらの方法で解決されました

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

== end UPD2 ==

1  Yaroslav Nikitenko  2016-01-20


bootiso ユーティリティ を使用することができます

bootiso -d /dev/sdb filename.iso

bootiso は選択されたデバイス /dev/sdb が USB 経由で接続されているかどうかをチェックし、接続されていない場合は失敗します。また、システムに接続されているUSBドライブが1つでもあれば、USBデバイスを自動検出します

xsdf が指摘した問題を回避するために syslinux ブートローダをインストールしたい場合は -b オプションを使ってください

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

それをインストールするために

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

0  Jules Sam. Randolph  2018-04-09


タイトルとURLをコピーしました