データファイルとロード可能なISOを含むexFatパーティション1とUSBストレージデバイスにUEFIブータブルGrub2を含むパーティション2を作成する方法は?

データファイルとロード可能なISOを含むexFatパーティション1とUSBストレージデバイスにUEFIブータブルGrub2を含むパーティション2を作成する方法は?

アップデート2

さて、Grub2経由で動作するUSB​​を得ました。

まず、GPartedを使用してパーティション化されたテーブルを作成し、次のgptパーティションを作成しました。

  • exfat- [残りスペース] Live CD ISOとファイル。 (GPartedがサポートしていないため、gnome-disk-utilityを使用して作成されました。)
  • ntfs- [5.50 GiB] Windows 10回復ISOファイルを抽出しました。
  • fat16- [100MiB] Grub2。

フォローするこれ答えパーティション番号の順序を正しい順序に変更するには?私はPS4がそれを見ることができないことを願ってfat16を使用します。そのため、マウントするパーティションを要求せずに自動的にexfatパーティションをマウントできますが、機能しません。私はfat16とfat32が唯一の互換性のあるGrub2 UEFIブート可能パーティションであることを知っています。

その後、Grub2をインストールします。 Grub2をインストールしたいパーティションをインストールしました。 「GRUB2」はGPartedの下にあるラベルで、「user」は私のXubuntuアカウント名です。

sudo grub-install --removable --boot-directory=/media/user/GRUB2/boot --efi-directory=/media/user/GRUB2

/media/user/GRUB2/boot/grub/grub.cfg次に、次のエントリを使用してgrub.cfgを作成しました。

menuentry "Lubuntu Boot Recovery Live CD (AMD64)" {
    insmod part_gpt
    insmod exfat
    insmod search_fs_uuid

    set iso=/iso/boot-repair-disk-64bit.iso
    search --no-floppy --set=root --fs-uuid 92AE-07D5

    loopback loop ($root)$iso
    linux (loop)/casper/vmlinuz.efi boot=casper file=/preseed/lubuntu.seed iso-scan/filename=$iso noprompt noeject
    initrd (loop)/casper/initrd.lz
}

menuentry "Windows 10 Installer on SDB2 (AMD64)" {
    insmod part_gpt
    insmod ntfs
    insmod search_fs_uuid
    insmod chain

    search --no-floppy --set=root --fs-uuid 13B187F260B1ACD6
    chainloader ($root)/efi/boot/bootx64.efi
}

menuentry "Xubuntu Live CD (AMD64)" {
    insmod part_gpt
    insmod exfat
    insmod search_fs_uuid

    set iso=/iso/xubuntu-18.04.4-desktop-amd64.iso
    search --no-floppy --set=root --fs-uuid 92AE-07D5

    loopback loop ($root)$iso
    linux (loop)/casper/vmlinuz boot=casper file=/preseed/lubuntu.seed iso-scan/filename=$iso noprompt noeject
    initrd (loop)/casper/initrd
}

調べるのに時間がかかりましたが、私が理解したところによると。

  • insmod- 次のモジュールをロードするために使用されます。おそらく2.02>ではこれは必要ないと思いますが、万が一の場合に備えて追加しました。便利なリストが見つかりました。ここ
  • set- 変数を設定するために使用されます。
  • search- これは、一致するディレクトリ、パーティションのUUID、パーティション名などの特定の基準を検索し、--setの下の変数に保存します。

ループバック、Linux、initrd、preseed、およびチェーンローダが実際にどのように、何をしているのかわかりません。ところで、ファイルパスをコピーしましたが、拡張子が異なるか拡張子がない可能性があります。


私はこれまでに欲しいものすべてを達成しましたが、より複雑なスクリプトがなければ、ISOファイルからWindows 10 ISOを実行することは不可能だと思います。これはメニュー項目についてこれまでに書いたコードですが、うまくいきません。

menuentry "Windows 10 Installer (AMD64) (ISO) (Doesn't work)" --class windows --class os {
    # Load module to be able to read GPT partition table.
    insmod part_gpt

    # Load module to read the partition that ISO is stored.
    insmod exfat

    # Load module to find partition with UUID.
    insmod search_fs_uuid

    # Load module to chain load to another EFI.
    insmod chain

    # Set UUID of partition that has ISO image and store it in variable.
    set uuid="92AE-07D5"
    search --no-floppy --set=root --fs-uuid $uuid

    # Set ISO Directory.
    set iso=/iso/win10-1909-english-x64.iso

    # Mount ISO.
    loopback loop ($root)$iso

    # Boot ISO.
    #chainloader (loop)/efi/microsoft/boot/cdboot.efi
    chainloader (loop)+1
}

#chainloader (loop)/efi/microsoft/boot/cdboot.efi以前はコメントなしで試してみましたが、chainloader (loop)+1成功しませんでした。

残りの質問は、ISOファイルから起動するためにWindows 10インストールISOを起動する方法です。

ベストアンサー1

おすすめ記事