(写在前面:CentOS8竟然比CentOS7更早被淘汰,还是用CentOS7吧,但是CentOS8和CentOS7的扩展boot分区操作时完全一致的)

若编译了多个内核,则可能会出现/boot分区不够大的情况导致系统无法启动。如图所示。

centos boot efi centos boot efi分区_ios


首先关机,创建新的磁盘,重新开机后将/boot分区取消挂载。对新的磁盘(nvme0n2)分区(每个机器的分区名可能不同!!!),执行命令fdist /dev/nvme0n2,创建一个新分区,全部采取默认选项。

centos boot efi centos boot efi分区_linux_02


运行lsblk命令,查看新磁盘的新分区。对新分区进行格式化 mkfs.ext4 /dev/nvme0n2p1

centos boot efi centos boot efi分区_ios_03


将旧内核复制到boot_old文件夹(cp -r /boot/ /boot_old),备份旧内核中的文件。之后,把boot分区挂载回来,挂载到新分区。mount /dev/nvme-n2p1 /boot。在挂载完成后,再把boot_old的备份文件复制回来。cp -r /boot_old/. /boot

将永久挂载写入到/etc/fstab里。先执行blkid查看所有分区的uuid。

centos boot efi centos boot efi分区_centos boot efi_04


打开/etc/fstab,找到nvme0n2p1的分区填入。(vi /etc/fstab)加入记录:

UUID=5b624350-9fce-495d-934e-650f62cfe189 ext4 /boot defaults 0 1

保存并退出(esc+:wq)后更新挂载信息。mount -alsblk。可以看到,/boot分区被挂载到了有20GB的新磁盘上。(每个人的UUID可能不同!!!

centos boot efi centos boot efi分区_centos boot efi_05


重新挂载/boot分区后,重新make install安装内核模块。但是,还需要运行grub2-mkconfig -o /boot/grub2/grub.cfg更新引导文件。否则,会出现如下情况:在旧内核中,/boot分区被正确地识别到并挂载到nvme0n2p1分区,但在新内核找不到/boot。更新引导文件后,新内核也能找到/boot分区。再次重启虚拟机,终于可以成功进入新内核。编译新内核时可能遇到的/boot分区不足的情况被通过这种办法成功得以解决。

还可能看到另一种情况:在物理机开机时按f12进入bios,在bios中设置允许虚拟机。若已经设置允许虚拟机,则需要关掉windows defender或腾讯电脑管家或360。当虚拟机占用主机过多资源时就有可能也会出现该情况。

centos boot efi centos boot efi分区_运维_06