# 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/partitions
lossupがループデバイスを見つけるために使用するにはリストされていません。ここにリストされていない理由は、このようなループデバイスを作成すると、ブロックサイズ(ループデバイスの場合は512B)よりも小さいブロックデバイスが得られるためだと思います。
したがって、Lostupとカーネルを使用すると、512B未満のループデバイスを作成できますが、とにかく使用できません(読み書きできませんblocksize --getsize returns 0
)。そのようなデバイスでできる唯一のことは、私が理解している限り、サポートファイルを増やして呼び出すことです。これで、ループデバイスがlosetup -c /dev/loopX
サポートファイル> = 512Bの場合に/proc/partitions
表示されます$(losetup -a)
。
IMHO、これはlosetup -c
カーネルがエラーを返すのではなく、<511Bバックアップファイルを使用してループデバイスの作成をサポートする理由です。
答え2
これは、losetup -a
512バイト未満の関連ファイルを持つループデバイスが何らかの理由でリストされていないためです。
# 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
ページのどこかにこれを言及する必要があるようです。