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。そうしないと、ループデバイスドライバはロードされません。モジュールとして使用できます。modprobeループを試してみてください。それでも役に立たない場合は、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

関連情報