最小的 initramfs (在 LVM 上使用 root)

最小的 initramfs (在 LVM 上使用 root)

当 root 在 LVM 上时,是否可以通过排除 udev 钩子来修剪 initramfs?LVM2 安装指南(适用于 LVM)来自 arch维基百科站点 udev 和 lvm2 作为必要的两个钩子。

我已设法将 mkinitcpio.conf 精简为:

#MODULES=()

BINARIES=(fsck fsck.btrfs btrfsck)

HOOKS=(base udev lvm2)

下列的指南。如果我从这里删除 udev 或 lvm2,它会中断,错误消息与以下行有关

can't find /dev/linux/arch`

这基本上是一个device mapper映射路径。我想知道的是,我可以进一步修剪它并删除钩子udev吗?有什么方法可以实现吗?到目前为止,我看过/读过的指南都是通用的(没有 LVM 的系统)。

输出lsinitcpio

❯ lsinitcpio -a /boot/initramfs-linux-clear.img
==> Image: /boot/initramfs-linux-clear.img
==> Created with mkinitcpio 30
==> Kernel: 5.9.16-1-clear
==> Size: 47.1 MiB

==> Included modules:
  dm-bio-prison           dm-cache                dm-log                  dm-persistent-data      dm-snapshot
  dm-bufio                dm-cache-smq            dm-mirror               dm-region-hash          dm-thin-pool

==> Included binaries:
  blkid                   dmsetup                 journalctl              modprobe                sulogin                 systemd-tmpfiles
  btrfsck                 fsck                    kmod                    mount                   switch_root             udevadm
  busybox                 fsck.btrfs              lvm                     pdata_tools             systemctl               umount

我到目前为止尝试过的事情:

  • break=postmount通过将启动选项添加到后备映像并执行来 获取所需的必要模块列表 'lsmod | awk 'NF==3{print $1}'。 将它们添加到 MODULES 数组中。

  • Included Modules从输出中添加如下所列出的所有模块lsinitcpio(例如 dm-bio-prison,等)。dm-cachedm-log

注意:我知道 systemd 钩子可以替代 udev 钩子,但这不是我想要的。我希望将其简化为仅基础和 lvm2(如果需要)。

相关内容