本文以CentOS 7.6镜像为例,介绍如何在云上环境将实例的启动模式由BIOS
转换为UEFI
。
由于部分火山引擎云服务器实例仅支持UEFI启动模式,当您需要使用的自定义镜像为BIOS
模式时,无法选用此类规格。您可以根据本文指引将目标自定义镜像的启动模式转化为UEFI
。
登录镜像控制台。
在顶部导航栏选择目标自定义镜像所在地域与项目。
单击目镜像右侧“操作”列的“创建实例”按钮,使用该镜像创建一个临时实例。
您可以选用该镜像可创建的最低规格实例,例如:ecs.g2i.large。
登录临时实例,操作详情可查看登录Linux实例。
在临时实例中执行如下命令,检查实例系统盘是否有可用于创建efi
分区的空闲空间。
parted /dev/vda print free
若回显如下所示无空闲空间或空闲空间不足1GB,需自行扩容系统盘(增加约1GB空间),操作详情可查看扩容云盘(Linux)。
若回显如下所示,有不低于1GB的空闲空间,请跳过本步骤。
使用GPT fdisk工具,将空闲空间进行分区。
执行gdisk /dev/vda
命令,增加BIOS boot partition
与EFI System
两个分区。
输入n
,根据指引增加BIOS boot partition
分区并按回车键。
注意
first sector
值必须为34
。
输入n
,根据指引增加EFI System
分区并按回车键。
说明
分区大小仅需200MB即可。
输入w
,并输入y
确认并完成分区。
执行如下命令,读取分区表并更新分区信息。
partprobe /dev/vda
执行如下命令,可以查看新增加BIOS boot partition
分区和EFI System
分区信息。
parted -l lsblk -l
回显示例:
挂载UEFI分区。
执行如下命令,格式化ESP。
说明
yum install dosfstools
命令安装工具。vda3
中的数字3
替换为上文步骤6.2中EFI
分区的Partition number
。mkfs.vfat /dev/vda3
回显示例:
执行如下命令,挂载UEFI分区至/boot/efi目录。
若/boot/efi目录不存在,请执行
mkdir /boot/efi
命令创建。
mount /dev/vda3 /boot/efi
执行如下命令,确认是否挂载成功。
lsblk
回显示例:
将UEFI分区挂载信息写入fstab
文件。
执行如下命令,查看UEFI分区的UUID。
本实践中,UEFI分区
/dev/vda3
的UUID为F6BA-62E7
。
blkid
回显示例:
执行如下命令,编辑fstab文件。
vim /etc/fstab
按i
键进入插入模式,将UEFI分区的UUID添加到文件中。
UUID=F6BA-62E7 /boot/efi vfat umask=0077 0 1
按esc
键退出编辑,并输入:wq
保存并退出。
重新安装BootLoader
执行如下命令,安装efibootmgr。
yum install efibootmgr
apt install efibootmgr
执行如下命令,安装shim。
yum install shim
apt install shim
执行如下命令,安装grub2-efi。
yum install grub2-efi-x64 && yum install grub2-efi-x64-modules
apt install --reinstall grub-common grub-efi-amd64
执行如下命令,以UEFI为引导重装grub。
grub2-install --target=x86_64-efi --efi-directory=/boot/efi /dev/vda grub2-install --target=x86_64-efi --removable --efi-directory=/boot/efi --bootloader-id=GRUB
grub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/vda grub-install --target=x86_64-efi --removable --efi-directory=/boot/efi --bootloader-id=GRUB
执行如下命令,重新生成grub2-config文件。
注意
重新生成grub2-config文件将覆盖原有配置,建议您提前备份。
grub2-mkconfig -o /boot/grub2/grub.cfg
grub-mkconfig -o /boot/grub/grub.cfg
执行如下命令,修改grub2-mkconfig文件配置。
Debian、Ubuntu镜像请跳过本步骤。
sed -i 's/linux16/linuxefi/g' /boot/grub2/grub.cfg sed -i 's/initrd16/initrdefi/g' /boot/grub2/grub.cfg
为确保您可以正常使用火山引擎提供实例规格(例如:通用型g3i、计算型c3i、内存型r3i),请根据安装Virtio1.1驱动指引,安装Virtio1.1驱动。
将临时实例操作系统制作为新的自定义镜像,操作详情可查看通过实例创建自定义镜像(Linux)。
至此,您得到的UEFI
模式启动的自定义镜像。后续,您可以根据需求自行释放临时实例、云盘、公网IP等云资源;还可以使用新自定义镜像购买新实例或作为已有实例的操作系统,操作详情可查看通过自定义镜像购买实例或更换操作系统。
您还可以在使用该镜像创建的实例中执行如下命令,验证是否修改成功。
df -h efibootmgr
回显示例:
如下所示,新镜像为
UEFI
启动模式。
为什么在镜像控制台查看新制作的镜像信息,其“启动方式”依旧是BIOS
?
BIOS
),因此得到的新镜像在控制台其启动方式也是BIOS
,您需要修改控制台展示的“启动方式”为UEFI
,才能不影响镜像使用。UEFI
即可。