UEFI和Legacy兼容啟動U盤制作


應用場景

自己有一個可啟動移動硬盤,是屬於老式的BIOS啟動方式,最近換了新電腦,因為電腦只支持uefi的啟動方式,所以決心為移動硬盤增加uefi啟動支持,如何將一個只支持BIOS啟動(或者 Legacy啟動)的U盤或者移動硬盤增加UEFI啟動支持?

主要問題

網上有很多此類的資料,Switch Debian from legacy to UEFI boot mode中文翻譯,按方法的操作后始終不能支持用Legacy的方式啟動,另外的所謂的要將主分區放在第二個的設置,仍然不能達到期望。最

知識要點

uefi啟動並不直接要求分區表是gpt格式,他只要求分區中能找到esp分區,並且esp分區中有efi文件夾,在efi文件夾下,有boot文件夾,並且文件夾下有可啟動的efi鏡像。

制作辦法

安裝grub-efi

可以最開始就將 grub-efi 安裝好,當然也可以后續安裝

修改分區

利用gparted 、diskgenius 等工具修改移動硬盤分區,將MBR分區表改為GPT分區表(兩者主要的區別),增加esp分區(ESP雖然是一個FAT16或FAT32格式的物理分區),大小根據啟動文件的大小而定,100Mb一般夠用,再用分區工具將GPT分區表格式直接轉換為MBR分區表,這才是重點。

重新安裝GRUB

啟動Debian Live CD 重新安裝 grub。

掛載文件系統

主要是為下步chroot中操作設置環境,所以,至少要掛載 / ,/boot,/boot/efi, /dev/, /dev/pts ,/proc, /sys,其他視情而定,比如tmp,var 等單獨分區的話還要單獨掛載。以下是一個示例。

# mount /dev/sdb1 /mnt/boot
# mkdir /mnt/boot/efi
# mount /dev/sdb2 /mnt/boot/efi
# for i in /dev/ /dev/pts /proc /sys ; do mount -B $i /mnt/$i ; done

注意 這是一個示例,/dev/sdXX根據實際進行修改,示例代碼中 /dev/sdb1 是我們原boot分區,/dev/sdb2是我們新建的esp分區。

如果前面沒有安裝 grub-efi,可能需要在chroot里面訪問網絡,則要進行正確的網絡設置,當然,如果你移動硬盤中系統本來就可能訪問網絡,則不需求進行其他設置。

將esp分區加入fstab

查看esp分區的uuid。

# ls /dev/disk/by-uuid

fat32格式一般是形如 ABCD-EFGH 的樣子,可能看到多個esp分區分辨不出來,其實在分區工具中新建的時候可以記下來。

將分區設置為自動掛載。

# echo "UUID=ABCD-EFGH /boot/efi vfat defaults 0 2" >> /mnt/etc/fstab

當然這也可以在進入到chroot環境后再設置,只是/mnt/etc/fstab 變為 /etc/fstab罷了。

進入chroot環境

# chroot /mnt

安裝efi啟動文件

# grub-install /dev/sdb

其他設置

Debian 9 系統上安裝啟動文件后,在esp分區的efi文件夾中會生成 debian文件夾,沒有boot文件夾,將其復制一份

# cp -r debian boot

總結

uefi啟動並不直接要求分區表是gpt格式,他只要求分區中能找到esp分區,並且esp分區中有efi文件夾,在efi文件夾下,有boot文件夾,並且文件夾下有可啟動的efi鏡像。


免責聲明!

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



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