ループバックデバイス (losetup)
前提として ArchLinux 上で。ただし Ubuntu Debian などのほかのLinuxでも似たようなものかと思われます。
基本のき
作成
user$ dd if=/dev/zero of=loop1.img bs=1M count=100 (イメージ作成 fallocate -l 100M loop1.img でもよい) user$ sudo losetup /dev/loop0 loop1.img (loop1.imgを loop0 に紐づけ) user$ sudo mkfs.ext4 /dev/loop0 (ファイルシステム作成) user$ sudo mkdir /mnt/loop0; sudo mount -t ext4 /dev/loop0 /mnt/loop0 (マウントする)
削除
user$ sudo umount /mnt/loop0 user$ sudo losetup -d /dev/loop0 (紐づけを解除) user$ shred -z -v -u loop1.img (ファイル抹消)
基本のき 別解
losetup -fP でファイルをパーティション検出ありでやる方法
作成
ファイルを割り当て
user$ fallocate -l 2G Disk2G.img (2GBファイルを作成) user$ ls -l Disk2G.img (ファイルを確認) user$ sudo losetup -fP ./Disk2G.img (割当実施) user$ sudo losetup -l (割当結果を確認)
fdisk / gdisk + mkfs + mount
loop0 に割り当てられたと仮定
user$ sudo fdisk /dev/loop0 (適当にパーティションを確保する たとえば 512M FAT16, 512M ext4) user$ sudo mkfs.vfat -F 16 /dev/loop0p1; sudo mkfs.ext4 /dev/loop0p2 user$ sudo mkdir -p /tmp/mnt; sudo mkdir -p /tmp/mnt/fat; sudo mkdir -p /tmp/mnt/ext4; sudo mount -t msdos /dev/loop0p1 /tmp/mnt/fat; sudo mount /dev/loop0p2 /tmp/mnt/ext4;
割当全解除
user$ sudo umount /tmp/mnt/fat; sudo umount /tmp/mnt/ext4 user$ sudo losetup -D (大文字のDオプションで losetup は全部解除)
応用
qcow2 をマウントする
user$ qemu-img create -f qcow2 ./Disk2G.qcow2 2G user$ sudo modprobe nbd max_part=8 user$ sudo qemu-nbd --connect=/dev/nbd0 ~/Disk2G.qcow2 user$ sudo fdisk /dev/nbd0 -l (ここでfdiskとかgdiskとかいろいろやる。あと sudo mkfs.ext4 /dev/nbd0p1 とか user$ sudo mkdir /tmp/mnt/; sudo mount /dev/nbd0p1 /tmp/mnt (ここから終わらせ方) user$ sudo umount /tmp/mnt user$ sudo qemu-nbd -d /dev/nbd0
暗号化、LUKSつき
- 最初は基本と共通
user$ dd if=/dev/zero of=loop1.img bs=1M count=100 user$ sudo losetup /dev/loop0 loop1.img ここからちょっと発展 user$ sudo cryptsetup luksFormat /dev/loop0 (YES と、パスフレーズを入力) user$ sudo cryptsetup luksOpen /dev/loop0 MyCryptTest (パスフレーズをいれる) user$ sudo mkfs.ext4 /dev/mapper/MyCryptTest (ファイルシステム作成) user$ sudo mkdir /mnt/loop0; sudo mount -t ext4 /dev/mapper/MyCryptTest /mnt/loop0 (マウントする)
- 削除例
user$ sudo umount /mnt/loop0 user$ sudo cryptsetup luksClose MyCryptTest user$ sudo losetup -d /dev/loop0 user$ shred -z -v -u loop1.img
truecryptとか
- どっかから .tc か .hc をもってくる (仮に test.tc とする)
user$ sudo losetup /dev/loop0 test.tc user$ sudo cryptsetup open --type tcrypt /dev/loop0 MyCryptTest (パスワード入力) user$ sudo mkdir /mnt/loop0; sudo mount -t vfat /dev/mapper/MyCryptTest /mnt/loop0 (vfatでマウントする例) user$ ls /mnt/loop0 (ファイル内容を確認)
- 削除例
user$ sudo umount /mnt/loop0 user$ sudo cryptsetup close MyCryptTest user$ sudo losetup -d /dev/loop0 user$ rm test.tc