Grub、USB 多重启动 ubuntu 和 windows 10 安装盘

Grub、USB 多重启动 ubuntu 和 windows 10 安装盘

我做了U盘多重启动安装,ubuntu和windows 10。

sudo parted -s /dev/sdb mklabel msdos

sudo parted -s /dev/sdb mkpart primary 1MiB 551MiB

sudo parted -s /dev/sdb set 1 esp on
sudo parted -s /dev/sdb set 1 boot on

sudo mkfs.fat -F32 /dev/sdb1
sudo parted -s /dev/sdb mkpart primary 551MiB 100%

sudo mkfs.ext4 /dev/sdb2

sudo mkdir /media/{efi,data}

sudo mount /dev/sdb1 /media/efi
sudo mount /dev/sdb2 /media/data

sudo grub-install --target=i386-pc --recheck --boot-directory="/media/data/boot" /dev/sdb
sudo grub-install --target=x86_64-efi --recheck --removable --efi-directory="/media/efi" --boot-directory="/media/data/boot"

然后我为 iso 制作了文件夹并将所需的 iso 复制到那里。

sudo mkdir /media/data/boot/iso
sudo chown 1000:1000 /media/data/boot/iso

hosek@yoga:/media$ ls -la /media/data/boot/iso/
total 7911028
drwxr-xr-x 2 hosek hosek       4096 čen 23 10:40 .
drwxr-xr-x 4 root  root        4096 čen 23 10:38 ..
-rw-rw-r-- 1 hosek hosek 3285123072 dub 20 09:09 ubuntustudio-19.04-dvd-amd64.iso
-rw-rw-r-- 1 hosek hosek 4815753216 čen 13 09:24 Win10_1903_V1_Czech_x64.iso
hosek@yoga:/media$ 

现在我将其插入到/media/data/boot/grub/grub.cfg文件。

menuentry "ubuntustudio-19.04-dvd-amd64.iso" {
isofile="/boot/iso/ubuntustudio-19.04-dvd-amd64.iso"
loopback loop "${isofile}"
linux (loop)/casper/vmlinuz iso-scan/filename="${isofile}" file=/cdrom/preseed/ubuntustudio.seed boot=casper quiet splash ---
initrd (loop)/casper/initrd
}

menuentry "Win10_1903_V1_Czech_x64.iso" {
# Insert modules needed in order to access the iso-file
insmod part_gpt
#insmod part_msdos
insmod ntfs
insmod ext4
# Insert module needed in order to find partition
insmod search_fs_uuid

# Set UUID of partition with the iso-image
# and let grub2 find the partition
# (save it's identifier to the variable $root)
set uuid="8ff5d218-2b0c-471c-8356-98686a351111"
search --no-floppy --set=root --fs-uuid $uuid

# Mount the iso image by addressing it with (partition)/path
set iso=/boot/iso/Win10_1903_V1_Czech_x64.iso
loopback loop ($root)$iso

# boot (chain-load) the image using the cdboot.efi file located
# on the win10-image
chainloader (loop)/efi/microsoft/boot/cdboot.efi
}

当我重新启动计算机并从 USB 启动时,它会显示菜单。

ubuntustudio-19.04-dvd-amd64.iso
Win10_1903_V1_Czech_x64.iso

当我选择ubuntustudio-19.04-dvd-amd64.iso时,就可以了。但是当我选择 Win10_1903_V1_Czech_x64.iso 时,它向我显示该文件/efi/microsoft/boot/cdboot.efi未找到。

问题可能出在哪里?那么Windows 7的安装呢,grub的菜单是一样的吗?

谢谢。

答案1

虽然您确实无法从 ISO 文件启动和安装 Windows,但您可以执行以下操作:

  1. 创建 GPT

  2. 创建两个分区并创建文件系统:

    1. NTFS 的大分区(类型 0x0700,必须是第一个分区,否则 Windows 安装程序可能看不到它)
    2. 一个带有 FAT 的小分区(FAT16 需要 10 MB,FAT32 需要 100 MB)(类型 0xef00,EFI 系统分区)
  3. 下载NFTS:UEFI,解压文件并将它们放入 ESP 中,这样 FAT16:\efi\boot\bootx64.efi 就存在了。

  4. 将 Windows 安装程序 .iso 的内容提取到 NTFS 分区

  5. 将 NTFS:\efi\boot\bootx64.efi 移动到 NTFS:\efi\boot\windows.efi。

  6. 暂时重命名 FAT:\efi 以将 NTFS:UEFI 移开。

  7. 使用 --removable 选项将 grub 安装到 FAT ESP。

  8. 将 FAT:\efi 移动到 NTFS:\efi,合并内容(记住我们重命名为 Microsoft 的 grubx64.efi)。

  9. 撤消步骤 6。

  10. 在 FAT:\boot\grub\grub.cfg 创建 grub.cfg:

     menuentry "Windows 10 Setup EFI" {
         search --file --set=root --no-floppy /efi/boot/windows.efi
         chainloader /efi/boot/windows.efi
     }
    
  11. 创建文件FAT:/.disk/info(在可移动模式下,grub 将查找该文件来识别其“启动”分区)。

  12. 通过 .iso 棒享受 Windows 安装。

笔记:

  • Windows 安装程序不适用于非 EFI 系统或 CSM 模式。
  • 鲁弗斯可以为您执行步骤 1 至 4。
  • 如果您的 EFI 可以直接读取 NTFS,则可以跳过涉及 NTFS:UEFI 的所有步骤。
  • 您还可以添加第三个分区以进行 Linux“即时”安装。

偶尔会更新一些比较深入的内容文章在我的博客上

答案2

查看。据我所知,您无法使用 GRUB 启动 Windows ISO。

从技术上讲,从 Windows 的 .iso 文件安装是不可能的。您可以使用 grub 从 .iso 启动,但之后 Windows 将失去与安装位置的联系或者无法启动。所以 grub 和 Windows 都应该知道挂载和启动。目前Windows不支持。

我所知道的有效方法是将内容复制到 USB 根目录,而不是子文件夹中,然后使用如下菜单:

menuentry "Windows installer" {
  set root='hd01'
  insmod ntldr
  ntldr /bootmgr
}

我一直无法从EFI启动,我认为也是不可能的。

相关内容