现象
某次关电脑后虚拟机起不来,报错是:run-init:/sbin/init:No such file or directory
过程尝试
参考了各教程发现还是与他们的情况有点不一样
参考资料如下:
https://blog.csdn.net/qq_41042595/article/details/108342297
https://blog.csdn.net/weixin_53269650/article/details/140406451
解决办法
在GRUB页面按“C”进入命令行,然后去ls (hd0,msdos1)/sbin/init果然没有这个文件,去看其他linux主机里发现这是一个软链接,指向的是/lib/systemd/systemd,我看我的硬盘里/lib/systemd/systemd这个文件是有的。
【想法】
由于之前有嵌入式启动的经验,启动参数是可以修改的,准备修改一下内核启动的参数,默认是去找/sbin/init去作为启动程序,但是也肯定可以修改参数去指定其他路径下的文件作为启动程序。
【修改过程】
按E可以编译引导命令,引导命令应该是出自/boot/grub/grub.cfg,可以在其他的linux主机里面去找找看,在以linux开头的命令后添加参数init=/lib/systemd/systemd,修改后启动:
【结果】
正常进入虚拟机,且功能正常
【修复】
创建/sbin/init的软链接,下次启动就不用修改启动参数。
sudo ln -sf /lib/systemd/systemd /sbin/init
后续问题
笔者发现不仅是/sbin/init缺失,还有一些网络问题,比如网卡没起来,samba服务没起来,python运行异常,都已一一解决。可能还是在上次关机时磁盘数据出现了异常。