我正在使用dracut创建一个initramfs来测试在TPM芯片中创建密钥的脚本。现在,这个脚本只是一个虚拟脚本,所以我可以看到我是否正确地创建了initramfs:
#!/usr/bin/env bash
#
read -p 'This file will run to initialize the TPM'
exit 0我想将此脚本包含在预挂载引导阶段。我跟踪了这个问题的答案:“如何编写预挂载启动脚本?”在这个论坛上,根据需要修改它,但是当我列出图像文件的内容时,我的脚本就不在了。我也尝试使用--包括和-安装dracut选项,但是我要么收到一个错误,或者如果没有,脚本就不在initramfs中。我将我的文件命名为tpm.img,并将其放在/boot目录中。在启动计算机时,我按“e”来修改grub行,并将initrdefi命令更改为指向我的tpm.img。当然,我的脚本没有运行,因为它不在initramfs中。我不确定我是否理解dracut手册中的“注入自定义文件”一节:
https://mirrors.edge.kernel.org/pub/linux/utils/boot/dracut/dracut.html
我还没有找到任何dracut配置文件或dracut命令行文件的示例,这些文件显示了要包含的模块的完整路径。请帮助我理解为什么我的脚本没有包含在initramfs中。
谢谢!杰夫
发布于 2023-06-02 15:34:18
我在--include上取得了成功。假设您将自定义脚本放在/etc/dracut.conf.d/tpm.sh中,您可以这样做:
sudo dracut --include /etc/dracut.conf.d/tpm.sh /usr/lib/dracut/hooks/pre-mount/tpm.sh tpm.img档案在那里:
$ sudo lsinitrd tpm.img | grep -F tpm.sh
Arguments: --include '/etc/dracut.conf.d/tpm.sh' '/usr/lib/dracut/hooks/pre-mount/tpm.sh'
-rw-rw-r-- 1 root root 80 Apr 5 17:22 usr/lib/dracut/hooks/pre-mount/tpm.sh不幸的是,据我所知,--include命令行选项没有等效的配置文件。有install_items,这是--install的等价物。此选项只采用一条路径,因为initramfs中的路径与主FS中的路径相同。所以你需要把你的脚本放在/usr/lib/dracut/hooks/pre-mount/tpm.sh上。然后您可以创建/etc/dracut.conf.d/tpm.conf:
install_items+=" /usr/lib/dracut/hooks/pre-mount/tpm.sh "这将导致所有未来自动生成的initramfs映像都包含脚本,例如在升级内核时。
https://unix.stackexchange.com/questions/632156
复制相似问题