首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用dracut获得initramfs中包含的脚本?

如何使用dracut获得initramfs中包含的脚本?
EN

Unix & Linux用户
提问于 2021-02-01 22:34:31
回答 1查看 605关注 0票数 2

我正在使用dracut创建一个initramfs来测试在TPM芯片中创建密钥的脚本。现在,这个脚本只是一个虚拟脚本,所以我可以看到我是否正确地创建了initramfs:

代码语言:javascript
复制
#!/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中。

谢谢!杰夫

EN

回答 1

Unix & Linux用户

发布于 2023-06-02 15:34:18

我在--include上取得了成功。假设您将自定义脚本放在/etc/dracut.conf.d/tpm.sh中,您可以这样做:

代码语言:javascript
复制
sudo dracut --include /etc/dracut.conf.d/tpm.sh /usr/lib/dracut/hooks/pre-mount/tpm.sh tpm.img

档案在那里:

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
install_items+=" /usr/lib/dracut/hooks/pre-mount/tpm.sh "

这将导致所有未来自动生成的initramfs映像都包含脚本,例如在升级内核时。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/632156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档