在测试升级我们正在运送软件的其中一台虚拟机时,我遇到了一个问题,在将操作系统从 CentOS 7.9 升级到 AlmaLinux 8.5 的过程中,在最后一次重启之前(从 ELevate Intramfs 重启后),机器无法启动。这是来自 GRUB 的错误消息:
error: symbol 'grub_calloc' not found
现在我做了一些谷歌搜索,似乎这可能是由于 GRUB 寻找其源中不存在的功能而导致的,这是由于错误的更新造成的。
在升级之前我确实需要处理两个抑制剂。
- 必须停止 NFS,并卸载 /proc/fs/nfsd
- 必须将两个弃用的驱动程序(mptctl、mptbase)列入黑名单 - 我在 /etc/default/grub 中通过添加
module_blacklist=mptctl,mptbase
以下内容将其列入黑名单GRUB_CMDLINE_LINUX
考虑到这一点,我从 Alma ISO 启动来拯救系统,并在 上重新安装了 grub sda
,解决了问题,机器启动并完成升级到 AlmaLinux 8.5
我有恢复的方法,现在我想知道怎样才能彻底阻止这种情况的发生?
leapp-report 中有一个永久条目,指出 GRUB 核心不会在旧版 (BIOS) 系统上更新,我相信这是我遇到的问题。我在 Red Hat 论坛上找到了一个公认的解决方案,建议如果您安装了 GRUB2(我在该 VM 上安装了),这应该不是问题。
Risk Factor: high
Title: GRUB core will be updated during upgrade
Summary: On legacy (BIOS) systems, GRUB core (located in the gap between the MBR and the first partition) does not get automatically updated when GRUB is upgraded.
我不知道它是否会改变一些事情,但是虚拟机上配置了 RAID 阵列:
sda 8:0 0 120G 0 disk
├─sda1 8:1 0 500M 0 part
│ └─md0 9:0 0 499M 0 raid1 /boot
└─sda2 8:2 0 119.5G 0 part
└─md1 9:1 0 119.5G 0 raid1
├─rootvg-lv_root 253:0 0 40G 0 lvm /
├─rootvg-lv_swap 253:1 0 7.9G 0 lvm [SWAP]
└─rootvg-lv_home 253:2 0 71.6G 0 lvm /home
sdb 8:16 0 120G 0 disk
├─sdb1 8:17 0 500M 0 part
│ └─md0 9:0 0 499M 0 raid1 /boot
└─sdb2 8:18 0 119.5G 0 part
└─md1 9:1 0 119.5G 0 raid1
├─rootvg-lv_root 253:0 0 40G 0 lvm /
├─rootvg-lv_swap 253:1 0 7.9G 0 lvm [SWAP]
└─rootvg-lv_home 253:2 0 71.6G 0 lvm /home
sr0 11:0 1 1024M 0 rom
我真的很想知道是否可以防止这种情况发生,因为我希望在许多具有类似配置的机器上执行升级。