純粋なLinuxマルチブートUSB - 第三者ソフトウェアなし

純粋なLinuxマルチブートUSB - 第三者ソフトウェアなし

サードパーティ製のソフトウェアなしで、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などのツールを含む他のディストリビューションまたはバージョンがこのガイドに適しています。

プロセス

  1. GRUB EFI互換性をインストールしますgrub-efi-amd64

    sudo apt install -y grub-efi-amd64
    
  2. msdosパーティションテーブルを使用してUSBをフォーマットします。パーティションはFAT形式でなければなりません。パーティションを起動可能としてマークします。

  3. USBを取り付けます。注:どのデバイスがie/dev/sdc1で、デバイスがインストールされているパスがieです/media/foo/USB/。これから、これら2つの例をガイドとして使用します。

  4. 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
  1. ISOをマウントしてファイル/boot/grub/grub.cfgをにコピーします/media/foo/USB/boot/grub。名前を変更してくださいubuntu.cfgdebian.cfg

  2. ISOをUSBにコピーします。

GRUB構成:

  1. /media/foo/USB/grubそのファイルの下に作成grub.cfgし、次の内容をそこに入れます。

    set root='(hd0,1)'
    configfile /boot/grub/grub.cfg
    
  2. /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構成を追加できます。

Windows インストーラの場合は、同じ方法を使用します。

関連情報