问题现象:
启动后VNC查看黑屏终端未打印任何信息,在修复模式中启动后chroot 发现缺少/usr/bin 和 /usr/lib
从其它相同机器拷贝缺少的文件后启动仍然黑屏。
遇到此类问题时常见方案就是修改引导项中内核参数让内核打印更多的信息,重新启动机器在grub菜单界面修改默认内核的启动参数(删除掉多余的参数),然后ctrl+x 再启动发现如下错误:Failed to start Switch Root.
在上图最后部分提到了 Entering emergency mode(进入维护模式)并提示查看 /run/initramfs/rdsosreport.txt
该文件记录了原因:/sysroot does not seem to be an OS tree. os-release file is missing.
注意这里的/sysroot 去正常机器上找是没有的, 在这里实际上是linux 内核借助初始内存文件系统(initramfs)启动的一个临时的系统(initramfs 包含了驱动等信息,不然内核里没有相关驱动无法读取外设),而此时的/sysroot 实际是操作系统的根 / 可以理解为用户操作系统的根分区 ,正常机器的os-release 在根分区/etc/ 下 ,该文件属于 centos-release 这个包(在正常机器中执行rpm -qf /etc/os-release 可以查看所属的rpm包)。
此时 chroot 下使用 YUM安装时可能无法安装到对应版本,Ctrl+D 退出chroot环境,直接在正常机器(相同版本)拷贝或者复制内容写一个os-release(例如/mnt/etc/release) , 然后重启机器测试正常启动。
/mnt 是/dev/vda1的挂载点,修复模式默认不使用此挂载点,请根据实际写路径