在我公司的笔记本电脑上,我装有 Windows 11,它具有加密磁盘、工作休眠模式,登录时我只需要提供一次密码。我希望在我的个人笔记本电脑上也能有同样的 Ubuntu。现在我有 Ubuntu 20.04。里面有些乱,所以我想全新安装 Ubuntu 22.04。并且想知道加密分区(LUKS,或者其他什么?)的最佳和最简单的方法是什么,这将允许我跳过 GRUB,并在使用登录密码登录时解锁磁盘/分区。同时,我需要/要求一个可以工作的休眠模式。请注意,我不使用 SWAP 文件而是使用分区。
RN我使用这个配置进行休眠:
https://gist.github.com/Mlocik97/5936fa55d4971f05c6a1c0fb10c4c9bb
也就是说我设置了sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
文件内容:
[Enable hibernate in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
[Enable hibernate in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes
但它有效,因为我没有加密 SWAP。我像GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/nvme0n1p3"
在/etc/default/grub
文件中一样设置了恢复参数,但现在当我打开计算机时,会显示 GRUB 菜单,即使 Ubuntu 只是我个人笔记本电脑上的系统,我想跳过该步骤。
我尝试在虚拟机(QEMU/KVM)中安装带有加密虚拟磁盘(LUKS)的 Ubuntu 22.04。该安装程序在 LVM 分区上为我提供了选项,但是当我这样做时,我需要输入两次密码,一次用于解锁磁盘/分区,第二次是在登录时,我觉得这很烦人,如果我可以只输入一次密码就好了。
所以我正在解决两个问题,让休眠与加密的 SWAP 一起工作,并让分区解锁与登录密码一起工作。有人能帮我吗?
答案1
此答案适用于使用加密交换分区启用休眠。此答案不涉及使用 TPM 或其他绕过 LUKS 密码提示的方法。
使用 LUKs 加密交换分区进行休眠
提纲和参考文献
第一的增加交换分区:
更改加密 LVM 上的交换大小?(kubuntu 20.04 安装)
第二启用休眠
增加加密交换的大小 https://gist.github.com/tjvr/f82004565139a5b13031af1ce5a50a02
1.减少根目录并增加交换分区
介绍
使用默认安装过程在笔记本电脑中安装 Ubuntu。在高级选项下选择 LUKS(和 LVM)。测试系统以确保一切正常。
我的笔记本电脑有 4GB RAM 和 1GB 的安装过程中加密的交换分区。我使用了以下公式:
新的交换分区大小 = RAM 大小 + Sqrt(RAM 大小)
所以我需要一个 6GB 的交换空间。也就是说,我需要向现有的交换分区添加 5GB。
实际过程
注意:分区号、逻辑卷名等来自没有其他操作系统的笔记本电脑上 Ubuntu 22.04 的全新默认安装(带加密)。YMMV。
从 Ubuntu Live Installation USB 启动并使用“尝试 Ubuntu”选项。
打开终端并以超级用户身份运行后续命令
sudo su
加密设备不应被解锁。使用以下方法验证:
lsblk
输出不应该有任何crypt
或lvm
。
解锁加密设备
cryptsetup open /dev/sda4 crypt
出现提示时输入 LUKS 密码。
获取逻辑卷标识符
lsblk
# └─sda4 8:6 0 464,6G 0 part
# └─sda4_crypt 253:0 0 464,5G 0 crypt
# ├─vgubuntu-root 253:1 0 463,6G 0 lvm /
# └─vgubuntu-swap_1 253:2 0 980M 0 lvm [SWAP]
缩小逻辑根卷和文件系统。
lvresize --verbose --resizefs -L -5G /dev/mapper/vgubuntu-root
# `lvresize` <volume> => resize a logical volume
# --verbose => Give more info.
# --resizefs => Resize filesystem AND LV with fsadm(8).
# -L => Specifies the new size of the LV,
# +/- add/subtracts to/from current size, g|G is GiB.
检查逻辑根卷的文件系统是否存在错误
e2fsck -f /dev/mapper/vgubuntu-root
# `e2fsck`<fs-path> => Check a Linux ext2/ext3/ext4 file system
# -f => Force checking even if the file system seems clean.
增加 swapsize
lvresize --verbose -L +5G /dev/mapper/vgubuntu-swap_1
关闭终端并重新启动到内部 LUKS 加密驱动器。
该命令free
显示旧的交换大小。
来源:增加加密交换的大小
终端中的以下命令应该可以解决此问题:
sudo swapoff -a
sudo cryptsetup resize vgubuntu-swap_1
sudo mkswap /dev/mapper/vgubuntu-swap_1
sudo swapon -a
再次使用该free
命令来验证您是否具有所需的交换大小。
2. 启用休眠以进行交换
注意:我不需要对文件进行任何更改(或创建) /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
正如问题中提到的那样。
编辑文件/etc/initramfs-tools/conf.d/resume
并添加:
RESUME=/dev/mapper/vgubuntu-swap_1
编辑该文件/etc/default/grub
以使以以下内容开头的行GRUB_CMDLINE_LINUX_DEFAULT
看起来像:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/mapper/vgubuntu-swap_1"
接下来的两个命令将分别更新 intramfs 和 grub:
sudo update-initramfs -u -k all
sudo update-grub
sudo reboot
测试运行:
sudo systemctl hibernate
如果一切顺利,您的笔记本电脑应该进入休眠状态。
希望这可以帮助