Ubuntu 20.04.01,全盘加密、btrfs 和休眠?

Ubuntu 20.04.01,全盘加密、btrfs 和休眠?

我正在尝试在我的桌面上安装 *20.04.01,并使用完整(或者像 Tj 所说的那样几乎完整)的磁盘加密,包括允许休眠的加密交换分区和 btrfs。

过去几年我一直在使用手动全系统加密但即使我小心确保在更新后 grub 修复脚本自动运行之前不要关闭系统,这些更新或 *Windows 更新(如果是双启动)也会破坏 grub,所以我经常不得不启动到实时 USB 并运行 fix-grub.sh。

昨天我关注了Tj的全盘加密方法2019但当我要格式化 /dev/mapper/ubuntu--vg-root 时,我搜索了一下是否需要做任何额外的事情才能使用 btrfs 和 ext3。从那时起,我了解到使用 btrfs 并不像从下拉列表中选择另一个文件系统那么简单。

接下来我来到了 Willi Mutschler 的Ubuntu 20.04 带有 btrfs-luks 全盘加密,包括 /boot 和带有 Timeshift 的自动 apt 快照这与 Tj 的非常相似,尽管它包括许多用于优化 btrfs 和 SSD 的额外步骤。这几乎完美地满足了我的意图,唯一的问题是 Willi 将其设置为使用随机密码加密交换,因为他不使用休眠:

export SWAPUUID=$(blkid -s UUID -o value /dev/vda2)echo "cryptswap UUID=${SWAPUUID} /dev/urandom swap,offset=1024,cipher=aes-xts-plain64,size=512" >> /etc/crypttab
cat /etc/crypttab
# cryptdata UUID=8e893c0f-4060-49e3-9d96-db6dce7466dc none luks
# cryptswap UUID=9cae34c0-3755-43b1-ac05-2173924fd433 /dev/urandom swap,offset=1024,cipher=aes-xts-plain64,size=512

他引用了 Archlinux 的dm-crypt/Swap 加密我已经查看过它了,看起来我需要设置某种用于交换的钩子,但我无法对此做出更多的理解。

昨晚我发现了 Félix Saparelli 的使用 Btrfs、交换和休眠功能进行全盘加密。它提供了设置加密交换的命令,但没有提供其余安装的命令,所以我今天计划尝试将它与 Willi 的指南结合使用以实现我想要的安装。

我想发帖询问这是不是最好的方法,或者是否有更好的方法或更完整的指南?

编辑:操作方法 - 使用全盘加密安装 GPT/UEFI:具有单独根、主卷和 pkg 子卷的 BTRFSonLUKS;使用交换文件休眠;自动快照,可轻松回滚系统(GUI);启动到快照描述了我想要获得的安装类型,尽管我不确定如何更改它以适用于 Ubuntu。

*我更愿意在我的桌面上安装 Ubuntu 服务器版本,然后手动安装我的桌面环境,因为我读到这是一个比最小安装更精简的 Ubuntu 版本。不幸的是,当按照 Tj 的指南(该指南不适用于服务器)操作时,在选择分区后安装程序出错。Willi 的指南引用了 /usr/lib/partman 中用于优化 btrfs 的文件,但该文件不包含在服务器安装程序中,并且其他任何地方都不存在相同的文件,而且似乎我无法只安装 partman 的软件包。

*我在使用 VeraCrypt 加密的同一驱动器上运行 Windows 10 安装程序。这次我没有进行双重启动。

答案1

交换文件和休眠

一台计算机可以有多个交换分区,并且全新安装的 Ubuntu 将使用它们全部,即使它们没有在 fstab 中列出,此外,如果在 fstab 中列出,计算机可以使用单个交换文件。

即使是实时和持久可启动 USB 设备也将使用它们找到的所有交换分区。

只要计算机上没有现有的交换分区,Ubuntu 20.04 就会在安装过程中创建交换文件。

一旦将交换文件添加到 fstab,计算机将不会使用 fstab 中未列出的任何交换分区。

安全:

交换文件是根分区的一部分,并会自动随根分区一起加密。

要用交换文件替换交换分区:

  • 检查正在使用的交换:

    sudo swapon -s

  • 如果找到交换分区:

    sudo swapoff -a

    sudo nano -Bw /etc/fstab

  • 在交换分区的 UUID 前添加“#”:

    # UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX none swap sw 0 0

  • 为交换文件添加一行:

    swapfile none swap sw 0 0

  • 创建交换文件:

    sudo fallocate -l XG /swapfile

其中 X 是交换文件大小(以 GB 为单位)

    sudo chown 0 /swapfile

    sudo chmod 0600 /swapfile

    sudo mkswap /swapfile

    sudo swapon /swapfile
  • 重启:

    sudo reboot

启用休眠模式:

  • 根据需要增加交换文件大小以匹配 RAM 大小,最高可达 8GB。

  • 编辑 /etc/default/grub 以将恢复位置和偏移量添加到 grub.cfg:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX resume_offset=XXXXX"

  • 从 root 使用 UUID。你可以使用以下命令找到它:findmnt / -o UUID

  • 使用偏移量sudo filefrag -v /swapfile |grep " 0:"| awk '{print $4}'

  • 更新 GRUB

    sudo update-grub

  • 测试休眠

    sudo systemctl hibernate

可以使用 gnome 扩展添加休眠按钮。

笔记:

  • 使用 fallocate 创建交换文件时,可能会出现一些漏洞。可以搜索 /var/log/syslog 中的短语swapon: swapfile has holes以确保不会丢失数据。

答案2

在 reddit 用户 /u/hack1z0 的帮助下,我能够通过交换文件配置从休眠状态恢复 Ubuntu Mate 20.04.1(使用 Willi Mutschler 的指南安装),步骤如下:

创建交换文件时,请使其足够大(对于我的 16GB RAM,Ubuntu 建议 20GB,但我坚持 2x 规则并选择了 32GB)。

根据计算恢复偏移量休眠至 Btrfs 上的交换文件

从 /etc/fstab 获取 /swap 子卷的 UUID。

在 /etc/default/grub 中,编辑行“编辑行:GRUB_CMDLINE_LINUX_DEFAULT=""' 改为类似于:'GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=X resume_offset=X quiet splash"',其中 X 值是前面步骤中的值。

sudo 更新 grub

至少对于这次安装,与其他文档相反,不需要编辑 initramfs,只需重新启动即可。

相关内容