LVM 이미지인 디스크 이미지를 마운트하는 스크립트가 있습니다. 그렇습니다:
x=`losetup -f` #create a loop device
echo $x > loopdev #echo that device to a file for later use
losetup $x disk.img #mount the disk.img to the loop device
kpartx -av $x #use kpartx to add the partition mappings
vgscan && vgchange -ay #vgscan the new mappings and make active
mount /dev/VolGroupRoot/LogVolRoot /mnt #mount the volgroup to /mnt
mount -o loop,offset=$((2048 * 512)) disk.img /mnt/boot #mount the boot partition in the image to /mnt/boot
이는 루핑 장치를 사용할 수 있는 경우 유용합니다.
또는 img를 제거하려면 다음을 실행합니다.
umount /mnt/boot #umount boot
umount /mnt #umount volgroup
vgchange -an VolGroupRoot #make volgroup inactive
x=`cat loopdev` #get my used loopdevice
kpartx -d $x #delete the partition mappings
losetup -d $x #detach the loop device
/bin/rm loopdev #remove the loopdev file in prep for the next time I mount something using the script.
오류 없이 실행되지만 나중에 사용하기 위해 항상 루프 장치를 제거하는 것은 아니라는 사실을 발견했습니다. losstup -a는 일반적으로 이전에 사용된 루프 장치가 여전히 테이블에 있음을 보여줍니다. dmsetup 정보에는 루프 장치가 표시되지 않지만 kthreadd가 해당 lsof를 보유하고 있는 것을 볼 수 있습니다. 따라서 재부팅하지 않고는 /dev/loop 장치를 제거할 수 있는 방법이 없는 것 같습니다. 이는 문제를 해결하는 데 큰 도움이 되는 것 같습니다. 결국에는 이 문제를 해결하기 위해 새로운 루핑 장비를 만들 수 있었지만(종종 그렇게 했습니다), 이는 지속 불가능하며 실제 문제를 해결하지 못합니다. 누구든지 이것을 보았거나 내가 시도할 수 있는 다른 것이 있습니까(fwiw, 이것은 3.18 및 4.1 커널 시스템에서 발생합니다).