Lostup -aを動作させるにはどうすればよいですか?

Lostup -aを動作させるにはどうすればよいですか?
# losetup /dev/loop0 /tmp/tmpuUwgbn
# losetup -a
# losetup -f
/dev/loop1
# losetup /dev/loop0
/dev/loop0: [0806]:33654 (/tmp/tmpuUwgbn)
# ls -la /tmp/tmpuUwgbn
-rw------- 1 root root 0 2011-08-24 15:49 /tmp/tmpuUwgbn
# losetup -a
#

知りながらなぜlosetup -a記載していないのですか?/dev/loop0このmanページには何のヒントもありません。

答え1

512Bより小さいバックアップファイルを持つループデバイスは、/proc/partitionslossupがループデバイスを見つけるために使用するにはリストされていません。ここにリストされていない理由は、このようなループデバイスを作成すると、ブロックサイズ(ループデバイスの場合は512B)よりも小さいブロックデバイスが得られるためだと思います。

したがって、Lostupとカーネルを使用すると、512B未満のループデバイスを作成できますが、とにかく使用できません(読み書きできませんblocksize --getsize returns 0)。そのようなデバイスでできる唯一のことは、私が理解している限り、サポートファイルを増やして呼び出すことです。これで、ループデバイスがlosetup -c /dev/loopXサポートファイル> = 512Bの場合に/proc/partitions表示されます$(losetup -a)

IMHO、これはlosetup -cカーネルがエラーを返すのではなく、<511Bバックアップファイルを使用してループデバイスの作成をサポートする理由です。

答え2

これは、losetup -a512バイト未満の関連ファイルを持つループデバイスが何らかの理由でリストされていないためです。

# losetup /dev/loop1 `mktemp`
# losetup -a
# losetup -d /dev/loop1
# t=`mktemp`; truncate --size 1 $t; losetup /dev/loop1 $t
# losetup -a
# losetup -d /dev/loop1
# t=`mktemp`; truncate --size 511 $t; losetup /dev/loop1 $t
# losetup -a
# losetup -d /dev/loop1
# t=`mktemp`; truncate --size 512 $t; losetup /dev/loop1 $t                    
# losetup -a
/dev/loop1: [0806]:33683 (/tmp/tmp.M0F7bovkxK)

なぜ?私が知っていたら良かったでしょう。このmanページのどこかにこれを言及する必要があるようです。

関連情報