我有一台 Ubuntu 15.04 机器。我在这台机器上安装了 docker。安装后,我试图运行默认的 docker 测试映像。但它没有运行。然后我试图关闭机器。
但机器并没有关机。它只是挂在中间,消耗着所有的 CPU 资源。我等了 10-15 分钟,但状态没有改变,什么也没发生。所以我继续按笔记本电脑上的开机按钮关机。这样机器就关机了。
此次事件发生后,现在当我尝试启动机器时,它会在启动时抛出以下错误。
目标文件系统没有请求的 /sbin/init。
/bin/sh: 0:无法打开启动画面
[4.458446] 内核崩溃 - 未同步:尝试终止 init!exitcode=0x00007f00
[4.458479] CPU:1 PID:1 通信:sh 未受污染 3.13.0-46-通用#79-Ubuntu
机器有三个操作系统:Windows,Centos,Ubuntu-15.04。
我尝试过fsck
在启动设备上使用网络启动的解决方案。但是它并没有解决这个问题。
这里我不知道 docker 包是否是问题的一部分。事实上,它可能是任何包安装造成的。
fsck的输出如下:
$ fsck /dev/sda5 来自 util-linux 2.25.2 的 fsck e2fsck 1.42.12(2014 年 8 月 29 日) /dev/sda5:干净,885843/1313280 个文件,3569836/5242880 个块。
我也尝试过-f
选项fsck
,其输出为:
$ fsck /dev/sda5 -f fsck /dev/sda5 -f 来自 util-linux 2.25.2 的 fsck e2fsck 1.42.12(2014 年 8 月 29 日) 第 1 阶段:检查 inode、块和大小 第二步:检查目录结构 第三步:检查目录连通性 第四步:检查引用计数 第五步:检查组摘要信息 /dev/sda5:885843/1313280 个文件(0.1%不连续),3569836/5242880 个块
运行fdisk -l
命令将打印以下消息,以及打印设备详细信息。
分区 5 未从物理扇区边界开始。
我使用mount -o ro /dev/sda5 /media/boot
命令挂载了该设备。输出ls -l /media/boot
如下:
共 116 drwxr-xr-x 2 root root 4096 1月26日 07:01 bin drwxr-xr-x 3 root root 4096 十二月 26 07:10 启动 drwxr-xr-x 2 root root 4096 2015 年 1 月 4 日 cdrom drwxr-xr-x 4 root root 4096 2014 年 4 月 17 日 dev drwxr-xr-x 164 root root 12288 1 月 26 日 07:04 等 drwxr-xr-x 2 root root 4096 2015 年 1 月 4 日 主页 lrwxrwxrwx 1 root root 33 2015年2月27日 initrd.img -> boot/initrd.img-3.13.0-46-generic lrwxrwxrwx 1 root root 33 2015 年 2 月 4 日 initrd.img.old -> boot/initrd.img-3.13.0-45-generic drwxr-xr-x 25 root root 4096 1月26日 07:01 lib drwxr-xr-x 2 root root 4096 十二月 26 06:49 lib32 drwxr-xr-x 2 root root 4096 十二月 26 06:28 lib64 drwx------ 2 root root 16384 2015 年 1 月 4 日 丢失+找到 drwxr-xr-x 3 root root 4096 2015 年 1 月 4 日 媒体 drwxr-xr-x 2 root root 4096 2014 年 4 月 10 日 mnt drwxr-xr-x 6 root root 4096 10月2日 14:15 opt drwxr-xr-x 2 root root 4096 2014 年 4 月 10 日 proc drwx------ 11 root root 4096 1月26日 10:30 root drwxr-xr-x 12 root root 4096 2014 年 4 月 17 日 运行 drwxr-xr-x 2 root root 12288 1月26日 07:03 sbin drwxr-xr-x 2 root root 4096 2014 年 4 月 17 日 srv drwxr-xr-x 2 root root 4096 2014 年 3 月 13 日 系统 drwxrwxrwt 6 root root 4096 1月26日 22:01 tmp drwxr-xr-x 11 root root 4096 十月 2 14:14 usr drwxr-xr-x 15 root root 4096 1月9日 02:05 var lrwxrwxrwx 1 root root 30 2015年2月27日 vmlinuz -> boot/vmlinuz-3.13.0-46-generic lrwxrwxrwx 1 root root 30 2月 4 2015 vmlinuz.old -> boot/vmlinuz-3.13.0-45-generic
用于测试 apt-get install --reinstall
为了测试apt-get install --reinstall upstart
命令,我在 OpenVz 机器中创建了一个 Ubuntu 15.04 容器。在这台 Ubuntu 机器上,我执行了apt-get install --reinstall upstart
命令,它打印了以下消息:
$ apt-get install --reinstall upstart 正在读取软件包列表...完成 构建依赖关系树...完成 软件包 upstart 不可用,但被另一个软件包引用。 这可能意味着包丢失、已被淘汰,或者 只能从其他来源获得 但是以下软件包可以替代它: systemd-sysv mountall init-system-helpers lsb-base E:软件包‘upstart’没有安装候选项
在 Ubuntu-14.04 机器内运行相同的命令会打印以下消息:
$ apt-get install --reinstall upstart 正在读取软件包列表...完成 构建依赖关系树...完成 无法重新安装 upstart,无法下载。 升级了 0 个,新安装了 0 个,要删除 0 个,并且未升级 0 个。
笔记:问题不在于 openvz 容器,而在于前面描述的机器。