循環装置が必要なのはなぜですか?

循環装置が必要なのはなぜですか?

私は以前にイメージファイルを作成し、ddそれを使用してファイルシステムを設定し、mkfsマウントされたmountパーティションとしてアクセスしました。後でlosetupループデバイスエントリを事前に作成して/devマウントするケースをインターネットでたくさん見ました。ループデバイスとして機能し、/dev同じ動作を得るために何も起こらず、独自のエントリを持つために実際に画像ファイルが必要な理由を理解できません。

要約:実際のシナリオでは/dev/loopX、アイテムなしでfsイメージをマウントできますが、アイテムが存在する必要があるのはなぜですか。循環装置の用途は何ですか?

ベストアンサー1

通常、インストールはブロックデバイスで実行する必要があります。ループドライバは、ブロックデバイスのフロントエンドをデータファイルに入れます。

ループインストールを実行しない場合、オペレーティングシステムはバックlosetupグラウンドでループインストールを実行します。

例えば

$ dd if=/dev/zero of=/tmp/foo bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.0798775 s, 1.3 GB/s
$ mke2fs /tmp/foo
mke2fs 1.42.9 (28-Dec-2013)
....


$ losetup    
$ mount -o loop /tmp/foo /mnt1    
$ losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         1  0 /tmp/foo
$ umount /mnt1
$ losetup
$ 

losetupファイルイメージにパーティションが含まれている場合は、直接呼び出す必要があります。

たとえば、次の画像があるとします。

$ fdisk -l /tmp/foo2      

Disk /tmp/foo2: 104 MB, 104857600 bytes, 204800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x1f25ff39

     Device Boot      Start         End      Blocks   Id  System
/tmp/foo2p1            2048      204799      101376   83  Linux

直接インストールできません。

$ mount -o loop /tmp/foo2 /mnt1
mount: /dev/loop0 is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error

losetupただし、次のようにするとkpartxパーティションにアクセスできます。

$ losetup -f /tmp/foo2
$ losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /tmp/foo2
$ kpartx -a /dev/loop0
$ mount /dev/mapper/loop0p1 /mnt1
$

おすすめ記事