linux系统启动过程中的排错

一.系统启动流程

(1)通电

(2)bios(主板上的只读存储中,basic input or output system)作用,硬件检测,激活硬件

(3)grub系统引导(grub引导分为两个阶段)

        1)阶段1 mbr(主引导记录)主引导记录在硬盘上的0磁道,一扇区,446个字

         linuxMBR分区原理:446 Byte  硬盘主引导记录、64  Byte 硬盘分区表(linux最多有四个分区,每个16byte、2   Byte 硬盘有效标志

        2)阶段2 grub文件引导阶段

(4)启动内核,只读挂载/设备检测设备对设备驱动进行初始化

(5)系统初始化阶段、系统初始化阶段加载initrd镜像、开启初始化进程systemd、开始selinux、加载内核参数、初始化系统时钟、键盘,主机名称、重新读写挂载/设备、激活raid,lvm、激活配额、启动multi-user.target.wants中的所有服务、开启虚拟控制台、启动图形


二、当系统启动时出现错误,进行排错

(1)如果 mbr 分区前446个字节坏了

dd if=/dev/zero of=/dev/vda bs=446 count=1 重启后发现无法启动虚拟机

(首先对虚拟机force   off)

进入挽救模式后,执行

chroot   /mnt/sysimage/

grub2-install   /dev/vda

两次退出(exit)后用对虚拟机force   off

硬盘(Hard  Disk)再次启动 

首先对虚拟机force   off

使用光驱启动

进入挽救模式

再次对虚拟及force  off  之后从硬盘重新启动


 

(2)如果引导文件坏了或丢失,系统启动不了(grub.cfg)

rm -fr  /boot/grub2/grub.cfg

在没有reboot之前发现错误可以直接执行命令

grub2-mkconfig  >    /boot/grub2/grub.cfg恢复


在reboot后,重启系统后的界面输入以下命令:

set root='hd0,msdos1'        ##hd0 代表第一块硬盘,msdos1 代表第一个分区
linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64   ro    root=/dev/vda1     
initrd16 /boot/initramfs-3.10.0-123.el7.x86_64.img
boot

开机之后执行 grub2-mkconfig  >    /boot/grub2/grub.cfg



(3)误删或其他原因导致的内核文件丢失 /boot/vmlinuz -3.10.0-123.el7.x86-64
丢失

1>可以使用网卡启动 (没有reboot)

下载镜像里的 Packages/kernel-3.10.0-123.el7.x86-64.rpm(放在桌面)
 rpm2cpio kernel-3.10.0-123.el7.x86-64.rpm | cpio -id
 
解压后会有一个boot目录
 
boot目录里面拷贝丢失的文件到 /boot 下就ok

cp   boot/vmlinuz -3.10.0-123.el7.x86-64    /boot


2>使用光驱启动的(reboot之后)

进入挽救模式

cd  /run/install/repo/

cd  packages/

cp   kernel-3.10.0-123.el7.x86_64.rpm   /mnt/sysimage/mnt/

chroot    /mnt/sysimage/

cd /mnt

rpm2cpio kernel-3.10.0-123.el7.x86-64.rpm | cpio -id

解压后会有一个boot目录
 
boot目录里面拷贝丢失的文件到 /boot 下就ok

cp   boot/vmlinuz -3.10.0-123.el7.x86-64    /boot

两次退出之后再从硬盘启动系统

从光驱启动


进入挽救模式



重新从硬盘启动

(4)误删或其他原因导致的内核文件丢失 /boot/initramfs-3.10.0-123.el7.x86-64丢失

rm-fr   /boot/initramfs-3.10.0-123.el7.x86_64.img

1>直接输入命令(没有reboot)

mkinitrd  /boot/initramfs-$(uname  -r).img    $(uname   -r)


2>使用光驱启动进入挽救模式

chroot  /mnt/sysimage

mkinitrd  /boot/initramfs-$(uname  -r).img    $(uname   -r)

ls  /boot/initramfs-3.10.0-123.el7.x86_64.img

两次退出(exit)

之后从硬盘启动





(5)系统启动级别的设定


启动级别

runlever0.target -> poweroff.target

runlever1.target -> rescue.target

runlever2.target -> multi-user.target

runlever3.target -> multi-user.target

runlever4.target -> multi-user.target

runlever5.target -> grapical.target

runlever6.target -> reboot.targ

(6)当我们忘记超级用户密码时在系统启动时进行修改

1、重新启动系统

2、在系统启动阶段按上下键停止系统引导

3、选择启动引导标题,按“e”进行编辑

4、找到linux16引导条目这一行,从这行最后删除到ro选项,并把ro改为rw,然后添加rd。break选项

5、ctrl+x启动设定过后的引导条目

6、进入系统执行

chroot   /sysroot

7、passwd    root

8、建立文件    touch   /.autorelabel让系统重新扫描所有文件

9、exit(两次退出)系统重启


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值