linux系统排错
系统引导过程
通电-->bios初始化-->grub磁盘引导阶段-->grub文件引导阶段(446 mbr)-->指定boot所在分区-->启动内核(ip,网卡...生效:加载),只读,挂载设备-->启动init程序进入初始化阶段-->启动systemd初始化进程-->读取/etc/systemd中的文件-->启动程序-->启动登录环境
本文实验在server虚拟机上操作
1.磁盘引导错误:MBR丢失
[[email protected] ~]# dd if=/dev/zero of=/dev/vda bs=466 count=1 #MBR被覆盖
1+0 records in
1+0 records out
466 bytes (466 B) copied, 0.00758536 s, 61.4 kB/s
[[email protected] ~]# reboot #重启
重启后显示如下界面:
解决方法:
1.在真机 virt-manager 打开如下界面,将虚拟机server关闭(force off)
2.设置光驱启动
点击open(第二个图标)
点击灯泡(第二个图标)
点击左下角 Add Hardware添加光盘
Device type:CDROM device-->选择挂载光盘-->点击BROWSE... 选择和虚拟机版本相同的镜像-->点击finish
在左边栏目选择 Boot Opinions-->在右边栏目勾选IDE CDROM1-->点击旁边的向上键,将光盘移动到最上面,开启挽救模式-->点击右下角apply-->点击最上面第一个电脑图标
3.
选择 Troubleshooting,enter键继续 #系统修复
选择rescue a red hat enterprise linux system #挽救模式
挽救环境,选择continue
选择OK
4.
chroot /mnt/sysimage #进入根目录
grub2-install /dev/vda
vim /etc/sysconfig/selinux #将SElinux的状态修改为disabled
exit #退出根目录
exit #退出当前环境
5.关闭server虚拟机(force off),修改硬盘启动
在左边栏目选择boot opinions-->右边选择光盘-->点击旁边向下键,将光盘移动到两个硬盘后面-->取消勾选光盘-->apply
开启系统后进入登录界面,即可修复成功(点击播放键)
登录进入,界面会多一个镜像
2.grub引导文件丢失
/boot/grub2/grub.cfg #自动引导文件,记录系统启动方式,如果丢失系统将不能自动启动
硬盘的有效性标示 2字节 512-446=64+2
第一块硬盘,第一块分区(系统可以识别硬盘,是因为默认含hd的标示符为硬盘)
rm -fr /boot/grub2/grub.cfg #删除grub引导文件
1.文件丢失后没有重启系统
grub2-mkconfig > /boot/grub2/grub.cfg #恢复文件
2.丢失文件后重启系统
重启之后直接进入了如下界面
set root='hd0,msdos1' #第一块磁盘,第一块分五
linux16 /boot/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/vda1
initrd16 /boot/initramfs-3.10.0-123.e17.x86_64.img
boot
完成后进入系统
grub2-mkconfig > /boot/grub2/grub.cfg
完成上述操作即可正常启动系统
3.内核文件丢失
rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64 #删除内核文件
1.内核文件丢失后没有重启系统
yum whatprovides /boot/vmlinuz-3.10.0-123.el7.x86_64 #查找内核文件的安装包#查找内核文件的安装包
kernel-3.10.0-123.el7.x86_64 #linux系统内核文件
打开桌面镜像/packages/查找kernel-->kernel-3.10.0-123.el7.x86_64-->复制到桌面
恢复内核文件
[[email protected] boot]# cd /root/Desktop
[[email protected] Desktop]# ls
kernel-3.10.0-123.el7.x86_64.rpm
[[email protected] Desktop]# rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm |cpio -id #解压到当前位置的文件
219282 blocks
桌面出现boot,etc,lib
[[email protected] Desktop]# cp boot/vmlinuz-3.10.0-123.el7.x86_64 /boot/ #将boot里的内核文件复制到根下的boot
操作完成
2.内核文件丢失后重启系统
重启后显示如下界面,提示没有内核文件
关闭系统,设置光驱启动
进入挽救环境
关闭系统,修改硬盘驱动,即可正常启动系统
4.初始化文件丢失
rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img #删除系统初始化文件
1.初始化文件丢失后没有重启系统
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) #恢复初始化文件
$( )表示优先执行
uname -r #查看内核版本
initramfs-$(uname -r).img #生成文件名称
$(uname -r) #内核版本
2.初始化文件丢失后重启
重启后提示示没有初始化文件
关闭 系统,设置光盘驱动,点击播放键进入挽救模式
关闭系统,修改成硬盘启动,即可正常启动系统
5.启动级别发生错误
linux系统有6个启动级别
0表示关机,系统默认运行级别不能设置为0,否则不能正常启动
1表示单用户工作状态,root权限,用于系统维护,禁止远程登录
2表示多用户状态,但没有NFS支持
3表示完全多用户状态,登录后进入控制台命令行模式
4表示系统未使用,保留
5代表有图形模式启动
6表示正常关闭并重启,默认运行不能设置为6,否则不能正常运行
改变系统级别
[[email protected] ~]# systemctl set-default shutdown.target #设置系统开启时直接关闭
rm '/etc/systemd/system/default.target' #删除原有连接,建立一个错误连接
ln -s '/usr/lib/systemd/system/shutdown.target' '/etc/systemd/system/default.target'
在系统启动阶段按上下键停止系统引导选择启动引导标题,按“e”进行编辑找到内核启动行,在后面添加“5”
ctrl+x启动设定过后的系统引导条目
进入系统,修改开机默认运行级别
[[email protected] ~]# systemctl set-default graphical.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target'
修改后系统即可正常启动,并可以正常开启关闭系统