我有一个循环设备,当我这样做时,它会出现,但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]
答案1
由于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
完全按照这个顺序。