我有一台带有单个 SSD 和 3 个分区的机器。我想在保持活动状态时卸载整个 SSD,以便我可以在 SSD 上运行固件升级工具。我知道不建议卸载唯一的磁盘,但我认为这在我的情况下是可以的,因为我的 rootfs 是一个在启动期间加载到内存中的 squashfs,并且理论上内核也安装在内存中。这就是为什么我相信我们可以卸载所有分区,运行固件升级,然后重新启动系统以恢复正常状态。
我的问题:我无法卸载sda1
重复运行以下 2-3 次后,我能够卸载sda2
(存储空间)和(存储一些日志文件的位置):sda3
fuser -mv /dev/sda1 -k -9
fuser -mv /dev/sda2 -k -9
fuser -mv /dev/sda3 -k -9
umount -f /dev/sda1
umount -f /dev/sda2
umount -f /dev/sda3
此时,跑步
fuser -mv /dev/sda1
fuser -mv /dev/sda2
fuser -mv /dev/sda3
产生输出
USER PID ACCESS COMMAND
/dev/sda1: root kernel mount /boot
这告诉我 和sda2
已sda3
成功卸载,但内核不想放弃sda1
.无论我如何尝试,sda1
都无法卸载
我还尝试通过以下方式杀死链接到 sda1 的唯一进程:
$ ps -ef | grep sda
root 423 2 0 00:19 ? 00:00:00 [jbd2/sda1-8]
$ kill -9 423
但那里也没有运气。
笔记:我无法使用 USB 记忆棒等任何其他硬件来帮助完成整个过程。
更新:
lsblk
产生以下结果
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 3.8G 0 disk
|-sda2 8:2 0 1.9G 0 part
|-sda3 8:3 0 949.2M 0 part
`-sda1 8:1 0 957M 0 part /boot
答案1
谢谢,赖瑞安。我无法卸载SSD的原因是因为rootfs仍在使用SSD中的squashfs文件。正如我所认为的那样,squashfs 文件并未加载到内存中,而是从 SSD 上的原始文件即时解压缩。