暗号化された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