web-dev-qa-db-ja.com

BIOSとUEFIの両方と互換性のあるマルチブートUSBを作成するにはどうすればよいですか?

現在、YumiのUEFIプログラムを使用してドライブを作成し、UEFIのマルチブートUSBを作成していますが、最近はBIOSも必要です。これら2つを1つのドライブに組み合わせる方法はありますか?基本的にUEFIとBIosをサポートしていますか?または、2つの異なるUSBが必要ですか?ありがとう!

1
Joshua G.

ゼロからのマルチブートUSBスティック

UEFIマシンでgrub2を使用してドライブからISOファイルを起動するにはどうすればよいですか?

GParted Partitions

GParted

  • USBスティック上にgptパーティションテーブルを作成します。

  • 上記のようにパーティションを作成し、パーティション2に未フォーマットを選択します。

  • casper-rwファイルを作成します。

    Sudo dd if=/dev/zero of=casper-rw bs=1M count=512

    Sudo mkfs.ext3 -L casper-rw -F casper-rw

(どこ count=512は、永続性のサイズ(メガバイト単位、最大4 GB)です。

Persistence partition

永続パーティション

  • USB-PRSTパーティションに、OSごとに(永続化が必要な)一意の名前のフォルダーを作成します。

  • Casper-rwファイル(およびオプションのhome-rwファイル)を各永続フォルダーに追加します。 home-rwファイルは、casper-rwファイルの名前を変更することで作成できます。 home-rwファイルは、フルインストールの個別のホームパーティションのようなもので、バージョンのアップグレード後に再利用できます。

Data Partition

データパーティション

  • NTFS USB-DATAパーティションにISOファイル用のフォルダーを作成します。

  • ISOをisosフォルダに追加します。

Boot Folder

ブートパーティション

  • 最新のISOファイルを開き、bootフォルダーとEFIフォルダーをUSB-BOOTパーティションにコピーします。追加 rmmod tpm最初のメニューエントリの上にあるgrub.cfgに

  • GRUBをインストールする

    Sudo mount /dev/sdx3 /mnt

    Sudo grub-install --boot-directory=/mnt/boot /dev/sdx

ISOファイルをループマウントするようにgrub.cfgを編集します。含める:persistent persistent-path=/<persistent-folder-name>/複数の永続化が必要な場合。

if loadfont /boot/grub/font.pf2 ; then
    set gfxmode=auto
    insmod efi_gop
    insmod efi_uga
    insmod gfxterm
    terminal_output gfxterm
    rmmod tpm
fi

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray

set timeout=5

menuentry "ubuntu-19.10-desktop-AMD64.iso" {
    set root=(hd0,1)
    set isofile="/isos/ubuntu-19.10-desktop-AMD64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile persistent persistent-path=/persist-1/ splash --
        initrd (loop)/casper/initrd
}
menuentry "lubuntu-16.04.3-desktop-AMD64.iso" {
    set root=(hd0,1)
    set isofile="/isos/lubuntu-16.04.3-desktop-AMD64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile persistent persistent-path=/persist-2/ splash --
        initrd (loop)/casper/initrd.lz
}

Grub.cfgの例

Sudo parted -ls /dev/sdx

Sudo parted -ls/dev/sdx

Sudo lsblk -f /dev/sdx

Sudo lsblk -f/dev/sdx

上記をUSBスティックとして使用すると、Windowsのみのコンピューターに保存されているISOを起動できます。内蔵ドライブにGrubは必要ありません。

2
C.S.Cameron

安全のために、2つのUSBを使用します。1つはインストールを実行し、もう1つはインストールします。

  1. USBをFATでフォーマットします。

  2. パッケージgrub-efi-AMD64およびgrub-pc-binをインストールします。

  3. USBを差し込み、デバイスをメモし、「/dev/sdb」と言い、マウントポイントを「/media/user/USB」と言います。

  4. chrootを作成します。

    dirs=(dev bin sbin etc sys usr proc lib lib64)
    for dir in ${dirs[@]}; do
      mkdir /media/user/USB/$dir && Sudo mount --bind /$dir /media/user/USB/$dir
    done
    Sudo chroot /media/user/USB/
    
  5. Chrootに入ったら、次のコマンドを実行します。

    grub-install --force --removable --target=x86_64-efi --efi-directory=/ /dev/sdb1
    grub-install --force --removable --target=i386-pc --boot-directory=/ /dev/sdb
    exit
    
  6. 次に、ディレクトリをアンマウントして削除します。

    for dir in ${dirs[@]}; do
      Sudo umount /media/user/USB/$dir && rm /media/user/USB/$dir
    done
    
  7. IsosをUSBにコピーします。

  8. USBで、ファイル/grub/grub.cfgを作成し、コンテンツを追加します。

    set root='(hd0,1)'
    configfile /boot/grub/grub.cfg
    
  9. DebianとKaliをブートするには、この例では(ダウンロードした内容に応じてisosの名前を変更する必要があります)、/boot/grub/grub.cfgに追加します。

    set root='(hd0,1)'
    
    menuentry "Kali Live system" {
      set iso_path=/kali-linux-2020.1b-live-i386.iso
      loopback loop $iso_path
      linux (loop)/live/vmlinuz-5.4.0-kali2-686-pae boot=live components quiet splash noeject findiso=${iso_path}
      initrd  (loop)/live/initrd.img-5.4.0-kali2-686-pae
    }
    
    menuentry "Debian GNU/Linux Live (kernel 4.19.0-8-686)" {
      set iso_path=/debian-live-10.3.0-i386-xfce.iso
      loopback loop $iso_path
      linux (loop)/live/vmlinuz-4.19.0-8-686 boot=live findiso=$iso_path components splash quiet "${loopback}"
      initrd (loop)/live/initrd.img-4.19.0-8-686
    }
    

thisこれはマシンのOSで実行できますが、誤ってシステムに害を及ぼす可能性のあるコマンドがいくつかあります。