首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果根用户为只读时挂起,如何调试upstart?

如果根用户为只读时挂起,如何调试upstart?
EN

Ask Ubuntu用户
提问于 2015-03-18 06:59:11
回答 1查看 2.1K关注 0票数 5

我试图在14.04.2LTS上调试一个不安全/挂起的系统启动(upstart)。根是luks容器中的ext4文件系统。文件系统处于干净状态。

启动过程在upstart-套接字桥之后停止(不一定在特定的服务之后,例如安装了cups-守护进程之后,它就停止了)。init -v也不是很有用。唯一不只是记录各种服务的开始/停止的日志条目是关于init之前的udev的。

代码语言:javascript
复制
Begin: Running /scripts/init-bottom ... done.
udev exit failed --rc=2

(编辑)重新安装的根rw最初似乎总是导致一个干净的启动,但事实是,它有点不可预测,我失败和成功启动任何一种方式。哇哦?

观察:一切看起来都很好,系统根本不重新挂载根可写或继续引导。

问:我如何判断哪些服务是错误的,以使引导进程卡住?

更新:通过getty生成第二个shell可以在挂起initctl list之后运行,这些是正在运行的作业

代码语言:javascript
复制
mountnfs-bootclean.sh start/running
udev start/running, process 438
upstart-udev-bridge start/running, process 432
plymouth start/running, process 122
resolvconf start/running
ssh start/running, process 767 <-- this one was manually started
mountall start/running, process 337
mountkernfs.sh start/running
mountnfs.sh start/running
bootmisc.sh start/running
upstart-socket-bridge start/running, process 745**
cryptdisks start/running
mountdevsubfs.sh start/running
mtab.sh start/running
network-interface (lo) start/running
network-interface (eth0) start/running
plymouth-ready (startup) start/running, process 315
plymouth-upstart-bridge start/running, process 316
mountall-bootclean.sh start/running
network-interface-security (network-interface/eth0) start/running
network-interface-security (network-interface/lo) start/running

更新2:

  • 恢复新启动及其所有依赖的数据包(是一种痛苦和)没有任何影响。
  • 使用第二个控制台,我可以只使用init 5来让卡住的系统继续正常引导。
  • 即使我手动重新挂载根rw (或者使用rw内核参数),系统现在也被卡住了--我最初的观察是,强制根可写工作是不正确的。

解决方案:

这似乎是ureadaheads的错。清除它导致了5只干净的靴子与任何问题。我将把这个问题(以及100个额外的代表)留给任何感兴趣的人,或者知道最初问题的答案:如果不是通过随机试验,我是如何解决这个问题的。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2015-03-20 14:51:58

作为参考,我尝试了(不成功的)调试步骤,但是我的步骤对其他人有用:

  • 获得另一个类似debian的系统,用于引导(例如,在可引导的usb笔驱动器上的一个活动的ubuntu ),并使用chroot对被检查的系统进行配置或软件更改。使用qemu-静态可以在具有不同架构的系统上执行此操作。
  • 安装一个独立的shell,如sash,然后更改内核命令行(在grub中使用e键或编辑grub.cfg/cmdline.txt),并添加init=/bin/sash、重新启动、检查该shell上的情况,然后才使用exec init继续引导
  • init-v开关一起使用以增加日志记录
  • 尽早挂载可写的根文件系统(例如,在执行init之前将'rw‘添加到内核命令行,mount -o remount,rw / )--这允许更多的日志记录
  • 检查/var/log/upstart
  • 在执行init之前在tty2上启动一个额外的终端,例如getty -n -l /bin/bash 38400 tty2 & -这有助于检查系统所处的状态(例如ps -Afiotop)
  • 使用initctl list确定哪些服务处于哪种状态
票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/598157

复制
相关文章

相似问题

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