对于pivot_root,我想终止oldroot正在使用的所有进程,以便我可以分离MTD分区..并退出shell并返回

对于pivot_root,我想终止oldroot正在使用的所有进程,以便我可以分离MTD分区..并退出shell并返回

我有一个arm7上的嵌入式linux。

我在 MTD 分区 10(例如)上安装了一个 rootfs,即 /dev/mtd10,它是一个闪存设备。该卷是 UBIFS 设备 UBI0 (/dev/ubi0)。

我大致按照此处的说明设置了一个pivot_root(类似于chroot)tmpfs:调整实时根文件系统大小如何

我想擦除/重新格式化 mtd10 (UBI0) 我遇到的问题是我无法分离/格式化 UBI0,直到我这样做,因为它告诉我它很忙。所以,我使用命令:

fuser -vm /dev/mtd10这给了我一个可以杀死的进程列表,所以我做了所有这些,然后 umount(或 umount -l)所有安装在 UBI0 上的分区。

所以我的系统不再对 UBI0 有任何依赖...除了我正在运行的 shell 之外。我尝试了很多方法的组合,但似乎唯一有效的方法(一旦我整理好)就是注销(使用exit命令)然后重新登录(对我来说,我只需输入用户名root)。

一旦我telinit u在此时注销/运行,我就会看到 UBI0 消失,我可以将其分离。

更新:Killrc_mxc.S与注销有类似的效果(即它结束了我的 shell,我必须再次登录。但这也结束了我的脚本:(

这里的问题是我不知道如何编写脚本。在脚本中运行exit只是结束脚本。

答案1

find /proc/$$ -type l -ls在保持 FS 打开的 shell 中运行。对于指向该 FS 的每个链接,请采取适当的操作:

  • fd子目录中: run exec n>replacement,其中n是文件描述符编号,replacement是它应该指向的文件,或者&-关闭该描述符。
  • 作为exe或在map_files子目录中: run exec /bin/sh,替换/bin/sh为您想要在 tmpfs 根目录中的任何 shell 的路径。
  • 作为cwdcd到其他目录。
  • 作为root:转到 tmpfs 根目录,然后chroot ..

相关内容