如果我检查操作系统中交换分区的使用情况(Ubuntu 14.04)
$ cat /proc/swaps
Filename Type Size Used Priority
$
我得到一个空结果。但这个分区实际上应该存在、命名/dev/sda6
且大小为 8 GB。
$ sudo parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
Model: ATA Hitachi HTS54323 (scsi)
Disk /dev/sda: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
32,3kB 1049kB 1016kB Free Space
1 1049kB 160GB 160GB primary ext4 boot
160GB 160GB 1048kB Free Space
2 160GB 320GB 160GB extended
5 160GB 312GB 152GB logical ext4
6 312GB 320GB 7997MB logical
320GB 320GB 352kB Free Space
在分区号 6 中,File system
为空,应该改为linux-swap
。这些分区是使用 Ubuntu 安装向导创建的。有什么不对?那么如何使用这 8 GB 空间作为交换分区呢?
根据评论中的要求,这是 的内容/etc/fstab
。
$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=bd20abfc-6ff1-4c3c-a77d-0e85f5c19af9 / ext4 errors=remount-ro 0 1
# /home was on /dev/sda5 during installation
UUID=29599282-3815-4aa7-80ba-9058898e7a73 /home ext4 defaults 0 2
# swap was on /dev/sda6 during installation
#UUID=c34d62e9-68e8-495a-869b-b107b5741c7e none swap sw 0 0
/dev/mapper/cryptswap1 none swap sw 0 0
在安装过程中,我选择加密我的主目录(然后我选择稍后进行加密,但我从未这样做过)。我也不记得交换的加密!我不需要加密的交换分区。
而且:
$ cat /etc/crypttab
cryptswap1 UUID=c34d62e9-68e8-495a-869b-b107b5741c7e /dev/urandom swap,cipher=aes-cbc-essiv:sha256
$ free -m
total used free shared buffers cached
Mem: 3005 2082 922 42 46 534
-/+ buffers/cache: 1500 1504
Swap: 0 0 0
答案1
正如 Jan Henke 所提到的,这是一个已知错误适用于 Ubuntu 14.04(和 12.04)。如果在安装过程中用户选择加密其主分区,则交换分区也会被加密,但它会被加密。无法使用到操作系统。
mkswap
由于感兴趣分区的加密,直接可能不起作用(如 Stephen Kitt 所建议)。
适用于我的系统的解决方案如下:
- 运行
sudo fdisk -l
并找到作为交换分区的分区。在本例中,/dev/sda6
将使用。如果您发现另一个分区,请使用其名称而不是sda6
在所有步骤中使用! 将其名称与安装期间(即加密之前)用作交换分区的分区进行比较,如
/etc/fstab
行 (1) 中所示# swap was on /dev/sda6 during installation
并确保它们是相同的。
跑
sudo -s
然后umount /dev/sda6
。跑步
mkswap /dev/sda6
。在输出中,应生成 UUID。使用那要运行的 UUID
echo "RESUME=UUID=143c43d8-0a77-4d62-a7ae-f53a8e0229a9" > /etc/initramfs-tools/conf.d/resume
(这里使用的UUID只是一个例子)。
跑步
echo "cryptswap1 /dev/sda6 /dev/urandom swap,cipher=aes-cbc-essiv:sha256" > /etc/crypttab
跑步
update-initramfs -u exit
重启。
重新启动后,验证您的系统是否确实使用交换分区。用cat /proc/swaps
或检查它swapon -s
。后一个命令的输出应如下所示:
Filename Type Size Used Priority
/dev/mapper/cryptswap1 partition 8787964 0 -1
这个解决方案来自这个链接。我根据 Stackexchange 指南在这里完全重写了它。
/etc/fstab
(1) 在我的问题中,我发布了我的文件的所有内容。
答案2
这是 Ubuntu 上加密交换的一个众所周知的问题。在默认设置中,通常无法在启动时安装交换区。
如果我没记错的话,您可以将noauto
选项添加到 中的交换条目/etc/fstab
,然后编辑/etc/rc.local
并将这些行添加到其中(在return 0
最后之前,保留这一点很重要)
sleep 1
swapon /dev/mapper/cryptswap1
这对我有用,但我不确定是否需要重新创建交换分区。我也不再使用 Ubuntu,所以上面的解决方案是我也受到这个问题影响时的记忆。
答案3
您需要执行以下命令:
# mkswap <Your_Swap_Partition>
# swapon <Your_Swap_Partition>
您刚刚创建了分区,但尚未使用文件系统类型进行格式化。