サードパーティ製のソフトウェアなしで、Linuxで完全にLinux展開用のマルチブートUSBを作成できますか?
注:これは自分で答える質問です。私は私のアプローチをLinuxコミュニティと共有したいと思います。
答え1
ホストオペレーティングシステムとしてLinux Mint 19 64ビットを使用します。同様のディストリビューションとディストリビューション(Ubuntuなど)が同じように機能すると仮定するのはかなり安全です。
私たちは以下が必要です:
- 最低8GB USB(2つのLinux ISOイメージは現在4GB USBには対応していません)
- Linux用ISOイメージ。この場合、Ubuntu19.04そしてDebian 10。この画像は一例です。 ClonezillaやGPartedなどのツールを含む他のディストリビューションまたはバージョンがこのガイドに適しています。
プロセス
GRUB EFI互換性をインストールします
grub-efi-amd64
。sudo apt install -y grub-efi-amd64
msdos
パーティションテーブルを使用してUSBをフォーマットします。パーティションはFAT形式でなければなりません。パーティションを起動可能としてマークします。USBを取り付けます。注:どのデバイスがie
/dev/sdc1
で、デバイスがインストールされているパスがieです/media/foo/USB/
。これから、これら2つの例をガイドとして使用します。GRUBのインストール:
dirs=(bin dev etc lib lib64 proc sbin sys usr) for dir in "${dirs[@]}"; do mkdir /media/foo/USB/$dir && sudo mount --bind /$dir /media/foo/USB/$dir done sudo chroot /media/foo/USB/ # chroot environment # first we install grub efi grub-install --force --removable --target=x86_64-efi --efi-directory=/ /dev/sdc1 # now we install grub i386 grub-install --force --removable --target=i386-pc --boot-directory=/ /dev/sdc # exit the chroot exit
警告する! !はいとても慎重ですバインドされたディレクトリを削除してシステムに害を及ぼす可能性があるため、次のコマンドを使用します。パスを入力するのではなく、タブ補完を使用してください。
for dir in "${dirs[@]}"; do
sudo umount /media/foo/USB/$dir && rm -rf /media/foo/USB/$dir
done
ISOをマウントしてファイル
/boot/grub/grub.cfg
をにコピーします/media/foo/USB/boot/grub
。名前を変更してくださいubuntu.cfg
。debian.cfg
ISOをUSBにコピーします。
GRUB構成:
/media/foo/USB/grub
そのファイルの下に作成grub.cfg
し、次の内容をそこに入れます。set root='(hd0,1)' configfile /boot/grub/grub.cfg
/media/foo/USB/boot/grub
そのファイルの下に作成grub.cfg
し、次の内容をそこに入れます。menuentry 'Ubuntu 19' { configfile /boot/grub/ubuntu.cfg } menuentry 'Debian 10' { configfile /boot/grub/debian.cfg }
構成奮闘.cfg
ファイルを編集/media/foo/USB/boot/grub/ubuntu.cfg
し、上部に次の行を追加します。
set iso_path=/ubuntu-19.04-desktop-amd64.iso # the name of the ISO
loopback loop $iso_path
文字列のすべての項目を/casper/
次に置き換えます。(loop)/casper/
文字列のすべての項目をvmlinuz
次に置き換えます。vmlinuz iso-scan/filename=$iso_path
設定ebian.cfg
ファイルを編集/media/foo/USB/boot/grub/debian.cfg
し、上部に次の行を追加します。
set iso_path=/debian-live-10.2.0-i386-lxqt+nonfree.iso # the name of the ISO
loopback loop $iso_path
文字列のすべての項目を/live/
次に置き換えます。(loop)/live/
文字列のすべての項目を/d-i/
次に置き換えます。(loop)/d-i/
これでUSBが動作していることをテストする準備が整いました。 USBが接続された状態でコンピュータを起動するだけです。 BIOS / EFIに応じて、BIOSまたはEFIブートから選択したり、USBシステムから古いブートを起動したりするためのさまざまなオプションがあります。
単純化のために、そしてこの方法はかなり進歩しているので、ユーザーが分類できると予想される多くの詳細を省略しました。いずれにせよ、提案、批判、改善を歓迎します。要求された場合は、この回答を編集して他のLinuxシステム用のGRUB構成を追加できます。