ループバック・デバイスの利用
で、ブロックデバイスを手動で作る手段にループバック・デバイスという機能があります。
Linuxキーワード - ループバック・デバイス:ITpro
まず最初に100MBのファイルを作ります。
# dd if=/dev/zero of=./disk bs=1M count=100 100+0 records in 100+0 records out 104857600 bytes (105 MB) copied, 1.44443 seconds, 72.6 MB/s
ddとは「ファイルの変換とコピーを行うコマンド」です。まぁこれだけじゃ言葉足らず過ぎるくらい多機能なコマンドだと思います。上記コマンドは「/dev/zero」というファイルを「disk」ファイルに「ブロックサイズ1M」で「100回繰り返し」コピーを行っています。つまり、上記コマンドは「100MBの空ファイルを新規作成する」ことになります。
※ windowsにはfsutilというコマンドで空ファイル作れます。HDDに0書き込みとかはできないけど…。
次にdiskファイルをext3でフォーマットします。
# mkfs.ext3 disk mke2fs 1.39 (29-May-2006) disk is not a block special device. Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 25688 inodes, 102400 blocks 5120 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67371008 13 block groups 8192 blocks per group, 8192 fragments per group 1976 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
最後にmountコマンドでループバック・デバイスとしてマウントします。
#mount -o loop -t ext3 disk /var/tmp/test
マウントされると、/etc/mtabに情報が記録されます。
# cat /etc/mtab /var/tmp/disk /mnt ext3 rw,loop=/dev/loop0 0 0
アンマウントコマンドは以下の通りです。
# umount -v /var/tmp/disk
終わり。
これに何か意味があるのか?と言われると、良く分かりません(汗 単にパーティション分割をしてるだけのような…。マウントしたイメージファイル内で作業すれば、イメージファイル1つ持ち歩くだけで作業ディレクトリ持ち運べますが。まぁこういう手法を覚えることは重要ですね。