首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >懒惰卸载根监狱驱动器

懒惰卸载根监狱驱动器
EN

Unix & Linux用户
提问于 2018-06-26 06:13:35
回答 1查看 324关注 0票数 0

我已经创建了一个包含rpm和yum (centos 7.5)的根监狱来在原始系统上安装一些软件。

工作流

  • 山sys,proc,dev到根监狱
  • 将原系统的根"/“装入监狱。这一点很重要,因为我使用根监狱在基本系统上实际安装软件。
  • 在rootJail中原始系统根目录内安装sys、proc、dev,例如安装某些软件所需的/proc /rootJail/原始根/proc
  • 进入根监狱,安装软件,退出根监狱
  • 从根监狱卸载sys、proc、dev
  • 来自根监狱中原始系统的umount sys、proc、dev
  • 从根监狱卸载原始系统根(这是它失败的地方)

umount: /rootJail/originalRoot: target很忙。(在某些情况下,使用设备的进程的有用信息由lsof(8)或fuser(1)找到)

因此,我基本上可以卸载所有东西,除了原始系统本身的根。我需要这样做才能移除根监狱,这是强制性的。

问题是,在根监狱中安装了软件之后,启动了许多进程。这就是为什么它告诉我目标很忙。杀死所有这些进程是不可能的,因为这也会杀死系统。这些进程似乎被绑定到rootJail,而不是真正的系统,即使安装路径正确。而且,在重新启动之后,所有操作都很完美(最糟糕的情况是:删除这里的文件夹)

我已经试着做一个懒散的卸载,这基本上是可行的。我可以删除rootJail,它似乎不会损害安装在内部的原始系统。

我的问题是:这样做安全吗?或者对于如何卸载该文件夹还有其他解决方案吗?

EN

回答 1

Unix & Linux用户

发布于 2018-06-27 10:51:30

因此,您似乎希望这些进程无限期地继续运行,即它们是服务进程-它们是在嵌套chroot环境中启动的。这表明您是从shell生成服务流程,而不是从systemd生成服务流程。

一般来说,这是不好的,你会想要避免它。

CentOS 7使用systemd,作为PID 1运行,并管理系统服务。很明显,主系统的PID 1没有在你的色度中运行。通常,当您请求系统服务进程的启动时,它会从PID 1中分离出来,以提供一个干净的环境(根据相关的.service单元文件定制)。(这包括遗留的sysvinit脚本。它们被导入自动生成的.service文件中)。

(为了进一步说明这一点:从技术上讲,可以运行绑定到套接字中的chroot,以便与systemd通信,并使用chroot内部的命令来操作主机系统的服务)。

问题不只是您的方法失去了systemd的好处。这意味着您混淆了systemd服务,如果有这个守护进程的话。例如,服务可能显示为not (service foo status)。如果你以后试着service foo restart..。systemd将不知道有一个守护进程要停止,它将尝试启动守护进程的第二个实例。这是一个有点混乱的调试!通常,您会得到一个很好的即时错误,即无法启动您的web服务器,因为已经有另一个程序在监听TCP端口80 :),但在其他情况下,您可能会得到两个不同的守护进程实例,认为它们应该是唯一的实例,导致错误需要更长时间才能被注意到。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/451918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档