如何将 cryptsetup 添加到 Dracut

如何将 cryptsetup 添加到 Dracut

我正在改用 Dracut,但遇到了很多问题。为了一一消除它们,首先我希望我的系统能够正确启动。所以我的 Grub2 条目如下所示:

menuentry 'dracut' {
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd1,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1  829c0201-9b6d-4e18-8464-9d2551311ea6
        else
          search --no-floppy --fs-uuid --set=root 829c0201-9b6d-4e18-8464-9d2551311ea6
        fi
        echo    'Loading Linux 4.9.0-2-amd64 ...'
    linux   /vmlinuz-4.9.0-2-amd64 rd.shell rd.debug log_buf_len=1M
        echo    'Loading dracut initial ramdisk ...'
        initrd  /initramfs-4.9.0-2-amd64.img
}

我期望被扔进rescue shell,然后手动组装根文件系统,并继续启动;但cryptsetup救援 shell 中没有二进制文件。

Dracut 配置文件/etc/dracut.conf.d/*如下所示:

do_prelink=no
add_dracutmodule+="cryptsetup" 

相关模块列表如下:

# dracut --list-modules | grep crypt
dracut: Executing: /usr/bin/dracut --list-modules
crypt
crypt-gpg
crypt-loop
ecryptfs

如何添加cryptsetup以便我可以手动解锁加密分区(通过救援 shell)?

答案1

从 debian dracut-core 044+243-3 开始,/usr/lib/dracut/modules.d/90crypt/module-setup.sh:

require_any_binary $systemdutildir/systemd-cryptsetup cryptsetup || return 1

因此 dracut 首先尝试包含 /lib/systemd/systemd-cryptsetup,如果第一个不存在则包含 /sbin/cryptsetup,如果都不存在则失败。

这些分别由 cryptsetup-bin 2:2.1.0-5 和 systemd 241-1 提供。

/lib/systemd/systemd-cryptsetup 的用法与 /sbin/cryptsetup 不太一样。事实上,它的功能较少:

systemd-cryptsetup attach VOLUME SOURCEDEVICE [PASSWORD] [OPTIONS]
systemd-cryptsetup detach VOLUME

Attaches or detaches an encrypted block device.

See the [email protected](8) man page for details.

所以我们可能需要包含 /sbin/cryptsetup

dracut --install "/sbin/cryptsetup" /boot/initrd.1 4.19.0-5-amd64

或在 /etc/dracut.conf.d/XXX 中

install_items+="/sbin/cryptsetup"

还有“include”开关仅复制文件本身,而“install”开关也复制动态库。

最后,验证包含:lsinitrd /boot/initrd.1

输出(可能带有|grep cryptsetup):

-rwxr-xr-x   1 root     root        47152 Jul  3 09:10 sbin/cryptsetup  
-rw-r--r--   1 root     root       363920 Feb  9 07:40 lib/x86_64-linux-gnu/libcryptsetup.so.12.4.0

相关内容