LUKS 容器创建错误:无循环设备

LUKS 容器创建错误:无循环设备

我想创建一个加密的 LUKS 容器:

# dd if=/dev/random of=pvt.img bs=1M count=512
# cryptsetup -y luksFormat pvt.img

WARNING!
========
This will overwrite data on pvt.img irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
Cannot find a free loopback device.
Device pvt.img doesn't exist or access denied.

# ls /dev/loop*
ls: cannot access '/dev/loop*': No such file or directory

我没有任何循环设备(不知道为什么 - 这是一个 VPS),所以我尝试手动创建一个:

# mknod /dev/loop0 b 7 0
# ls -l /dev/loop0
brw-r--r-- 1 root root 7, 0 Jan  7 14:51 /dev/loop0

但是,当我再次尝试时,会出现同样的错误。

这里有什么问题?

答案1

您的系统可能缺少循环设备的驱动程序。通常,设备/dev/loop*会在驱动程序加载时由 udev 创建;手动创建/dev条目不会有帮助,因为驱动程序不存在。

检查是否/sys/module/loop存在。如果没有,则不会加载循环设备驱动程序。它可以作为一个模块提供:trymodprobe循环。如果这没有帮助,那么你的 VPS 就设置为没有循环模块,这在技术上是可行的,但让我觉得 VPS 服务的一个奇怪的选择。

也有可能循环驱动程序存在,但由于某种原因(可能是某处配置错误)设备/dev/loop-control不存在。该设备用于动态分配循环设备。

mknod -m 660 /dev/loop-control c 10 237

答案2

我创建了一个 Amazon EC2 实例并尝试了您想要执行的操作。它工作时没有任何循环错误。

以下是我采取的步骤:

dd if=/dev/zero of=test2 bs=1M count 512  : create 512MB blank file

sudo cryptsetup luksFormat test2      : asks for confirmation and passphrase

sudo mkdir /mnt/tmp                   : create a mount point

sudo chown -R ubuntu:ubuntu /mnt/tmp  : make sure I can write to mount point

sudo cryptsetup luksOpen test2  somename  : open luks container with a name

sudo mkfs.ext2 /dev/mapper/somename : create a filesystem in the luks container

sudo mount /dev/mapper/somename /mnt/tmp : mount containter, so it can be used

touch /mnt/tmp/MYTESTFILE   : create arbitrary file in container

echo "Some data to be double sure it works" > /mnt/tmp/MYTESTFILE : add content
________________________________________________________
Reboot the VPS, then after reboot log back in and check:
________________________________________________________

sudo cryptsetup luksOpen test2  somename   : open new container again

sudo mount /dev/mapper/somename /mnt/tmp   : mount it

ls /mnt/tmp                               : should see MYTESTFILE here

cat /mn/tmp/MYTESTFILE                    : show the data put in the file earlier

相关内容