由于我之前的ubuntu 安装是采用的SealBIOS 现在想改成UEFI ,经过尝试在不重装系统情况下成功了,记录下步骤
首先还是从现在的sealBIOS 启动进入系统
由于以前磁盘已经分配好了,无空间再划分EFI 分区,当然也有办法,自己不想尝试了,换一种思路。
在pve管理界面中新增一块2G 的磁盘给Ubuntu虚拟机,其实1G 就够了,因为我重新用uefi方式安装了下ubuntu发现efi分区就是1G
这是用 lsblk 可以看到新增了一块 sdb
然后
gdisk /dev/sdb
输入? 号
输入n
输入1
回车
回车
输入ef00
输入w 按y 确认
接下来,将新建的分区格式化为 FAT32 文件系统
sudo mkfs.fat -F32 -n EFI /dev/sdb1
创建挂载点
mkdir -p /boot/efi
挂载新分区
sudo mount /dev/sdb1 /boot/efi
安装grub-efi-amd64
apt install grub-efi-amd64
这个不知是否需要
apt install dosfstools mtools
安装 EFI 版本的 GRUB 到新挂载的 EFI 分区
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
更新 GRUB 配置文件,扫描当前的内核和系统
update-grub
如果不配置 /etc/fstab,重启后 EFI 分区可能不会自动挂载,这会导致未来更新内核时引导文件无法写入,从而引发系统无法启动。
# 获取新分区的 UUID sudo blkid /dev/sdb1 # 记下输出中的 UUID="xxxx-xxxx" # 编辑 fstab 文件 sudo nano /etc/fstab
添加一行
UUID=xxxx-xxxx /boot/efi vfat defaults 0 1
我按照uefi 版本的fstab 写的这样的
/dev/disk/by-uuid/E4DA-18D3 /boot/efi vfat defaults 0 1
保存退出后,运行 sudo mount -a 检查是否有报错。如果没有报错,说明配置正确。
再运行了一下update-grub 应该不需要
检查 /boot/efi/EFI/ubuntu/ 目录下是否成功生成了 grubx64.efi 或 shimx64.efi 文件。
然后关机
从PVE 中将SealBIOS 更改为OVMF(UEFI)
注意不要再添加efi 磁盘,提示不管它。
然后调整下启动顺序,将第二块EFI磁盘放在前面就可以启动了。启动后发现啥都没变,还可以改为SealBIOS 只需要更改回sealBIOS 再将启动顺序将以前的磁盘放在第一个。
珂珂的个人博客 - 一个程序猿的个人网站