Linux的启动过程与常见故障排除


 linux的基础启动流程


    1. 加载BIOS的硬件信息,并获取第一个启动设备的代号。

    2. 读取第一个启动设备的MBR的引导加载程序(即lilo、grub、spfdisk等)的启动信息。

    3. 加载操作系统的核心信息,核心开始解压,并尝试驱动所有的硬件设备。

    4. 核心执行init程序并获得运行信息。

    5. init执行/etc/rc.d/rc.sysinit文件。

    6. 启动核心的外挂模块(/etc/modprobe.conf)。

    7. init执行运行的各个批处理文件(Script)

    8. init执行/etc/rc.d/rc.local文件。

    9. 执行/bin/login程序,等待用户登录。

    10. 登录之后开始以shell控制主机。


流程:

         1.post

         2.cmos ---》硬盘引导----》MBR

         3.grub 第一阶段

         4.grub 第二阶段  /etc/grub.conf (/boot/grub/grub.conf)

         5.加载内核以及驱动镜像

         6.开启第一个进程 init  /etc/inittab

         7.执行初始化文件  /etc/rc.d/rc.sysinit

         8. 进入/etc/rc.d/rcn.d 目录    执行 Kxx  Sxx

         9./etc/rc.d/rc.local

         10.mingetty  产生终端




/boot/grub引导菜单介绍

default=0                                  ***默认启动的系统,0 表示第一个title 的系统
timeout=5                                  ***菜单停留的时间
splashimage=(hd0,0)/grub/splash.xpm.gz     ***启动时的背景
hiddenmenu                                 ***菜单是隐藏的
title CentOS (2.6.32-431.el6.i686)          ***每个系统的标示
        root (hd0,0)                         ***hd0 表示第一个盘,0表示第一个分区
        kernel /vmlinuz-2.6.32-431.el6.i686   ***加载根分区的内核,,此时的根是/boot
        ro                                   ***以只读方式来进行引导
        root=UUID=4a3e9e54-2ed5-4796-9702-774aac0e74a4   ***加载完内核后真正的根分区
         rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto
          LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM 
         rhgb                                 ***以图形方式来进行引导
         quiet                                ***静默模式,启动时信息不再凌乱
        initrd /initramfs-2.6.32-431.el6.i686.img   ***额外的驱动,放置的镜像


故障1:root 口令丢失

  解决原理:进入1级别,单用户级别,因为这个级别是不用输入root密码的,在这里面可以设置新的root密码,然后重启进入其他级别,输入即可

详细操作:

wKioL1WuYGuDravEAACiXH8Oz2E130.jpg

重启客户机,在boot引导时5秒内按下回车键,进入引导菜单

wKioL1WuYXaS6iu4AAEaZXSqhcI911.jpg

此时按下e键 ,进入编辑模式,

wKiom1WuYBPB_n5VAADVdm4235U438.jpg

选择第二项,按e键,在最后添加“1”然后回车

wKioL1WuYpvwqJR4AADmGHrHn6Q846.jpg

然后按b键,进入系统

wKioL1WuYx-Q_a3CAACmNy4T0kY662.jpg

已经进入系统

wKioL1WuY0-xnhVTAACKcEmwHEg946.jpg

可以修改root密码,重启即可,或者把密码删除

passwd  -d  root        密码删除远程是登陆不上的

wKioL1WuY67hCLgaAAFOx3JGeUM492.jpg

故障2:grub.conf

grub 菜单丢失

为了模拟实验先把grub菜单删除

wKiom1WvM8HSBuoZAAB3Ra52-0Q680.jpg

此时看到已经断开连接

wKioL1WvNbSRkq8uAACejQccQ7E796.jpg

重启

wKiom1WvNF6CtzPAAACE1ta1AqA966.jpg

已经启动不了了

解决方案:

help可以查看帮助

wKioL1WvN62yAr0_AAIp3r22iJY039.jpg

先指定引导程序的硬盘和分区,(如果不清楚,可以用tab键帮助)

wKiom1WvNdWyCtyKAABTEF9lDi4931.jpg

指定内核和根分区

wKiom1WvNn3QdOyoAABslODDssg434.jpg

指定驱动

wKiom1WvNw2AMeQ_AABlT_raTAk481.jpg

做完之后,boot引导启动

wKioL1WvOQ_hV2ZAAAA6moa-mKQ700.jpg

可以看到已经进去了

wKioL1WvOWiimFqhAABnW4W7xKo048.jpg

但是为了下一次能够正常启动,不再指定grub菜单,所以要写出grub.conf

wKioL1WvOeize9AnAABGanQ6Crk770.jpg

不知道可以用!!的形式列出需要的文件

wKiom1WvOOfQ5Ag_AABbi36seww225.jpg

引导顺序不要写反了

wKioL1WvR6XyqPVMAADF310kbwQ157.jpg

保存重启,已经可以正常启动了

故障三:故障3:stage1 丢失 446字节的引导程序坏掉

故障模拟,向sda 写入446 字节,然后重启

wKioL1WvSQbyO9OhAACR8VF0uJk167.jpg

wKiom1WvSC3RjQDIAABM4FiDLrA467.jpg

插入光盘,重启

wKiom1WvSMHDjK6SAAEIxgcH_JE010.jpg

选中求援模式

wKiom1WvSXaAFN6JAAHrsx3vwR8438.jpg

选中shell

wKiom1WvTN2iJLZMAAB31_xq1ek864.jpg

分区表和引导菜单都有

wKiom1WvTW2h1HzfAAFyxu7yvOE090.jpg

wKiom1WvTZOgu2ALAAE5v6A6Ytk238.jpg

重新写入引导,exit退出,重启即可

wKiom1WvTkbiqk88AAB3QamnmqU561.jpg

故障4:MBR(446字节和分区表没有了)丢失

一定要先讲mbr备份

wKiom1WvT52SLsoIAACKqB-XhIY713.jpg

我的已经拷贝到物理机上

擦除mbr,重启

wKiom1WvUPahluKHAACWazESbUU698.jpg

启动不了;

wKiom1WvUYOhj-IRAACUqvz4Af8478.jpg

插入live cd盘  CentOS-6.5-i386-LiveDVD

进入cd盘后,打开终端,切换root用户

wKioL1WvVK2zmQzaAABfMMyfAyw176.jpg

关闭防火墙,讲保存的mbr文件导入

wKioL1WvV1-xw16KAACVuSrhUJw555.jpg

将mbr重新写入

wKioL1WvV9zjTnhpAACPbUioCTk914.jpg

已经可以查看分区表了

wKioL1WvWBCyL05nAACzHhlR1zQ590.jpg

重启

故障5:stage2 丢失 (grub目录)

删除

wKiom1WvV2Lw9dCTAAA5o7vwPr4294.jpg

重启测试

wKiom1WvNdWyCtyKAABTEF9lDi4931.jpg

wKiom1WvNn3QdOyoAABslODDssg434.jpg

wKiom1WvNw2AMeQ_AABlT_raTAk481.jpg

wKioL1WvOQ_hV2ZAAAA6moa-mKQ700.jpg

进入系统,没有grub文件

wKioL1WvXR_A-0ovAAEZjYOz_wM657.jpg

在根目录下执行

wKioL1WvXfayDQS7AAEl87XzzoU229.jpg

进入grub目录,发现没有grub.conf 重新编辑grub.conf文件

wKiom1WvXc_SDBhcAACiPUWWt3c497.jpg

重启测试OK

故障6: /etc/fstab  (编错或误删除)

wKioL1WvYkWCk6VJAAFcWDCECgw863.jpg

重启,启动失败,输入密码

wKioL1WvYtuxTuOAAAE2_JIySr0372.jpg

发现看不到有用的信息,

wKioL1WvY_-jkBlxAACf66dKdRk011.jpg


再重启进入引导菜单,

wKioL1WvZI6iXHzCAACbIRcLOl8493.jpg

删除图形引导,和静默模式,再重启

wKioL1WvZO3i14OWAABvDdr0XZk755.jpg

此时发现,UUID 值写错了

wKiom1WvY0KwejhIAACsEbxFig0254.jpg

解决方案:采用live cd 启动,然后将错误改回来

重启时,发现从硬盘引导了,先关机,选择虚拟机,电源,从BIOS 启动

wKioL1WvZvTxT0FFAADDgoK70ns408.jpg

f10保存启动

看到sda2 没有挂载,挂载sda2

wKioL1WvaEuSv96qAADXLIH-GEw723.jpg

查看UUID复制写入/etc/fstab

wKioL1WvaM-Ck424AACesaNB7m8667.jpg

保存退出

wKiom1WvZ87iyd8aAAE0YJJcXa0337.jpg


重启正常!


总结:

    当系统出错进不去时,先关闭,静默模式和图形引导,查看详细信息,如果可以进入shell,在shell中写入引导盘,内核文件,根分区和驱动镜像,进入系统再修改错误,如果进入不到shell,可以到求援模式,如还不行,就挂载live盘进去查错并修改。


你可能感兴趣的:(linux,操作系统,用户登录)