症状
- 内核没有更新。也就是说重启后系统仍然使用旧内核。
- 对 GRUB 配置的更改未应用。
- 安装新内核不适用。
- 由于未导入,bpool 丢失。
问题
这是由于从安装时到症状开始出现时磁盘设备名称的变化造成的。例如,如果安装时安装 Ubuntu 的磁盘是 /dev/sda,然后添加了另一个磁盘,则第一个磁盘可以变成 /dev/sdb。Ubuntu 20.04 安装介质附带的 Ubiquity 安装程序版本在创建 ZFS 池时使用 /dev/sdX 名称。这意味着和是rpool
用bpool
vdevs 创建的/dev/sdaX
。一旦这些在安装后发生变化,就无法导入非根池,因为原始 vdev ID 不再包含 ZFS 池。这导致在启动 Ubuntu 时没有挂载 GRUB 使用的 /boot 文件系统。相反,在内核更新或安装期间写入 /boot 的文件最终会放在 /boot 中,而rpool
GRUB 在启动期间不会使用它。等等。
答案1
当我最近遇到这个问题时,运行时bpool在线状态丢失
sudo zpool status
所以我这样做
首先我bpool
像这样导入
sudo zpool import -d /dev/sdX bpool
我之前的 bpool 处于/dev/sdb6
这样运行时zpool status
它说rpool
并且bpool
在线,然后我重新安装最后一个图像像这样强制在空的 /boot 上写入
就我而言
sudo apt --reinstall install linux-image-5.4.0-52-generic
然后重启,似乎新内核已更新成功
就是这样
我希望这对别人有帮助
巴西雷亚尔
答案2
解决方案
安装后
我不确定安装后是否可以可靠地修复此问题。我发现,如果我bpool
使用正确的 vdev 导入,它会显示出来,并在后续重新启动时挂载,因为它会被记住在池缓存中。似乎可以在导入时更改 ZFS vdev 名称,但我不确定具体如何操作,所以我不建议这样做。ZFS 更熟练的人可以建议正确的命令序列,可能涉及zpool import ... -d ...
。
安装时
Ubiquity 中负责代码块中已经有一个修复程序,但它不是第一个 20.04 媒体附带的当前版本的一部分。不过,您可以在启动 Live 桌面环境后获取它。
- 从 Ubuntu 安装媒体启动。
- 选择
Try Ubuntu without installing
。 - 抓住那个固定的
zsys-setup
:
sudo wget -O /usr/share/ubiquity/zsys-setup https://git.launchpad.net/ubiquity/plain/scripts/zsys-setup?h=20.10.2
- 运行 Ubuntu 安装程序并正常在 ZFS(实验)上安装。