我的 arch Linux 笔记本电脑上有全盘加密。当我打开机器电源时,它会提示我输入磁盘密码。我的系统是通过 luks archwiki 页面上的 LVM 进行加密的。提示内容类似于“cryptlvm 卷需要密码”,我想更改此设置以包含有关系统的一些信息,例如所有者以及丢失时返回的地址。到目前为止,我只是尝试查看 arch wiki 并搜索看看是否有其他人问过类似的问题,但我似乎找不到任何东西。
答案1
我发现您可以使用 mkinitcpio 创建一个自定义 initramfs 模块来打印此类信息。确保你正确遵循这一点,否则你的内核将会崩溃。为此,您可以在以下位置创建文件:
- /usr/lib/initcpio/hooks/MODULENAME
- /usr/lib/initcpio/install/模块名称
/usr/lib/initcpio/install/模块名称
这是一个 bash 脚本,当您使用 mkinitcpio 重新生成 initramfs 时,它可以帮助构建模块。它必须具有 build() 和 help() 函数。构建函数调用 add_runscript 命令,该命令将同名的运行时 bash 文件添加到:/usr/lib/initcpio/hooks/MODULENAME 下。
build() {
add_runscript
}
/usr/lib/initcpio/hooks/MODULENAME
这是加载 initramfs 时运行的 bash 脚本。您想要运行的任何命令都必须位于名为 run_hook() 的函数中
run_hook() {
# note this environment is limited as our drive is encrypted
# only core system commands will be available
# it is possible to add more commands to the initramfs environment
echo "hello!!"
}
将钩子添加到 mkinitcpio.conf
现在我们将钩子添加到位于 /etc/mkinitcpio.conf 的 mkinitcpio 配置文件中的数组中
# we put in the custom hook
# we put it before our encrypt hook!!
# so it shows before our password prompt
HOOKS=(base udev autodetect modconf kms keyboard MODULENAME encrypt lvm2 keymap consolefont block filesystems fsck)
重新生成mkinitcpio
最后我们可以重新生成 initramfs,以便该模块可以在下次启动时加载。
$~ sudo mkinitcpio -p linux
在重新启动之前检查输出是否有任何错误 - 并祈祷不要出现内核恐慌!