64位UEFI下的rEFInd引導多啟動移動硬盤(MacOS + Win10PE + Ubuntu 20.04 + Fedora 35 + OpenSUSE 15.3 + Archlinux + Gentoo + Clonezilla)


最近研究了一下如何制作一個多啟動移動硬盤,其中包含的操作系統有MacOS,Win10PE(基於微軟官方制作的),Ubuntu 20.04,Fedora 35,OpenSUSE 15.3,Archlinux,Gentoo和Clonezilla。我用的啟動器是rEFInd。

這里的Linux版本選擇涵蓋了最常用的個人服務器版本,為何選擇這三個服務器呢,因為這三個服務器分別是從Debian,RedHat,Slackware三大主流Linux分支過來的(一個分支一個),具體的Linux族譜詳情可以參考wiki上面的介紹,對於其他小眾的服務器版本就不探究了。另外,選擇Arch和Gentoo兩個最常用的滾動發行版作為補充。

文章最后給出三大主流分支的商用版本的對應啟動項的制作。

移動硬盤的分區

這里我的移動硬盤大小是1TB(實際是931.5GB),具體GPT分區方案如圖所示:
移動硬盤分區表
分區工具Windows下可以選擇Disk Genius,Linux和Mac下就用自帶的分區工具吧。

這里的主要分區都標記為藍色:

  1. ESP分區(第一個細小的藍色分區):大小200MB完全夠用了,目錄結構示意圖如下所示(可能和你的文件內容不一樣):
    ESP分區
    EFI文件夾下面的boot子文件夾包含了rEFInd的相關文件,microsoft子文件夾則是包含了Win10PE啟動必須的文件;

  2. MacOS分區:大小40GB,格式由MacOS決定,可以是APFS也可以是老版的Mac OS Extension;

  3. OS分區:WinPE和Linux操作系統的分區,大小40GB,格式FAT32,目錄結構示意圖如下所示(可能和你的文件內容不一樣,每個系統下面除了iso文件的其他文件都是從iso文件里面提取出來的,可以先解壓iso文件然后搜索相應的文件名):
    OS分區

  4. Data分區:格式最好用exFAT,這樣Mac,Windows,Linux都可以正常訪問。

注意:Mac分區和WinPE和Linux操作系統分區后面都有一個大小是128MB的未使用的隔離分區,這個空間是MacOS要求的,如果沒有的話,可能會對后續的MacOS上的格式化操作產生影響。

Win10PE的制作方法

Windows 10 PE的ISO制作方法可以參考微軟官方的制作方法。制作好以后,可以從ISO文件里面提取出來下面幾個東西:

  1. bootx64.efi:在ISO解壓文件的\boot目錄下,這個文件是UEFI第一個要找的文件,沒有這個沒辦法引導PE。
  2. BCD:在ISO解壓文件的\EFI\Microsoft\Boot目錄下,這個文件是bootx64.efi要尋找的,這個文件配置不好的話會出現cannot find image這個錯誤。
  3. boot.sdi:在ISO解壓文件的\boot目錄下,這個文件是BCD文件要尋找的。
  4. boot.wim:在ISO解壓文件的\sources目錄下,這個文件是BCD文件要尋找的。

下面,需要修改BCD文件,這里用到的工具是BOOTICEx64,其中需要修改的項已經在下圖中標紅,主要就是boot.sdi和boot.wim的位置信息要找對:
BCD編輯

注意:制作好的目錄基本結構如下:

  1. ESP分區的/EFI/microsoft/boot/目錄下需要放BCD和bootx64.efi這兩個文件。
  2. OS分區的/winpe/下放boot.wim,boot.sdi這兩個文件。

MacOS的安裝

在Mac系統下,用安裝盤的createinstallmedia命令來創建就好了,注意不要裝錯分區了。

Linux系統的啟動盤定制安裝

在上面介紹OS分區的時候,各種Linux的目錄結構已經顯示了ISO文件和對應解壓出來的引導文件都有哪些。在refind.conf里面不要把位置搞錯就好了

rEFInd的安裝

這一步非常簡單,就是把原來的rEFInd文件夾下面的refind.conf-sample和refind.efi拿出來放到ESP分區的/EFI/boot下面,並且改名為refind.conf和bootx64.efi,然后把相應的rEFInd文件夾下面的icons復制到/EFI/boot下(其實也可以指定其他目錄,為了方便就放在這里了,如果在其他位置要通過修改refind.conf來指定)。最后,分享一下我的refind.conf的menuentry部分,其他部分的配置都因人而異。

menuentry "macOS Big Sur" {
    icon \EFI\boot\icons\os_cata.png
    volume "Install macOS Big Sur"
    loader \System\Library\CoreServices\boot.efi
}

menuentry "Windows 10 PE x86_64" {
    icon \EFI\boot\icons\os_win8.png
    loader \EFI\microsoft\boot\bootx64.efi
}

menuentry "Ubuntu 20.04.3 amd64" {
    icon /EFI/boot/icons/os_ubuntu.png
    volume "OS"
    loader /ubuntu/vmlinuz
    initrd /ubuntu/initrd
    options "boot=casper iso-scan/filename=/ubuntu/ubuntu-20.04.3-live-server-amd64.iso quiet"
}

menuentry "Fedora 35 x86_64" {
    icon /EFI/boot/icons/os_fedora.png
    volume "OS"
    loader /fedora/vmlinuz
    initrd /fedora/initrd.img
    options "inst.repo=hd:LABEL=OS:/fedora/Fedora-Server-dvd-x86_64-35-1.2.iso noeject ---"
}

menuentry "OpenSUSE Leap 15.3" {
    icon /EFI/boot/icons/os_suse.png
    volume "OS"
    loader /opensuseleap15.3/linux
    initrd /opensuseleap15.3/initrd
    options "splash=silent quiet root=live:CDLABEL=openSUSE_Leap_15.3_KDE_Live rd.live.image iso-scan/filename=/opensuseleap15.3/openSUSE-Leap-15.3-KDE-Live-x86_64-Media.iso"
}

menuentry "Arch Linux x86_64" {
    icon /EFI/boot/icons/os_arch.png
    volume "OS"
    loader /arch/vmlinuz-linux
    initrd /arch/initramfs-linux.img /arch/intel-ucode.img
    options "img_dev=/dev/disk/by-label/OS img_loop=arch/archlinux-2021.05.01-x86_64.iso"
}

menuentry "Gentoo amd64 minimal" {
    icon /EFI/boot/icons/os_gentoo.png
    volume "OS"
    loader /gentoo/gentoo
    initrd /gentoo/gentoo.igz
    options "root=/dev/ram0 init=/linuxrc dokeymap looptype=squashfs loop=/image.squashfs cdroot initrd=/gentoo/gentoo.igz isoboot=/gentoo/install-amd64-minimal-20210526T214502Z.iso"    
}

menuentry "Clonezilla 2.7.1-22 amd64" {
    icon /EFI/boot/icons/os_clover.png
    volume "OS"
    loader /clonezilla/vmlinuz
    initrd /clonezilla/initrd.img
    options "boot=live live-config toram=filesystem.squashfs findiso=/clonezilla/clonezilla-live-2.7.1-22-amd64.iso"
}

到此,所有制作已經完畢,其實沒有想象中那么難,但是網上想找到一個比較完整的步驟還不太容易。有問題的話,各位可以在下面留言,我會不定時解答。同時,如果覺得對你有幫助,麻煩也點個贊。

附上Debian,RedHat Enterprise Linux和SUSE Linux Enterprise的menuentry

menuentry "Debian 11.1 amd64" {
    icon /EFI/boot/icons/os_debian.png
    volume "OS"
    loader /debian11.1/vmlinuz
    initrd /debian11.1/initrd.gz
    options "findiso=/debian11.1/debian-live-11.1.0-amd64-standard.iso"
}

menuentry "Red hat enterprise linux 8.4 x86_64" {
    icon /EFI/boot/icons/os_centos.png
    volume "OS"
    loader /rhel8.4/vmlinuz
    initrd /rhel8.4/initrd.img
    options "inst.repo=hd:LABEL=OS:/rhel8.4/rhel-8.4-x86_64-boot.iso noeject ---"
}

menuentry "SUSE linux enterprise 15.3 SP3 x86_64" {
    icon /EFI/boot/icons/os_suse.png
    volume "OS"
    loader /sle15.3sp3/linux
    initrd /sle15.3sp3/initrd
    options "splash=silent quiet rd.live.image install=hd:/sle15.3sp3/SLE-15-SP3-Online-x86_64-GM-Media1.iso"
}

注意:這里比較坑的是Debian11.1的制作,其他所有的loader和initrd所用的文件都是通過解壓iso文件里面對應的內容到iso外面,但是,debian里面的那兩個文件不管用,因此,需要去Debian11.1 standard loaderDebian11.1 standard initrd去下載和standard相關的引導文件(standard版本是無桌面的)或者Debian11.1 graphic loaderDebian11.1 graphic initrd去下載和gnome,kde等相關的引導文件(有桌面的)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM