带登录密码+休眠的加密分区(LUKS)

Mlo*_*k97 5 encryption hibernate swap login luks

在我公司的笔记本电脑上,我安装了 Windows 11,它具有加密磁盘,处于休眠状态,我只需在登录时提供一次密码。我想在我的个人笔记本电脑上安装 Ubuntu。RN 我有 Ubuntu 20.04。其中有些混乱,所以我想全新安装 Ubuntu 22.04。并且想知道加密分区的最佳和最简单的方法(LUKS,或者其他什么?),这将允许我跳过 GRUB,并在使用登录密码登录时解锁磁盘/分区。同时我需要/需要一个有效的休眠状态。请注意,我不使用交换文件而是分区。

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
Run Code Online (Sandbox Code Playgroud)

但它有效,因为我没有加密交换。我像GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/nvme0n1p3"/etc/default/grub文件中一样设置了恢复参数,但是现在当我打开计算机时,GRUB 菜单会显示,即使 Ubuntu 只是我个人笔记本电脑上的系统,我想跳过这一步。

我尝试在 VM(QEMU/KVM)中安装 Ubuntu 22.04。使用加密虚拟磁盘(LUKS),该安装程序为我提供了 LVM 分区的选项,但是当我这样做时,我需要给它密码两次,一次用于解锁磁盘/分区,第二次在登录时,我认为这很烦人并且希望我能只给它一次密码。

所以我正在解决两个问题,使休眠与加密的交换一起工作,并使分区的解锁与登录密码一起工作。有人能帮助我吗?

use*_*186 4

这个答案是为了使用加密的交换分区启用休眠。此答案不涉及使用 TPM 或其他绕过 LUKS 密码提示的方法。

\n

使用 LUK 加密交换分区进行休眠

\n

概要和参考文献

\n

首先增加交换分区:

\n

更改加密 LVM 上的交换大小?(kubuntu 20.04安装)

\n

第二次启用休眠

\n

增加加密交换的大小\n https://gist.github.com/tjvr/f82004565139a5b13031af1ce5a50a02

\n

1.减少root并增加swap分区

\n

介绍

\n

使用默认安装过程在笔记本电脑上安装 Ubuntu。在高级选项下选择 LUKS(和 LVM)。测试系统以确保一切正常。

\n

我的笔记本电脑在安装过程中拥有 4GB RAM 和 1GB 加密交换分区。我使用了以下公式:

\n

新交换分区大小 = RAM 大小 + Sqrt(RAM 大小)

\n

所以我需要 6GB 交换空间。也就是说,我需要向现有交换分区添加 5GB。

\n

实际过程

\n

注意:分区号、逻辑卷名称等来自没有其他操作系统的笔记本电脑上干净默认安装的 Ubuntu 22.04(带加密)。YMMV。

\n

从 Ubuntu Live Installation USB 启动并使用“Try Ubuntu”选项。

\n

打开终端并以超级用户身份运行后续命令

\n
sudo su\n
Run Code Online (Sandbox Code Playgroud)\n

加密设备不应被解锁。验证:

\n
lsblk \n
Run Code Online (Sandbox Code Playgroud)\n

输出不应有任何cryptlvm

\n

解锁加密设备

\n
cryptsetup open /dev/sda4 crypt \n
Run Code Online (Sandbox Code Playgroud)\n

出现提示时输入 LUKS 密码。

\n

获取逻辑卷标识符

\n
lsblk\n\n# \xe2\x94\x94\xe2\x94\x80sda4                  8:6    0 464,6G  0 part\n#   \xe2\x94\x94\xe2\x94\x80sda4_crypt        253:0    0 464,5G  0 crypt\n#     \xe2\x94\x9c\xe2\x94\x80vgubuntu-root   253:1    0 463,6G  0 lvm   /\n#     \xe2\x94\x94\xe2\x94\x80vgubuntu-swap_1 253:2    0   980M  0 lvm   [SWAP]\n
Run Code Online (Sandbox Code Playgroud)\n

缩小逻辑根卷和文件系统。

\n
lvresize --verbose --resizefs -L -5G /dev/mapper/vgubuntu-root\n\n# `lvresize` <volume> => resize a logical volume\n#   --verbose  => Give more info.\n#   --resizefs => Resize filesystem AND LV with fsadm(8).\n#   -L         => Specifies the new size of the LV, \n#                 +/- add/subtracts to/from current size, g|G is GiB.\n
Run Code Online (Sandbox Code Playgroud)\n

检查逻辑根卷的文件系统是否有错误

\n
e2fsck -f /dev/mapper/vgubuntu-root\n\n# `e2fsck`<fs-path> => Check a Linux ext2/ext3/ext4 file system\n#   -f => Force checking even if the file system seems clean.\n
Run Code Online (Sandbox Code Playgroud)\n

增加交换大小

\n
lvresize --verbose -L +5G /dev/mapper/vgubuntu-swap_1\n
Run Code Online (Sandbox Code Playgroud)\n

关闭终端并重新启动到内部 LUKS 加密驱动器。

\n

该命令free显示旧的交换大小。

\n

来源:增加加密交换的大小

\n

终端中的以下命令应该可以解决此问题:

\n
sudo swapoff -a  \nsudo cryptsetup resize vgubuntu-swap_1\nsudo mkswap /dev/mapper/vgubuntu-swap_1 \nsudo swapon -a \n
Run Code Online (Sandbox Code Playgroud)\n

再次使用该free命令来验证您是否具有所需的交换大小。

\n

2.启用Hibernate交换

\n

注意:我不必对 /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla 问题中提到的文件进行任何更改(或创建)。

\n

编辑文件/etc/initramfs-tools/conf.d/resume并添加:

\n
RESUME=/dev/mapper/vgubuntu-swap_1\n
Run Code Online (Sandbox Code Playgroud)\n

编辑该文件/etc/default/grub以使以以下方式开头的行GRUB_CMDLINE_LINUX_DEFAULT看起来像:

\n
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/mapper/vgubuntu-swap_1"\n
Run Code Online (Sandbox Code Playgroud)\n

接下来的两个命令将分别更新intramfs和grub:

\n
sudo update-initramfs -u -k all\nsudo update-grub\nsudo reboot\n
Run Code Online (Sandbox Code Playgroud)\n

测试运行:

\n
sudo systemctl hibernate\n
Run Code Online (Sandbox Code Playgroud)\n

如果一切顺利,您的笔记本电脑应该会休眠。

\n

希望这可以帮助

\n