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カーネルシステムで発生します)。