Ubuntu 22.04全磁盘加密后如何设置密码验证成功提示
Ubuntu 22.04全磁盘加密后如何设置密码验证成功提示
我太懂这种开机时的焦虑了——输入加密密码后屏幕一片空白,足足等两分钟才继续启动,每次都忍不住怀疑是不是哪里出问题了。别担心,咱们可以给这个阶段加个明确的提示,让你心里踏实不少,下面是两种可行的方法:
方法一:修改系统自带的cryptroot脚本
这种方法直接修改负责磁盘解锁的核心脚本,见效快,但要注意系统更新时可能会被覆盖:
- 先备份原文件,避免改坏了无法恢复:
sudo cp /usr/share/initramfs-tools/scripts/local-top/cryptroot /usr/share/initramfs-tools/scripts/local-top/cryptroot.bak - 用编辑器打开脚本:
sudo nano /usr/share/initramfs-tools/scripts/local-top/cryptroot - 在脚本里找到密码验证成功的区块,也就是
cryptsetup luksOpen命令执行成功的地方。你可以搜索类似if cryptsetup luksOpen的代码段,在这个条件成立的代码块里添加一行提示:if cryptsetup luksOpen "$CRYPT_SOURCE" "$CRYPT_NAME" < /dev/console; then # 新增这一行提示 echo -e "\nPassphrase accepted. Now booting..." # 下面是原有的其他代码,不用动 ... fi - 保存并退出编辑器后,更新initramfs让修改生效:
sudo update-initramfs -u - 重启系统测试,下次输入密码后就能看到提示了。
方法二:使用自定义initramfs钩子(更持久)
这种方法通过添加自定义钩子脚本实现,系统更新时不会被覆盖,更推荐:
- 创建钩子脚本存放目录(如果不存在的话):
sudo mkdir -p /usr/share/initramfs-tools/hooks - 创建并编辑自定义钩子脚本:
sudo nano /usr/share/initramfs-tools/hooks/crypt_success_msg - 把下面的内容复制进去:
#!/bin/sh PREREQ="" prereqs() { echo "$PREREQ" } case "$1" in prereqs) prereqs exit 0 ;; esac . /usr/share/initramfs-tools/hook-functions # 生成自定义的启动脚本,在cryptroot之后运行 cat > "${DESTDIR}/scripts/local-top/crypt_success" <<EOF #!/bin/sh # 检查加密卷是否成功解锁,然后输出提示 if [ -b "/dev/mapper/$CRYPT_NAME" ]; then echo -e "\nPassphrase accepted. Now booting..." fi EOF chmod +x "${DESTDIR}/scripts/local-top/crypt_success" - 给脚本添加执行权限:
sudo chmod +x /usr/share/initramfs-tools/hooks/crypt_success_msg - 更新initramfs让钩子生效:
sudo update-initramfs -u - 重启测试,以后每次开机输入密码后都会看到安心的提示啦。
小提示
如果之后不想用这个提示了,方法一可以恢复备份的cryptroot文件再更新initramfs;方法二直接删除/usr/share/initramfs-tools/hooks/crypt_success_msg文件,然后更新initramfs就行。
备注:内容来源于stack exchange,提问作者cis
相关产品推荐
相关产品推荐

