![丢失交换分区](https://linux22.com/image/863899/%E4%B8%A2%E5%A4%B1%E4%BA%A4%E6%8D%A2%E5%88%86%E5%8C%BA.png)
几天前我设置了一个新的 Ubuntu 分区。昨天我安装了 Kubuntu 桌面来替换 Unity。
自从我安装了新桌面后,Linux 交换分区就不再起作用,甚至无法识别为交换分区。我不知道怎么会这样。
你们中有人知道如何解决这样的问题吗?我知道这与有关/etc/fstab
,但真的不知道该怎么做。
交换分区为 4GB,是在安装 Ubuntu 时设置的。
如果有帮助的话,结果如下: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/sda7 during installation
UUID=345e5bbd-d951-4376-8f4b-724be9d0417b / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda5 during installation
UUID=9669db10-3a55-47cd-8c49-e8e4520ca2d3 /boot ext4 defaults 0 2
# /home was on /dev/sda8 during installation
UUID=38b3f3ac-c96b-4f01-8fcf-eac44c6ed28f /home ext4 defaults 0 2
# swap was on /dev/sda6 during installation
#UUID=6ea517a3-a80a-4acb-bea9-4efea2a71acf none swap sw 0 0
/dev/mapper/cryptswap1 none swap sw 0 0
编辑:由于存在以下问题:cat /etc/crypttab
cryptswap1 UUID=6ea517a3-a80a-4acb-bea9-4efea2a71acf /dev/urandom swap,cipher=aes-cbc-essiv:sha256
答案1
尝试按照以下步骤重新创建交换分区:
步骤1。格式/dev/sda6
为有效交换mkswap /dev/sda6
第2步。激活交换方式swapon /dev/sda6
步骤3.另外修改/etc/fstab
为每次启动后都启动 swap。交换线可能已经存在。您只需要更新UUID
步骤 1 的输出中的 received 即可。
例如,在您的情况下删除这些行(如果你不想要加密交换分区):
#UUID=6ea517a3-a80a-4acb-bea9-4efea2a71acf none swap sw 0 0
/dev/mapper/cryptswap1 none swap sw 0 0
并在末尾添加此行,其中包含在步骤 1 中获得的 NEW UUID:
UUID=0c9f1cb4-a539-4ca4-8eb2-712d0efc3d10 none swap sw 0 0
看这里我的答案是
如果您想保留加密的交换分区,请执行以下步骤:
首先,我们需要知道你的交换文件在硬盘上的什么位置。
dmesg
可以在这里提供帮助(或者你也可以检查/etc/fstab
)因此,在您的情况下,您可以看到交换已打开
/dev/sda6
。下一步要做的是确保系统完全更新,关闭交换,以便我们可以使用分区并安装必要的文件。确保用您从上述步骤中/dev/sda6
获得的分区dmesg
(或 )替换:/etc/fstab
sudo apt-get update sudo apt-get upgrade sudo swapoff /dev/sda6 sudo apt-get install lvm2 cryptsetup
接下来,加载模块并验证其运行。
$ sudo modprobe dm-crypt
你应该看到类似下面的内容
$ sudo lsmod | egrep 'aes|dm_crypt' dm_crypt 12928 0 aes_i586 8124 1 aes_generic 27484 1 aes_i586
现在我们通过用随机数据填充分区来清除现有数据。这样做有两个目的,首先是为了覆盖任何旧的未加密数据,其次是为了在分析驱动器时不让加密数据显眼。我的意思是,如果您有 750 MB 的未使用交换空间,而只使用了 250 MB,那么您驱动器的 3/4 将不包含任何数据,只有零。这会使加密数据显得格格不入。如果您用随机数据填充驱动器,加密数据就会“混入”其中
$ sudo dd if=/dev/urandom of=/dev/sda6 bs=1M
再次,用从或
/dev/sda6
获得的分区替换。此命令将需要一段时间(大约 10 分钟左右),并应产生类似以下的输出:dmesg
fstab
dd: writing `/dev/sda6': Input/output error 1028+0 records in 1027+0 records out 1077510144 bytes (1.1 GB) copied, 642.306 s, 1.7 MB/s
然后您需要告诉
crypttab
将分区设置为加密交换,再次确保更改/dev/sda6
为您的分区:sudo echo cryptoswap /dev/sda6 /dev/urandom cipher=aes-cbc-essiv:sha256,size=256,hash=sha256,swap >> /etc/crypttab
接下来,编辑
/etc/fstab
文件并搜索包含“swap”的行。通过#
在行首插入一个字符来注释掉该行,然后插入以下行并保存文件:/dev/mapper/cryptoswap none swap sw 0 0
现在您的系统已设置了加密交换。重新启动系统以使更改生效并启动加密交换。为了确保启动后交换分区已加密,您可以
dmesg
再次检查,它应该特别提到 cryptoswap:dmesg | grep swap [ 73.063397] Adding 979924k swap on /dev/mapper/cryptoswap. Priority:-1 extents:1 across:979924k
如果您在启动时注意到延迟,或者看到“等待交换”之类的消息,请稍微移动鼠标。这意味着系统熵值较低,无法生成用于加密初始化的随机数据。这应该只需要一两秒钟。
答案2
αғsнιη 的回答走在正确的轨道上,但忘记摆脱crypttab
条目,也没有详细解释如何改变fstab
:
尝试按照以下步骤重新创建交换分区:
格式
/dev/sda6
为有效交换mkswap /dev/sda6
激活交换方式
swapon /dev/sda6
进而:
fstab
删除( )的最后一行/dev/mapper/cryptswap1 none swap sw 0 0
,取消注释上一行,并将 UUID 替换为新格式化的交换设备的 UUID,例如:UUID=0c9f1cb4-a539-4ca4-8eb2-712d0efc3d10 none swap sw 0 0
删除或注释该行,
/etc/crypttab
或者删除或重命名该文件。
您还可以重用旧的交换分区 UUID,如果您在步骤 1 中执行以下操作:
mkswap --uuid 6ea517a3-a80a-4acb-bea9-4efea2a71acf /dev/sda6