Linux从入门到精通——系统无法启动可能的情况及排错方法
以下实验都是用虚拟机进行的,如果是真机在日常使用中出现相关问题,个别地方会有所差异
一.系统无法自动引导
/boot/grub2/grub.cfg ##系统自动引导文件
set root='hd0,msdos1' ##设定引导启动分区路径
Linux16 /boot/vmlinuz-3.10.0-327.el7.x86_64 selinux=0 ##设定启动内核,如果selinux没关会让系统启动卡住
initrd16 /boot/initramfs-3.10.0-327.el7.x86_64.img ##启动初始化程序
linux里引导磁盘读取系统启动文件的文件内容
如果不慎删除,系统启动时会无法自动引导
无法自动引导之后,系统会弹出命令行让使用者进行手动引导
输入上述三条命令进行手动引导,如果想让系统更快速启动,可以在内核行后加 selinux=0,关闭selinux,会使内核加载更快
这些命令都是可以用tab键补齐的,记不住文件名称也没有关系,最后输入boot开始启动,注意不要写成reboot,不然重启会前功尽弃
手动引导成功后系统就可以正常启动了,不过下次在开机时还是会无法自动引导,如果要恢复自动引导需要用下面的命令
grub2-mkconfig > /boot/grub2/grub.cfg ##永久恢复
二.不慎删除启动内核怎么办
rm -fr /boot/vmlinuz-3.10.0-327.el7.x86_64 ##删除内核
1.安装启动盘
添加一个虚拟的光盘设备,设定好相应的系统镜像文件,要注意的是启动盘的系统版本必须与安装的系统版本一致,否则无法修复!
如果是真机出现问题,需要一个制作好的启动盘,不知道什么是启动盘的可以看https://baike.baidu.com/item/%E5%90%AF%E5%8A%A8%E7%9B%98/95533?fr=aladdin
2.设定启动顺序
选择光盘设备为首位启动,真实主机的话,需要进入bios里设置启动顺序,一般来说联想电脑进入bios的方法是在logo出来时按Fn + F2 或F2 ,戴尔和惠普的为F12 或Fn + F12 ,宏基的为Esc,不同电脑对应不同的按键方法,具体可以百度,在此不细谈,进入bios以后在Boot栏中选择Boot From CDRom 或 USB Device ,把启动盘放在首位
3.进入排错模式
4.选择挽救系统
之后会弹出蓝色背景的说明界面,按顺序选择continue、OK、OK
5.输入命令
chroot /mnt/systimg ##切换到真实的root环境,之前的root环境是在/mnt/systimg里的
mkdir /rhel7.0 ##新建一个目录
mount /dev/sr0 /rhel7.0 ##挂载虚拟光盘设备里的镜像,如果是真机,需要cat /proc/partations查看你自己的启动盘的名字
cd /rhel7.0/Pcakages
cp kernel-3.10.0-123.el7.x86_64.rpm /mnt
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id
cd /mnt
ls
cd boot/ ##注意,这是/mnt里的boot目录,是刚才安装后的才有的,不是/boot,两个是不同的
ls
cp vmlinuz-3.10.0-327.el7.x86_64 /boot
exit
exit
修复好之后删除启动盘,将启动顺序改回默认顺序,如果是真机,依然在bios里设置
三.删除初始化程序如何恢复
rm -fr /boot/initramfs-3.10.0-327.el7.x86_64.img ##初始化程序
如上启动拯救模式之后输入:
chroot /mnt/systimg
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) ##uname -r会显示系统内核版本,$()表示执行括号内的命令
exit
exit
四.忘记root密码
重启系统
进入读秒界面时按E
在内核行后删除ro后的内容
把ro改为rw,在rw后加个空格
在空格后输入rd.break
按ctrl D
等出现switch_root后,输入chroot
/sysroot/
输入echo westos|passwd --stdin root ##改root密码为westos
touch /.autorelabel ##改完密码后selinux默认不识别新密码,建立此文件使selinux识别新密码
五.默认开启模式被更改导致开机异常
/etc/systemd (系统初始化程序的目录)
查看系统默认启动级别:systemctl get-default
如果不慎更改或者系统异常无法启动图形界面时:
systemctl set-default shutdown.target ###将系统的默认级别设置为关机(结果会导致系统开机后就关机,造成死循环)
解决办法:
1.开机后在读秒界面按E后找到内核版本一行,光标移动到最后 加一个5 ##5表示设置开机启动级别为图形界面,相当于init 5
2.按ctrl x进入系统
3.systemctl set-default graphical.target ##设置系统启动级别为图形界面