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


50

plop linux経由でUbuntuのカスタムバージョンをインストールするために使用するISOファイルから作成されたCDがあります。

CDは正常に機能しますが、代わりに起動可能なUSBドライブを使用したいと思います。ddコマンドを使用して、起動可能なUSBを作成しようとしました。

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

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

何か案は?


コマンドラインにのみアクセスできますか?Unetbootinのような非常にうまく機能し、Linuxで実行されるインターフェースがあります。–
ダッシュボード

3
@dashboardすべてのlinuxマシンで使用できるので、コマンドラインを好みます。
xsdf


@dashboard-GUIツールは私にとってはうまく機能しないようです。これは長年にわたって一貫して当てはまります。コマンドラインの方法を知ってうれしいです。簡単で信頼性が高いと思います。それほどイライラすることはありません!
MountainX

回答:


58

いくつかの調査の後、解決策を見つけました。手順を追って説明します。問題は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で動作することはわかっていたので、isohybridコマンドを呼び出す必要があることがわかりました。このコマンドを使用すると、ハードドライブからBIOSがISOを認識できるようになります。

     isohybrid filename.iso
    

    あなたはもっとこのコマンドについて知ることができ、ここで、これは最初の問題が修正されました「オペレーティングシステムがありません」メッセージの原因だったが、今では「isolinux.binが見つからないか壊れた」と述べました

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

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

    これはうまく機能しているように見えますが、最後に修正したフォーラムでは、デバイスを取り外す前に次のことを行うことをお勧めしました。

    sync
    sudo eject /dev/sdc
    

3
ddの進捗を確認する方法は次のとおりです。unix.stackexchange.com / a / 11264 / 13011
ニコスアレクサンドリス

3
ここで仮定するとmkdosfs、isoにはブロックデバイスの先頭にコピーされたファイルシステム(既にMBRが含まれているかどうかは不明)が既にあるため、コマンドは必要ないと思われます。男isohybridは、クールなコマンドですが、それを知りませんでした!
Ehteshチョードリー

1
Windows 7のブート可能なインストールUSBについては、superuser.com
questions / 256869 /…

7
ステップ#3は不要です。ddステップ5 のコマンドは、新しく作成されたファイルシステムをISOの内容で消去します。
-ewhac

ここであなたの投稿を見つけて、フォローしてステップを踏むまで、同じ問題を探して12時間近くかかります...それはうまくいきました!(ステップ5も私の問題でした。私はproまだLinuxを使用していません。よろしくお願いします)
Ismael

3

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

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


USBフラッシュドライブはVerbatim製です。念のためにFAT32で再フォーマットしても、同じエラーが発生しました。
xsdf

1

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

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

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

# 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ファイルを生成する方法を説明します。アイソハイブリッドも使用していません。残念ながら、それは私を助けませんでした(たぶんsyslinuxのため)。

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

残念ながら、この問題を解決できず、私のデバイスは起動できませんでしたが、これが他の人(また、USBに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

いくつかの問題もありましたが、genisoimageの前にここの方法解決されました。

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

== UPD2を終了==



2番目:freedos.sourceforge.net/wiki/index.php/USB#Linux_2システムが私よりもあなたを信頼している場合、これらのリンクを投稿に追加できます。StackOverflowはすでに私をよく知っているので、なぜスーパーユーザーでそのような問題があるのですか?また、私はこれを投稿するのに問題がありました、それは私の答えがすでに投稿されたことを私に示しませんでした。
ヤロスラフニキテンコ

スーパーユーザーは、参照によってリンクをカウントするようです。つまり、同じリソースに2回リンクすると、カウントされます。これはバグのようです。UPDでの回避策はから来たspiderbird.com/tag/fat32lba-bss
ヤロスラフNikitenko

コメント内のすべてのリンクが修正されました。このポリシーがもたらす問題を示すために、ここにそれらを残します。
ヤロスラフニキテンコ

0

あなたは、それを正確に行う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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.