- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!技術的雑談-Linuxでのディスクイメージファイルのマウント
!!環境
Linux kernel 2.4/2.6
確認したのはRedHat Enterprise Linux
!!目的
*ディスクにイメージファイルを作成し、ファイルシステムとしてマウントしたい
!!手段
losetupコマンドを使います。
!!手順
Linuxでは「loop device」というものが用意されています。
これはファイルなどがアタッチされることによって使用可能になる擬似デバイスです。
FreeBSDで言うところのvnconfigコマンドのようなものです。(今はmdconfigだっけか?)
linuxのloop deviceは/dev/loop*に0から始まる番号で存在します。
まず、イメージファイルを作成します。
仮にフロッピーと同じ大きさのディスクイメージが必要な場合、ddコマンドなどでその大きさのファイルを確保します。
$ dd if=/dev/zero of=''/some/where/in/filesystem''/test.img bs=1024 count=1440
※ ブロックサイズ、カウントは適当ですが、1.4MBより小さいとmsdosフォーマットはできないようです。
次にloopデバイスに関連付けます。
root権限が必要です。
# losetup /dev/loop0 ''/some/where/in/filesystem''/test.img
RHELの場合、なぁ〜んも言わずにコマンドが帰ってきます。
本当にloop deviceに関連付けられたのか確認しましょう。
# losetup /dev/loop0
/dev/loop0: [0308]:278601 (/some/where/in/filesystem/test.img) オフセット 0, no encryption
これが出てくればOKみたいです。
関連付けがされていない場合は、
# losetup /dev/loop1
loop: デバイス /dev/loop1 の情報を取得できません: そのようなデバイスやアドレスはありません
と表示されます。
ls -l /dev/loop1とやると一応ファイルとしては存在することになっているのですが、losetupからは「無いこと」になっているらしいです。
で、loop deviceにファイルが関連付けられたら、そこにファイルシステムを掘ります。
# mkfs -t vfat /dev/loop0
ここまでいけば後は普通にmountするだけです。
# mount -t vfat /dev/loop0 /mnt/test
ちなみに、普通は自動的に行われるみたいですが、lsmodで「loop」モジュールがロードされていないとダメです。
loop deviceが不要になったら、unmountしてから、
# losetup -d /dev/loop0
でファイルとの関連付けを削除できます。
尚、loop device作成の時に「-e」オプションをつけることでイメージファイルを暗号化したりできるみたいです。
試してないけど。
!!履歴
2006/02/02 -- 初版
[[技術的雑談]]へ戻る
!!突っ込み
{{comment}}
[[技術的雑談]]へ戻る
{{trackback}}
[[技術的雑談]]へ戻る