在单用户模式下运行非交互脚本

在单用户模式下运行非交互脚本

启动单用户模式时可以运行“启动”脚本吗?我需要能够启动单用户模式,运行脚本,然后重新启动进入多用户模式,无需任何人工干预。

我做了大量的研究,但找不到任何关于这个主题的明确信息,尽管我当然可以用一个包装器替换其他可以运行的东西,这个包装器也会启动我的脚本,但我更愿意以某种官方方式来做。理想情况下,该解决方案可以在 FreeBSD 6 及更高版本中使用,但如果它在旧版本中不存在,我愿意只接受新版本。

编辑:为了回应评论,我实际上想做两件事,这两件事可能都没有单用户模式就可以实现,但如果有可能的话,在单用户模式下控制所有变量要容易得多:

  1. 在 vmware 安装中增加文件系统(我已成功使用这些说明手动)。

  2. 将所有文件系统中的可用空间清零(在本例中是为导出虚拟机做准备)。同样,我实际上不需要单用户模式,但它会让事情变得更容易。

当然,这些并不是真正的 VM 问题,而是我希望能够做到的一般性问题。这些系统恰好位于 VMware 中这一事实并不特别重要,我也不想因为这个事实而使人们感到困惑(有些人在提到虚拟化时似乎有点疯狂,但在大多数情况下这并没有什么区别)。

编辑2:无论我目前的原因是什么,如果有人对如何做到这一点有任何建议(如果没有官方方法,即使是黑客攻击),请将其作为答案发布。

答案1

FreeBSD 的单用户模式不会运行除您在提示符下为“shell”输入的内容之外的任何其他内容。您可以编写一些在普通的 Bourne 中执行您需要的操作并让它执行,但它仍然需要您在 CLI 中输入一些内容才能执行它。您可以破解 /sbin/init 并自己提供该字符串以在单用户模式下自动执行。

/usr/src/sbin/init/init.c 从第 629 行开始,函数 single_user() 就是您想要修改的,特别是“shell”的值以及它以交互方式请求该值的部分。

相关内容