Debian

無法在 Debian 上刪除或解除安裝循環設備

  • August 29, 2022

我有一個循環設備,當我這樣做時會losetup --all顯示我無法刪除。

因此,我基本上陷入了這個問題,因為我創建了 microSD 卡的原始映像,然後我用來kpartx掛載映像中包含的分區。

我最初用於掛載映像和分區的命令如下:-

user@server:~$ sudo kpartx -arsv '/path/to/microsd.img';
add map loop1p1 (254:12): 0 819168 linear 7:14 32
add map loop1p2 (254:13): 0 29351936 linear 7:14 819200
user@server:~$ sudo mount /dev/mapper/loop1p2 /mnt/sdimage1p2;
user@server:~$ ls -alh /mnt/sdimage1p2;

由於這只是一個測試,然後我想解除安裝刪除循環設備,所以我執行了以下命令,我嘗試以不同的順序執行它們,看看我的排序是否有問題。

sudo umount /mnt/sdimage1p2;
sudo dmsetup info;
sudo losetup --detach /dev/mapper/loop1p1;
sudo losetup --detach /dev/mapper/loop1p2;
sudo losetup --detach /dev/mapper/loop1;
sudo dmsetup remove /dev/mapper/loop1p1;
sudo dmsetup remove /dev/mapper/loop1p2;
sudo kpartx -dsv '/path/to/microsd.img';
sudo losetup --all;

dmsetup info返回no devices found

losetup --all返回以下內容:-

/dev/loop1: [2082]:1809010 (/path/to/microsd.img)

我還嘗試了以下不返回任何內容的命令。

fuser -c /dev/loop1;
fuser -f /dev/loop1;

我也試過lsof | grep loop這會返回下面的輸出。

loop1     10693                   root  cwd       DIR                8,2           4096                    2 /
loop1     10693                   root  rtd       DIR                8,2           4096                    2 /
loop1     10693                   root  txt   unknown                                                        /proc/10693/exe

但是我不確定如何處理上述資訊,我確實嘗試kill -9 10693過但沒有奏效,PID10693確實出現在htop.

user@server:~$ ps -fp 10693
UID        PID  PPID  C STIME TTY          TIME CMD
root     10693     2  0 08:17 ?        00:00:00 [loop1]

由於 PPID 是 2,這個程序 10693 是一個核心程序,這就解釋了為什麼你kill -9沒有工作。

你說你試過了sudo losetup --detach /dev/mapper/loop1。這幾乎是但不完全正確:試試吧sudo losetup -d /dev/loop1。但它僅分區循環設備已被刪除後才有效,因此如果您在sudo losetup --detach /dev/mapper/loop1p*命令之前嘗試它,它會失敗。

實現移除循環設備的最少命令可能類似於:

sudo umount /mnt/sdimage1p2
sudo kpartx -d /dev/loop1
sudo losetup -d /dev/loop1

完全按照這個順序。

引用自:https://unix.stackexchange.com/questions/715301