我有一个程序可以使用随机密钥手动创建一个普通的 dm-crypt 交换卷,这似乎可以工作。这是一个 QEMU/Ubuntu 22.04 系统。然而,重新启动后没有交换,所以我可能得到了我的/etc/crypttab
和/或/etc/fstab
,或其他东西,不正确。任何意见表示赞赏。
工作手册设置是:
# swapoff -a
# cryptsetup --type plain open /dev/mapper/vg0-swap encswap
# mkswap /dev/mapper/encswap
# /etc/init.d/cryptdisks start
# swapon /dev/mapper/encswap
# swapon -s
Filename Type Size Used Priority
/dev/dm-3 partition 2097148 0 -2
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 13G 0 part
│ ├─vg0-swap 253:0 0 2G 0 lvm
│ │ └─encswap 253:3 0 2G 0 crypt [SWAP]
│ ├─vg0-data 253:1 0 36.1G 0 lvm /data
│ └─vg0-root 253:2 0 10.9G 0 lvm /
└─sda4 8:4 0 36G 0 part
└─vg0-data 253:1 0 36.1G 0 lvm /data
sr0 11:0 1 4M 0 rom
# cryptsetup status /dev/mapper/encswap
/dev/mapper/encswap is active and is in use.
type: PLAIN
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
key location: dm-crypt
device: /dev/mapper/vg0-swap
sector size: 512
offset: 0 sectors
size: 4194304 sectors
mode: read/write
因此,为了使其持久,/etc/crypttab
包含:
swap /dev/mapper/encswap /dev/urandom plain,cipher=aes-xts-plain64,size=256,hash=sha256,swap,noearly
并/etc/fstab
包含:
/dev/mapper/swap none swap sw 0 0
当系统启动dm-crypt
或systemd
运行默认的 90 秒超时时,似乎正在等待一个永远不会到达的密钥。系统日志也说了同样的事情——超时等待/dev/mapper/encswap
。启动完成后,swapon -s
不显示任何内容,并且lsblk
不显示encswap
设备(或任何交换设备)。有任何想法吗?
你的
/etc/crypttab
样子不对:第二个字段应该是包含加密数据的设备,即
/dev/mapper/vg0-swap
. 我认为无效noearly
,所以尝试一下您可以通过运行进行调试
/usr/lib/systemd/system-generators/systemd-cryptsetup-generator
。这将读取/etc/crypttab
并创建一个单元文件/tmp
;找到该文件,然后直接运行其中的启动命令。这将为您提供更有用的日志记录/调试输出。