2013-05-03 20:11:23 +0000 2013-05-03 20:11:23 +0000
50
50
Advertisement

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

Advertisement

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

CDは正常に動作しますが、代わりにブータブルUSBドライブを使用したいと思います。

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

さて、これでファイルをコピーしてUSBをブータブルにしますが、エラー “Missing operating system”

何かアイデアはありますか?

Advertisement
Advertisement

回答 (4)

58
58
58
2013-05-07 16:46:56 +0000

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

1.USBフラッシュドライブを差し込んで、コマンドでマウントされているデバイスを特定する。

  1. デバイスをアンマウントする

  2. 必要かどうかはわかりませんが、念のためドライブをFAT32でフォーマットしておきました。これでISOはsyslinuxではなくisolinuxを使うようになりました。これはハードドライブからISOをBIOSに認識させるために必要なコマンドです。

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

3
3
3
2013-05-03 20:25:22 +0000

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

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

1
Advertisement
1
1
2016-01-20 13:42:39 +0000
Advertisement

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を使って、 ここ のように0x6&を使って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 ==

0
0
0
2018-04-09 23:44:32 +0000
bootiso -d /dev/sdb filename.iso

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

もし @xsdf が言っている問題を回避するために syslinux ブートローダをインストールしたい場合は、/dev/sdb オプションを使ってください。

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

インストールするには:

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

関連する質問

6
10
5
37
3
Advertisement
Advertisement