修改rc.local后无法进入CentOS7虚拟机,如何恢复系统访问?
我之前也踩过一模一样的坑!别慌,咱们一步步来把问题解决掉:
第一步:进入单用户模式修复有问题的rc.local
这是最关键的一步,因为现在系统卡启动没法正常登录,只能通过单用户模式修改错误配置:
- 重启你的CentOS7虚拟机,在系统启动到GRUB引导界面时(如果没看到GRUB,赶紧按任意键暂停,CentOS7默认会隐藏这个菜单),选中你平时启动的内核选项,按
e进入编辑模式 - 找到以
linux16开头的那一行,把末尾的ro改成rw init=/sysroot/bin/sh - 按下
Ctrl+X启动系统,这时候会进入一个极简的shell环境 - 输入
chroot /sysroot切换到真实的系统根目录,现在你就可以操作正常的系统文件了 - 编辑出问题的rc.local文件:
vi /etc/rc.d/rc.local,把你之前添加的那些导致卡顿的命令全部注释掉(开头加#)或者直接删除 - 保存退出后,输入
exit退出chroot环境,再输入reboot重启系统,这时候应该就能正常进入系统了
第二步:确保rc.local拥有执行权限
CentOS7里/etc/rc.d/rc.local默认是没有执行权限的,很多人添加命令后忘了这一步,也会导致启动异常:
- 正常进入系统后,执行命令:
chmod +x /etc/rc.d/rc.local - 以后再往rc.local里加命令时,一定要先测试命令在终端里能正常运行,再添加进去,避免再次踩坑
第三步:设置系统开机自动联网,方便后续SSH连接
解决完启动问题后,咱们把自动联网搞定,以后就不用手动连了:
- 先查看你的网卡名称:
nmcli device status,找到显示ethernet类型的设备名(比如ens33) - 编辑网卡配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-ens33(把ens33换成你的网卡名) - 找到
ONBOOT选项,把它改成ONBOOT=yes,如果没有这个选项就手动添加一行 - 保存退出后,重启网络服务:
systemctl restart network,或者直接重启系统,下次开机就会自动联网了
这样之后,你就能用Putty或者其他SSH工具正常连接系统,再也不用怕没法远程修复了!
内容的提问来源于stack exchange,提问作者Luiza Rodrigues
相关产品推荐
相关产品推荐

