启动时自定义系统加密密码输入提示

启动时自定义系统加密密码输入提示

我的 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

在重新启动之前检查输出是否有任何错误 - 并祈祷不要出现内核恐慌!

相关内容