web-dev-qa-db-ja.com

マルチパーティションおよびマルチブートUSBフラッシュドライブにGRUBをインストールする

次のUSBフラッシュドライブパーティションがあります。

/dev/sdb1  *      204800   8593407  8388608    4G  b W95 FAT32 
/dev/sdb2        8593408  11460607  2867200  1.4G  b W95 FAT32 
/dev/sdb3       11460608  24043519 12582912    6G  7 HPFS/NTFS/exFAT 
/dev/sdb4       24043520 120127487 96083968 45.8G  7 HPFS/NTFS

注意:
sdb1 =永続性を備えたLubuntux_64。
sdb2 = androidx_86。
sdb3 = Windows10_64。
sdb4 =一般的なストレージ。
sdb1の前に100 MBが未割り当ての場合。

なぜこんな感じ?複数のマルチブートソフトウェアを試しましたが、期待どおりに機能しませんでした。この構成は機能しますが、ブートに必要な各パーティションにブートフラグを手動で設定する必要があります。

質問は次のとおりです。実行するOSを選択できるメニューのgrubをsdb(すべてのOSを検出する)にインストールするにはどうすればよいですか?手動で何かを書くことを恐れていませんが、必要なパーティションを指すためにgrub.cfgに何を書くべきかわかりません。

1
Piri

USBへのマルチインストール-BIOS/UEFI

Mkusbは、カスタムマルチブートUSBの優れた基盤となります。以下は、BIOSとUEFIの両方をブートするフルインストールUSBを作成し、さらにそれをMulti Booterとして変更し、さらにgrub2を使用してISOをブートする方法を示しています。

  • mkusbを使用して、インストーラーUSB(2GB以上)でLiveシステムを作成します。

  • mkusbを使用して、〜25GBの永続性を備えたデフォルト設定を使用して、ターゲット128GB USBで永続システムを作成します(残りのNTFSパーティションは、Windowsアクセス可能なデータパーティションとして使用されます) 。

enter image description here

  • Mkusbが終了したらすぐに、GPartedを開き、ISO9660パーティションであるsdx4を削除し、sdx5を復元されたスペースに展開します。sdxはターゲットドライブのデバイス名です。

enter image description here

  • さらに先に進む前に、HDDのプラグを抜くか取り外します(オプションですが推奨、UEFIモードでは強く推奨)。

  • インストーラドライブを起動し、[試用]を選択します。

  • ターゲットドライブの挿入

Ubuntuのインストールを開始...

  • 他の何かを選択します。

  • (ターゲットドライブ上で)sdx5を選択し、[変更]をクリックします。

enter image description here

  • 用途:ext4、フォーマットおよびマウントポイント:/を選択します。

/ homeパーティションを追加しない限り、他のパーティションには触れないでください。

  • ブートローダーのインストール用デバイスとしてsdx5を選択します。

  • インストールを完了します。

  • Sdx5/boot/grubからgrub.cfgを切り取り、sdx3/boot/grubに貼り付けて、既存のgrub.cfgファイルを上書きします。

  • ターゲットドライブを起動し、Sudo update-grubを実行して、すべてのドライブを起動メニューに追加します。

マルチブート

フルインストールとLive/Persistentの両方の複数のOSをUSBに追加できます。

上記のようにドライブを作成し、拡張パーティションを複数の部分に分割します(この場合はsdx5、sdx6、sdx7 ...)。

その後、1つのパーティションにUbuntuをインストールし、他のパーティションに他のOSをインストールできます。

  • Sdx5をOSと同じ数のext4パーティションに分割します。サイズはそれぞれ約8GB以上である必要があります。

  • Live mkusbインストーラーを起動し、ターゲットドライブを挿入します。

  • パーティショニングで「他の何か」を選択しました。

  • /にはsdx5を選択します。

  • ブートローダーをsdx5にインストールします。

  • 他のすべてのパーティションのフォーマットボックスはオフのままにします。

  • Sdx6、sdx7など、およびインストールすることを選択したOSでこれを繰り返します。

  • 最後のインストール後、sdx6/boot/grubからgrub.cfgをカットし、sdx3/boot/grubに貼り付けて、既存のgrub.cfgファイルを上書きします。

  • フラッシュドライブを起動し、update-grubを実行します。これにより、すべてのOSがgrubに追加されます。

必要に応じて、いくつかのOS ISOを追加できます:

  • Isosという名前のNTFSパーティションsdx1にフォルダーを作成します。

  • いくつかのISOを追加します。

  • 次のようなメニューエントリを追加して、sdx3/boot/grubを編集します。

    menuentry "xubuntu-18.04.1-desktop-AMD64 Partition 6" {
     set isofile="/isos/xubuntu-18.04.1-desktop-AMD64.iso"
     set root='(/dev/sdx,msdos2)'
     search --no-floppy --fs-uuid --set=root XXXX-XXXX
     loopback loop ($root)$isofile
     linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
     initrd (loop)/casper/initrd.lz
    }
    
  • 6番目(7番目と8番目)のパーティションのUUIDをXXXX-XXXXに置き換えます

  • vmlinuzは、一部のバージョンではvmlinuz.efiである必要があります。

  • 各ISOは、必要に応じて独自のcasper-rwおよびhome-rw永続性ファイルを持つことができますが、各メニューエントリに「persistent-path」を追加する必要があるため、少し複雑になり始めます。

1
C.S.Cameron

昨日、私は成功しました、そして私の決心を投稿します:
Sandisk 64gb USBフラッシュドライブがあり、複数のパーティション、マルチブートOSが必要でした

  1. ステップ1:

次の内容のMBRパーティションテーブルをGPartedで作成しました。

sdb1 -> 4gb ->formatted fat32(labeled Linux)<br/>
sdb2 -> 2gb ->formatted fat32(labeled Android)<br/>
sdb3 -> 5GB ->formatted fat32(labeled Windows)<br/>
sdb4 -> the rest of unallocated space -> formatted NTFS(labeled Stuff)<br/>
  1. ステップ2:

    UNetBootinでインストールしたもの:

    sdb1-> 2 GBの永続ストレージを備えたXubuntu(最新ビルド)
    sdb2-> Android-x86_64-8.1
    sdb3-> windows10インストールの場合、私はこれに従いました: This

編集1:すべてのOSがインストールされた後、GPartedに入り、ブートフラグをsdb1(Linuxのラベル付きパーティション)に設定します

  1. ステップ3:

    次のようにgdbをsdb1(Linux)にインストールしました。

    Sudo grub-install --force --root-directory =/media/myusername/LINUX// dev/sdb1

  2. / media/myusername/LINUX/boot/grubのgrub.cfgファイルを次のように変更しました。

     if loadfont /boot/grub/font.pf2; then 
     set gfxmode = auto 
     insmod efi_gop 
     insmod efi_uga 
     insmod gfxterm 
     terminal_output gfxterm 
     fi 
     set menu_color_normal = white/black 
     set menu_color_highlight = black/light-gray 
     set timeout = 30 
     menuentry 'Xubuntu18.04 Original Selection' {
     search --no -floppy --fs-uuid --set XXXX-XXXX 
     syslinux_source /isolinux/isolinux.bin
    syslinux_configfile /syslinux.cfg
    }
    menuentry 'Android8。 1オリジナル選択 '{
     search --no-floppy --fs-uuid --set XXXX-XXXX 
     syslinux_source($ root)/isolinux/isolinux.bin 
     syslinux_configfile( $ root)/syslinux.cfg 
    } 
     menuentry 'Windows10_x64 Original Selection' --class windows --class os {
     insmod ntfs 
     search --no- floppy --fs-uuid --set XXXXXXXXXXXXXXXX 
     ntldr /bootmgr
    }

ノート:

  1. XXXX-XXXXをパーティションUUIDに置き換える必要があります。 :blkid /dev/sdbXを実行することで取得できます。「X」はパーティション番号です。
  2. テストしたもの:
      • Xubuntuはすべて機能します。
      • Androidこれをテストする必要はありませんでした。
      • Windows 10からパーティション選択まで。
  3. このアプローチに問題がある場合は、これをさらに編集します(今後数日間で発生する可能性が高い)
0
Piri