使用带有交换分区的计算机创建完整安装 USB 驱动器时,安装程序 Ubiquity 会格式化计算机上的每个交换分区并将其路径添加到 fstab。这包括计算机上现有的交换分区和安装过程创建的交换分区。
如果计算机上存在现有交换分区,Ubiquity 不会为 USB 驱动器创建新的交换文件。如果 USB 驱动器随后在没有交换分区的计算机上启动,则没有可用的交换空间。
我应该怎么办?我应该创建一个新的交换文件并将其添加到 fstab 吗?如果是这样,我应该从 fstab 中删除任何现有的交换分区还是应该保留它们?是否存在安全问题,下一个使用计算机的人可以复制我的掉期数据、银行账户等吗?
可启动 USB 和交换空间
一台计算机可以有多个交换分区,并且全新安装的 Ubuntu 将全部使用它们,即使它们未在 fstab 中列出,此外,如果计算机在 fstab 中列出,则可以使用单个交换文件。
即使是 Live 和 Persistent 可启动 USB 设备也会使用他们找到的所有交换分区。
只要计算机上没有交换分区,Ubuntu 20.04 就会在安装过程中创建一个交换文件。(这是安装时拔下内部 HDD/SSD 的另一个原因)。
将交换文件添加到 fstab 后,计算机将不会使用 fstab 中未列出的任何交换分区。
安全:
闪存驱动器很容易丢失或放错地方。如果您在处理敏感数据时使用 pendrive,则该驱动器应完全加密。
交换分区可以像任何其他文件或分区一样被复制或克隆。
交换文件是根分区的一部分,并自动与它一起加密。
使用可启动 USB 时,加密其他人计算机上的交换分区通常不是一个好主意。为防止任何数据留在主机的交换分区中,应使用交换文件或至少应在退出前关闭交换:
sudo swapoff -a
.用可引导 USB 上的交换文件替换交换分区:
检查正在使用的交换:
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 reboot
要启用休眠:
根据需要增加交换文件大小以匹配 RAM 大小,最高可达 8GB。
编辑 /etc/default/grub 以将恢复位置和偏移量添加到 grub.cfg:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX resume_offset=XXXXX"
从根目录使用 UUID。
使用偏移量
sudo filefrag -v /swapfile
cscameron@cscameron-T:~$ filefrag -v /swapfile Filesystem type is: ef53 File size of /swapfile is 4819255296 (1176576 blocks of 4096 bytes) ext: logical_offset: physical_offset: length: expected: flags: 0: 0.. 0: 303104.. 303104: 1: 1: 1.. 2047: 303105.. 305151: 2047: unwritten 2: 2048.. 4095: 311296.. 313343: 2048: 305152: unwritten
resume_offset=303104
更新 GRUB
sudo update-grub
测试休眠
sudo systemctl hibernate
可以使用 gnome 扩展添加休眠按钮。
笔记:
使用 fallocate 创建交换文件时,可能会在交换文件中出现漏洞。可以在 /var/log/syslog 中搜索该短语
swapon: swapfile has holes
以确保不会丢失数据。为了获得成功恢复的最佳机会,请将 USB 插入休眠时所在的同一插槽。当 USB 处于休眠状态时,从它自己的操作系统运行主机应该是可以的。