64位UEFI下的WinPE + LinuxPE多啓動Grub2 U盤

最近研究了一下如何製做一個多啓動U盤,其中想包含的WinPE是微軟官方的基於Windows 10的PE,LinuxPE就用Puppy Linux。這裏先大概聊一下這兩個PE的基本原理,而後再說怎麼製做。html

PE的基本原理

Windows 10 PE的基本原理

Windows 10 PE的ISO製做方法能夠參考微軟官方的製做方法。製做好之後,能夠從ISO文件裏面提取出來下面幾個東西:linux

  1. \boot目錄下的bootx64.efi,這個文件是UEFI第一個要找的文件,沒有這個沒辦法引導PE。
  2. \EFI\Microsoft\Boot目錄下的BCD,這個文件是bootx64.efi要尋找的,這個文件配置很差的話會出現cannot find image這個錯誤。
  3. \boot目錄下的boot.sdi,\sources目錄下的boot.wim,這兩個文件是BCD文件要尋找的。
  4. boot.wim是最後要載入的鏡像文件。 注意:製做好的目錄基本結構以下:
  5. /EFI/Microsoft/Boot/BCD,這個BCD文件不可以放到別的路徑,若是放上去那bootx64.efi就會找不到BCD了。
  6. /iso/win10pe/下放boot.wim,boot.sdi,bootx64.efi,這三個文件能夠隨意改位置。

Linux PE的基本原理

Puppy Linux的ISO製做方法很是簡單,只須要把這根目錄下的vmlinuz,initrd.gz,puppy_bionicpup64_8.0.sfs和zdrv_bionicpup64_8.0.sfs提取出來就行了,路徑能夠隨意放置。windows

準備工做

必備的硬件

1個USB,我用的大小是16GB,其實8G甚至4G也可以完成。ionic

必備的軟件

  1. Grub2 for windows:這個是製做分區必須的
  2. Bootice 1.3.4:這個能夠去網上下載各類綠色版
  3. Windows 10 PE:這個須要自行去最開始微軟連接裏面的工具下載製做
  4. Puppy Linux PE:網上處處都有下載,我是從清華的開源鏡像庫找的

製做流程

USB分區

USB分區分紅兩個區就行了,考慮到硬盤數據還須要被mac讀取,因此放置數據的分區用exFAT格式化,引導分區ESP用FAT32格式:ide

  1. 第一個分區(hd0,1):格式:FAT32,大小:3GB,做用:存放引導和鏡像文件
  2. 第二個分區(hd0,2):格式:exFAT,大小:剩下的大小,做用:存放數據,在本文中不會使用到

安裝Grub2

這一步原本沒什麼想說的,可是後續若是不注意會使得grub產生error: Unknown filesystem這個錯誤,因此大體講一下。首先,管理員身份運行CMD,進入grub2解壓之後的文件夾,在CMD裏面輸入如下命令:工具

grub-install.exe --boot-directory=第一個分區下的目錄 --efi-directory=第一個分區的USB盤符: --removable --target=x86_64-efi

注意:這個命令的boot-directory參數指定之後會在指定的目錄下安裝一個grub文件夾,裏面能夠進行各類配置,而且會在efi-directory對應的路徑生成一個相應的EFI文件夾。spa

最後,在新生成的grub文件夾下面新建一個grub.cfg空文件。而且添加下面的一些模塊加載選項:code

insmod iso9660
insmod all_video

安裝Windows 10 PE

  1. 選擇好boot.wim,boot.sdi,bootx64.efi的安裝路徑
  2. 用BOOTICE打開/EFI/Microsoft/Boot/BCD文件進行編輯,修改boot.wim和boot.sdi這兩個文件的相對路徑使得BCD可以找到這兩個文件,而後,在BOOTICE下還要修改Windows的啓動文件winload.exe成winload.efi。
  3. 在grub.cfg添加下面的啓動項:
menuentry "Windows 10 PE" {
    chainloader /iso/win10pe/bootx64.efi
}

上面的路徑必定要修改爲你本身的路徑。htm

安裝Linux PE

把Puppy Linux的iso文件放置到你可以找到的位置,而後,在grub.cfg添加下面的Puppy Linux的啓動項:blog

menuentry "Puppy Bionic" {
    set root='(hd0,1)'
    linux  /iso/puppy/vmlinuz pmedia=ataflash psubdir=/iso/puppy
    initrd /iso/puppy/initrd.gz
}

到此,全部製做已經完畢,其實沒有想象中那麼難,可是網上想找到一個比較完整的步驟還不太容易。有問題的話,各位能夠在下面留言,我會不定時解答。

原文出處:https://www.cnblogs.com/alexanderzjs/p/12389079.html

相關文章
相關標籤/搜索