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/loop0man페이지에는 어떠한 힌트도 제공되지 않습니다.

답변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페이지 어딘가에 이것을 언급해야 할 것 같습니다 .

관련 정보