要在全盘加密的Ubuntu系统上实现自动开机(即无需手动输入密码),可以使用以下方法。最常见的方式是使用密钥文件(keyfile)配合可移动设备(如U盘)或TPM(可信平台模块),具体步骤如下:
方法1:使用U盘存储密钥文件(推荐)
步骤:
-
创建密钥文件
生成一个随机密钥文件(例如保存到/root/.luks-key
):sudo dd if=/dev/urandom of=/root/.luks-key bs=4096 count=1 sudo chmod 0400 /root/.luks-key # 限制访问权限
-
将密钥添加到LUKS加密卷
假设加密分区为/dev/sda3
(请用lsblk
确认实际分区):sudo cryptsetup luksAddKey /dev/sda3 /root/.luks-key
输入原加密密码完成添加。
-
配置
/etc/crypttab
编辑加密卷配置:sudo nano /etc/crypttab
找到类似
sda3_crypt UUID=... none luks
的行,修改为:sda3_crypt UUID=<你的UUID> /dev/disk/by-label/KEY:/luks-key luks,keyscript=/bin/cat
说明:
<你的UUID>
:通过sudo blkid /dev/sda3
获取。/dev/disk/by-label/KEY
:U盘的卷标(需命名为KEY
)。/luks-key
:密钥文件在U盘中的路径。
-
准备U盘
- 格式化U盘为FAT/EXT4,设置卷标为
KEY
:sudo mkfs.ext4 -L KEY /dev/sdX1 # 替换为U盘设备
- 挂载U盘并复制密钥文件:
sudo mount /dev/sdX1 /mnt sudo cp /root/.luks-key /mnt/luks-key sudo umount /mnt
- 格式化U盘为FAT/EXT4,设置卷标为
-
更新 initramfs
sudo update-initramfs -u
-
测试
重启系统,插入U盘后应自动解锁。拔掉U盘则需手动输入密码。
方法2:使用TPM 2.0自动解锁(Ubuntu 22.04+)
前提:主板支持TPM 2.0(需在UEFI中启用)。
步骤:
-
安装工具
sudo apt install clevis clevis-tpm2 clevis-luks
-
绑定LUKS到TPM
绑定到根分区(例如/dev/sda3
):sudo clevis luks bind -d /dev/sda3 tpm2 '{"pcr_ids":"7"}'
pcr_ids:"7"
:关联安全启动状态(PCR 7),若需其他PCR,可追加如1,7
。
-
更新 initramfs
sudo update-initramfs -u
-
测试
重启后系统将自动用TPM解锁。注意:若安全启动状态改变(如更新BIOS),需重新绑定。
方法3:网络解锁(适用于服务器)
使用 dropbear-initramfs
通过SSH远程解锁:
- 安装:
sudo apt install dropbear-initramfs
- 配置SSH公钥到
/etc/dropbear-initramfs/authorized_keys
。 - 重启后通过SSH连接initramfs,执行
unlock
命令输入密码。
注意事项
- 安全性:
- U盘或TPM可能被物理窃取,仅在可控环境中使用自动解锁。
- 备份原LUKS密码:防止密钥丢失导致数据不可恢复。
- 验证分区:
使用lsblk
或sudo blkid
确认加密分区的设备路径(如/dev/sda3
)。 - 调试:
若失败,在GRUB菜单按Esc
进入启动日志,检查错误信息。
选择适合场景的方法即可实现全盘加密Ubuntu的自动开机。