安装时读取的 Windows 操作系统文件序列

安装时读取的 Windows 操作系统文件序列

我正在通过基于 Ubuntu 的 Clonezilla Server 在 PXE UEFI 模式下安装 Windows 10 操作系统。我需要使用 grub.cfg 将 Windows 操作系统配置添加到服务器中,以便进行客户端部署。我在tftpboot/nbi_image/win_files目录中添加了 Windows 10 iso 解压目录。

我的 tftp 根目录是“/tftpboot/nbi_image”。

现在我需要编辑中的 grub 文件tftpboot/nbi_image/grub-efi.cfg/grub.cfg,这是我的条目:

menuentry "Windows 10 UEFI" {
     insmod part_msdos
     insmod chain
     chainloader /win_files/bootx64.efi
}

错误:EFI 文件路径无效。

bootx64.efi 是来自 clonezilla 服务器设置的文件。如果需要任何其他文件,我应该从哪里获取?

因为每次都失败了。所以,我想了解这个启动顺序是如何进行的?按照什么顺序,从 ISO 中的 Windows 安装文件中读取哪些文件?

答案1

我完全没有信心默认的 Windows EFI 引导加载程序能够从 PXE/tftp 系统启动,但首先需要验证几件事:

  • 模块 msdos_part 应该读取本地驱动器的 msdos 类型分区(与 gpt 类型分区相反),因为你正在通过网络启动,所以这里与此无关

  • Unix 区分大小写,win_files 和 Win_files 不是同一个文件夹

  • 我的 Windows 10 iso 根目录中没有 bootx64.efi,但是那里有一个 bootmgr.efi,在 efi/boot/ 中有一个 bootx64.efi

  • 你的 TFTP 根目录是什么?如果它是 '/tftboot',那么你的 chainloader 可能更像

    • 链式加载器 nbi_image/win_files/bootmgr.efi或者
    • hainloader nbi_image/win_files/efi/boot/bootmgr.efi

答案2

我找到了解决方案:

sudo vim /etc/tftp.remap

添加以下行:

# Map the paths
r ^\\boot\\ EFI/winpe/Boot/
r ^\\Boot\\ EFI/winpe/Boot/
r ^\\sources\\ EFI/winpe/sources/
# Convert backslashes to slashes
rg \\ /

打开tftp-hpa文件:

sudo vim /etc/default/tftpd-hpa

相应修改:

TFTP_OPTIONS="-vvv --secure --ipv4 --map-file /etc/tftpd.remap"

跑步:

sudo service tftpd-hpa restart

dhcp配置:

 sudo vim /etc/dhcpd.conf

相应修改:

if option arch = 00:06 {
    filename "bootia32.efi";
} else if option arch = 00:07 {
    filename "EFI/grub2/grubnetx64.efi";
    #filename "bootx64.efi";

grubnetx64.efi 来自档案链接:Ubuntu 档案

sudo mkdir grub
cd grub/
sudo vim grub.cfg

添加以下行:

configfile grub-efi.cfg/grub.cfg

编辑文件:

sudo vim grub-efi.cfg/grub.cfg

添加:

menuentry "Windows 10 RS4" --id win10rs4 {
  echo "Entering windows installation environment..."
  insmod chain
  insmod fat
  insmod part_gpt
  chainloader /EFI/Boot/bootx64.efi
}

要执行的文件顺序(包括 PXE 菜单选择)是:

grubnetx64.efi -> bootx64.efi -> BCD -> boot.sdi -> winpe.wim

相关内容