无法构建新的 initrd

无法构建新的 initrd

设置了一个新的 ubuntu 23.04,运行了几天。突然在重启系统时,initramfs 提示失败。

Begin: Running /scripts/local-premount .... Scanning for Btrfs filesystems
done.
Begin: Waiting for root file system ... Begin: Running /scripts/local-block...done.
done.
Gave up waiting for root file system device. Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT! UUID=xxxx does not exist. Dropping to a shell.

我的设置:

  • NVMe 磁盘
  • gpt 布局
  • UEFI 系统
  • 安全启动
  • / 上的 brtfs 文件系统,子卷 /home。

并行 Windows 使用 grub 条目启动。我能够从单独的系统安装较旧的 kernel+initrd,并且能够使用手动编辑的 grub.cfg 启动。所以我认为文件系统没有问题,/etc/fstab 中的 UUID 也是如此——因为它保持不变。我检查了磁盘,没有任何错误。

update-grub 似乎也能正常工作,它只是拾取手动内核/initrd,覆盖 grub.cfg,然后我就可以再次启动了。但是当我重新生成 initrd 时,启动因上述错误而中断。相同的内核仍然使用之前复制的 initrd 启动,所以我认为 update-initramfs 已损坏。

我当然检查过了

  • /proc/cmdline (与实际运行的 BOOT_IMAGE 仅不同)

但是 /proc/modules 完全是空的,所以 /proc/filesystems 缺少 btrfs。我尝试通过输入无效的 UUID 来使用正在运行的(复制的)initd 来中断 initrd,并且我检查到 /proc/modules 已填满,btrfs 已加载,因此 /proc/filesystems 包含 btrfs。blkid 也正常工作。

因此,我的系统上的 initramfs 构建过程已中断,因为最近的版本和旧版本都因同样的错误而停止。

仅从 initrd 文件的大小来看,它看起来相似,我检查了 /etc/initramfs-tools/initramfs.conf 并且它与我的并行/运行系统相同。

答案1

ARGG...重新安装 initramfs-tools 后问题仍然没有解决,我检查了模块,发现通过 sctipt 将 btrfs 放入 modprobe.d/blacklist.conf 中的黑名单...删除该条目并更新 initramfs -> 有效!

相关内容