我的嵌入式 Linux 上出现了一个(我认为)非常特殊的情况,我无法正确解决......
由于在启动时挂载文件系统之前要执行特定(自定义)检查,我使用初始 ramdisk 来检查和挂载所有请求的文件系统,然后在 init 完成时将它们传输到根文件系统(因此不/etc/fstab
使用挂载设备,而是通过驻留在初始 ramdisk 内的脚本挂载它们)。
更具体地说,首先挂载/boot
分区(mmcblk1p1
)(以只读模式);在该分区内,我有一个文件(rootfs.squashfs
),对应于目标根文件系统的 squashfs 映像......因此,经过一些其他操作(与本文的目的无关)后,初始 ramdisk 脚本最终挂载了 squashfs 映像/rootfs
,并在 init 脚本的末尾切换到系统根目录/rootfs
(通过switch-root
命令);
问题出现在系统重启(或关机或断电)时:当系统尝试卸载所有已挂载的文件系统时,卸载/boot
失败(因为设备正忙,这很明显,因为根文件系统是从位于 /boot 中的 squashfs 文件挂载的)。
有没有办法避免/boot
在重启/关机/断电时卸载,从而避免卸载失败?由于它是以只读方式安装的,所以应该没有任何风险,不是吗?还是我遗漏了什么?
附言:我不知道它是否有帮助和/或相关:我的操作系统初始化是通过 进行管理的systemd
。