ループデバイスからパーティションデバイスを削除する方法


3

ループデバイスを介してディスクイメージをマウントします(losetup -f image.img)。それはパーティションテーブルを含み、私はカーネルにそれを読むように強制します:partprobe / dev / loop1。

/ dev / loop1p1をマウントし、修正したいものを修正し、ファイルシステムをアンマウントします。ループバックデバイスからファイルを削除しました(losetup -d / dev / loop1)。しかし/ dev / loop1p1は消えません。

私は、ldviceの再作成、fdiskによるパーティションテーブルの追加、削除を試みました。しかし、私の試みはすべて失敗しました。

パーティションテーブルが変更されました。

ioctl()を呼び出してパーティションテーブルを再読み込みします。

警告:パーティションテーブルの再読み込みはエラー22:失敗した引数で失敗しました。カーネルはまだ古いテーブルを使用しています。新しいテーブルは、次回の再起動時、またはpartprobe(8)またはkpartx(8)の同期ディスクの実行後に使用されます。

パーティションはまったく使用されていませんが、それを解放することはできません。再起動せずに削除する方法はありますか?

dmesgにいくつかのレコードがあります。

[4649002.505727] loop1:rw = 0、want = 211812300、limit = 62914560 [4649002.505753]デバイスloop1p1のバッファI / Oエラー、論理ブロック52952562 [4649002.505870]デバイスの終わりを超えてアクセスしようとしました

そして彼らは私の苦悩を感じています。

回答:


3

再起動するとカーネルが修正されます。次回はlosetuppartprobe手動で実行するのではなく、次のようにしますkpartx

kpartx -v -a image.img

そしてそれを取り壊すために:

kpartx -d image.img
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.