丢失交换分区

丢失交换分区

几天前我设置了一个新的 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 分钟左右),并应产生类似以下的输出:dmesgfstab

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

尝试按照以下步骤重新创建交换分区:

  1. 格式/dev/sda6为有效交换mkswap /dev/sda6

  2. 激活交换方式swapon /dev/sda6

进而:

  1. fstab删除( )的最后一行/dev/mapper/cryptswap1 none swap sw 0 0,取消注释上一行,并将 UUID 替换为新格式化的交换设备的 UUID,例如:

    UUID=0c9f1cb4-a539-4ca4-8eb2-712d0efc3d10 none  swap  sw  0 0
    
  2. 删除或注释该行,/etc/crypttab或者删除或重命名该文件。

您还可以重用旧的交换分区 UUID,如果您在步骤 1 中执行以下操作:

mkswap --uuid 6ea517a3-a80a-4acb-bea9-4efea2a71acf /dev/sda6

相关内容