使用具有交换分区的计算机创建完整安装 USB 驱动器时,安装程序 Ubiquity 会格式化计算机上的每个交换分区并将其路径添加到 fstab。这包括计算机上现有的交换分区和安装过程创建的交换分区。
如果计算机上已有交换分区,Ubiquity 不会为 USB 驱动器创建新的交换文件。如果在没有交换分区的计算机上启动 USB 驱动器,则没有可用的交换空间。
我该怎么办?我应该创建一个新的交换文件并将其添加到 fstab 吗?如果是这样,我应该从 fstab 中删除任何现有的交换分区还是应该保留它们?是否存在安全问题,下一个使用计算机的人是否可以复制我的交换数据、银行账户等?
答案1
可启动 USB 和交换空间
一台计算机可以有多个交换分区,并且全新安装的 Ubuntu 将使用它们全部,即使它们没有在 fstab 中列出,此外,如果在 fstab 中列出,计算机可以使用单个交换文件。
即使是实时和持久可启动 USB 设备也将使用它们找到的所有交换分区。
只要计算机上没有交换分区,Ubuntu 20.04 就会在安装过程中创建交换文件。(这是安装时拔下内置 HDD/SSD 的另一个原因)。
一旦将交换文件添加到 fstab,计算机将不会使用 fstab 中未列出的任何交换分区。
安全:
闪存驱动器很容易丢失或放错。如果您使用 U 盘处理敏感数据,则驱动器应完全加密。
交换分区可以像任何其他文件或分区一样被复制或克隆。
交换文件是根分区的一部分,并会自动随根分区一起加密。
使用可启动 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 mkswap /swapfile
sudo chmod 0600 /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。
使用偏移量
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
恢复偏移量=303104
更新 GRUB
sudo update-grub
测试休眠
sudo systemctl hibernate
可以使用 gnome 扩展添加休眠按钮。
笔记:
使用 fallocate 创建交换文件时,可能会出现一些漏洞。可以搜索 /var/log/syslog 中的短语
swapon: swapfile has holes
以确保不会丢失数据。为了最大程度地成功恢复,请将 USB 插入休眠时所在的同一插槽。当 USB 处于休眠状态时,从其自己的操作系统运行主机应该没问题。