最近研究了一下如何製做一個多啓動U盤,其中想包含的WinPE是微軟官方的基於Windows 10的PE,LinuxPE就用Puppy Linux。這裏先大概聊一下這兩個PE的基本原理,而後再說怎麼製做。html
PE的基本原理
Windows 10 PE的基本原理
Windows 10 PE的ISO製做方法能夠參考微軟官方的製做方法。製做好之後,能夠從ISO文件裏面提取出來下面幾個東西:linux
- \boot目錄下的bootx64.efi,這個文件是UEFI第一個要找的文件,沒有這個沒辦法引導PE。
- \EFI\Microsoft\Boot目錄下的BCD,這個文件是bootx64.efi要尋找的,這個文件配置很差的話會出現cannot find image這個錯誤。
- \boot目錄下的boot.sdi,\sources目錄下的boot.wim,這兩個文件是BCD文件要尋找的。
- boot.wim是最後要載入的鏡像文件。 注意:製做好的目錄基本結構以下:
- /EFI/Microsoft/Boot/BCD,這個BCD文件不可以放到別的路徑,若是放上去那bootx64.efi就會找不到BCD了。
- /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
必備的軟件
- Grub2 for windows:這個是製做分區必須的
- Bootice 1.3.4:這個能夠去網上下載各類綠色版
- Windows 10 PE:這個須要自行去最開始微軟連接裏面的工具下載製做
- Puppy Linux PE:網上處處都有下載,我是從清華的開源鏡像庫找的
製做流程
USB分區
USB分區分紅兩個區就行了,考慮到硬盤數據還須要被mac讀取,因此放置數據的分區用exFAT格式化,引導分區ESP用FAT32格式:ide
- 第一個分區(hd0,1):格式:FAT32,大小:3GB,做用:存放引導和鏡像文件
- 第二個分區(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
- 選擇好boot.wim,boot.sdi,bootx64.efi的安裝路徑
- 用BOOTICE打開/EFI/Microsoft/Boot/BCD文件進行編輯,修改boot.wim和boot.sdi這兩個文件的相對路徑使得BCD可以找到這兩個文件,而後,在BOOTICE下還要修改Windows的啓動文件winload.exe成winload.efi。
- 在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