7

UEFI和Legacy兼容启动U盘制作

 3 years ago
source link: https://www.cnblogs.com/bu-wu-zheng-ye/p/14691390.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

自己有一个可启动移动硬盘,是属于老式的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镜像。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK