安裝時讀取的 Windows 作業系統文件順序
我正在通過基於 Ubuntu 的 Clonezilla 伺服器以 PXE UEFI 模式安裝 Windows 10 作業系統。我需要使用 grub.cfg 將 Windows 作業系統配置添加到伺服器中以進行客戶端部署。我在目錄中添加了 windows 10 iso 提取
tftpboot/nbi_image/win_files
目錄。我的 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 安裝文件中讀取哪些文件?
我想出了解決方案:
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 Archive。
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
我絕對不相信預設的 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