设为首页 收藏本站
查看: 1015|回复: 3

[经验分享] Linux启动流程

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-7-5 08:39:47 | 显示全部楼层 |阅读模式

一、Linux开机流程

(一)power on 开机后加载BIOS(Basic Input Output System,基本的输入输出系统),BIOS加载

     CMOS中所存放的当前主机各项硬件配置、系统时间、连接设备等信息;然后运行POST自检,检

     查硬件设备,再检查启动设备,读取MBR(主引导记录(Master Boot Record)),转接给操作

     系统。

BIOS与CMOS的区别

BIOS与CMOS都是存储器。二者的区别是BIOS为只读存储器ROMEPROM),而CMOS为随机存储器RAM);BIOS中存储 的是程序,而CMOS中存储的是普通信息。

CMOS中保存着BIOS程序的设置结果。而且,CMOS中的用户信息和常规设置需要在BIOS程序引导计算机启动后才能载入 。

引导程序称为boot loader,

1、存放在MBR中。512字节分为三部分:

1) Boot loader 446字节,相当于指针程序,

   3428638_1372951185lqcq.jpg

  如果是双系统,会出现两个选项。


注意:操作系统不仅会向MBR中写入相应的系统启动程序,还会在系统安装的分区或文件系统上的第一

     个扇区保存操作系统安装的另外一份boot loader。

     windows的boot loader不具备控制权的转交功能。linux的GNU GRUB启动引导程序支持控制权的

     转交。所以安装windows和Linux双系统,要先装windows。


2)Partition table(分区表)64字节,

3)Magic Number(检验码)2字节(校验位必须为55AA,否则boot loader启动无效)。


(二)相关目录

1、boot目录:

   3428638_1372951185Tppi.jpg

  vmlinuz-2.6.18-194.el5 当前系统的内核文件

  initrd-2.6.18.-194.el5.img 系统的工具箱

  System.map-2.6.18-194.el5 系统kernel中的变量的对应表(kernel的索引文件)

  Symvers-2.6.18-194.el5.gz 模块的符号信息

  config-2.6.18-194.el5 系统kernel的配置文件

2、grub目录:

   3428638_1372951186CN3r.jpg

  stage1 bootloader的第一部分,指向调用stage2

  *1_5的文件,是stage1到stage2中间过程需要加载的中间程序,主要是文件驱动等,支持对应的文

  件系统;支持对应的文件系统后,就可以读取stage2

  stage2 bootloader的第二部分,grub的主要程序

1)grub开始运行,grub配置文件为grub.conf

  vi grub.conf查看

   3428638_1372951189CbEO.jpg

  default=0 指定默认启动引导配置。0表示选择第一个。如果系统有两个系统是用什么做为分隔符  

  的呢?title就是系统的分隔符,第一个title后面就是第一个系统,用0表示。

  timeout=5 就是默认在启动选择界面停留的时间,单位是秒。等待5秒自动进入默认操作系统

  splashimage = (hd0,0)/grub/splash.xpm.gz

  hd0表示当前主机中的第一块硬盘 ;

  ,后面的0代表第一个分区。

  splash.xpm.gz gzip格式压缩的xpm文件,xpm是一种图形格式,该文件为开机过程中显示的红色背  

                    景

  splashimage是grub启动背景画面,如果是自己写grub.conf文件,可以不用写。

  hiddenmenu 不是一个参数,是开机倒计时不显示选单的功能 。去掉后直接显示选单。

  title title后面就是系统在启动时候显示的文字

  每一个title都是启动选单中显示的文字,到下一个title 中间的部分都是对引导选项的相关配

  置。

  root 指开机过程中grub加载的根文件系统位置

(hd0,0) 第一块硬盘的第一个分区

  kernel 当前指定的内核文件,内核所在位置和名字

  /vmlinuz-2.6.18-194.el5

  ro root=LABEL=/ rhgb quiet 内核参数

  ro read only以只读方式挂接/根文件系统,

  root 为内核重新指定根目录

  LABEl=/ 以卷标名的方式描述一个分区,可以指定为相应的设备名,如/dev/sd2。

  以卷标方式表示的优点是避免磁盘加载前后出现的问题。

  现在挂接的是真正的根目录(为了避免根目录被破坏,以只读方式挂接)。

  rhgb彩色模式,表示redhat graphics boot,就是会看到图片来代替启动过程中显示的文本信息,  

       这些信息在启动后用dmesg也可以看到

  quiet 静默模式,表示在启动过程中只有重要信息显示,类似硬件自检的消息不会显示

  initrd 在redhat3、4、5版本下都是以initrd方式加载内核工具箱。

  /initrd-2.6.18-194.el5.img加载的目录封装的是最基本的模块.。

  initrd文件在内存中会解压缩,内核把它当成/来挂接。

   3428638_1372951190N5dg.jpg

  cpio:不支持读取,只支持输入(最开始用于备份磁带)。

  cpio -iv < initrd-2.6.18-194.el5.img 将文件传输给cpio,然后删掉原文件,该目录显示为

   3428638_1372951191r7x1.jpg

  加载到内存,内核将initrd文件当成/来进行挂接;然后运行init第一个进程。文件类型、内容如

  图所示

   3428638_13729511921IaQ.jpg

  vi init

   3428638_1372951192JUY4.jpg

  init脚本中创建了/dev及子目录、设备文件。

   3428638_1372951193AMQh.jpg

  insmod加载模块,/lib/下的ehci-hcd.ko, ohci-hcd.ko,uhci-hcd.ko这三个模块是三种不同的  

  USB芯片的驱动模块。

   3428638_1372951194U3cT.jpg

  最后一条命令switchroot,切换根目录,该命令的的结果是把当前根目录的设置从initrd转换为硬  

  盘上真正的根目录。现在是以只读的方式挂接根文件系统。

  总结:内核读取到内存中,initrd在内存中挂接成内存中的文件系统,内核先将initrd内存中的文

        件系统当成根来进行挂接,运行initrd内部的initrd程序(这个initrd程序其实是一个脚

        本,这个脚本加载了一系列配置),切换到硬盘上真正的根,然后再运行硬盘上initrd程

        序。

        模块文件保存在/lib/modules中,这就是/lib目录必须挂载到/目录下的原因。


3、grub出现故障如何修复

1)切换到grub目录下,查看grub.conf文件

   3428638_13729511978kr4.jpg

2) 查看grub.conf文件

  vi grub.conf

   3428638_1372951197SUaM.jpg

  注意:只有在redhat按照这个过程执行,redhat规定所有的配置文件以.conf文件结尾;

        标准的linux系统下,加载的是menu.lst(软链接文件,指向grub.conf)。


3)执行rm -f grub.conf,删掉grub.conf

4)然后将grub的bootloader 破坏掉,

dd if=/dev/zero of=/dev/sda bs=446 count=1

从/dev/zero(虚拟文件,读取的时候显示无限个0)文件中抽取数据,写到/dev/sda;执行结果是用

0把当前硬盘的头446个字节覆盖。

5)执行reboot重启

6)显示Operating system not found未安装系统,系统无法引导

   3428638_1372951198ekFa.jpg

7)使用光盘的rescue模式修复

(1)进入光盘安装界面,

    3428638_13729511987sKn.jpg

(2)按F5键进入Rescue模式

    3428638_1372951199e1TO.jpg

(3)输入linux rescue回车

    3428638_1372951199YauP.jpg

(4)选择安装语言,默认English,点击OK

    3428638_1372951200P551.jpg

(5)键盘模式默认us,点击OK

    3428638_1372951200Mxps.jpg

(6)询问是否开启网络,当前用不到,所以点击No

    3428638_1372951201DZDX.jpg

(7)是否扫描当前的分区系统,自动挂接和加载,点击Continue

    3428638_13729512051iKD.jpg

(8)提示找到分区,并挂接到/mnt/sysimage

    3428638_1372951207y6Hh.jpg

(9)执行chroot /mnt/sysimage

    3428638_1372951208EUcD.jpg

(10)现在可以找到硬盘根目录,重新安装grub,利用grub安装程序重写硬盘的MBR。使用grub-install

   命令,查看使用方法

    3428638_1372951210xFI1.jpg

   --root -directory=DIR 指定安装grub的root目录

   --grub -shell=FILE 使用一个文件定义grub的shell程序

   --recheck 检查device map文件。如果存在的话.按照devicemap声明的设备名,搜索设备。


devicemap文件属性:

   3428638_1372951210KSvn.jpg

(11)执行grub-install --root-directory=/ --recheck /dev/sda(指定安装的设备,安装设备指的

     某块硬盘,不是某个分区)

      3428638_1372951211ALkU.jpg

      3428638_1372951211fC99.jpg

(12)然后重新启动,进入grub.shell,(一般直接修改grub.conf文件)

      3428638_1372951211u5rQ.jpg

(13)查看root已经识别(hd0,0),修改kernel参数、initrd参数,加载完毕

      3428638_1372951212shrA.jpg

(14)输入boot,开始加载内核启动系统。

      3428638_1372951213KgHK.jpg

(15)进入系统,现在如果重新启动,依然出现grub提示符。因为/boot/grub下的grun.conf文件仍未

     恢复,完全修复系统还需要重新编写grub.conf文件文件

      3428638_1372951213qpoO.jpg

     vi grub.conf输入如下内容

      3428638_1372951215z5N1.jpg

(16)再次重新启动,系统已经修复完毕。


注意:为了避免硬盘MBR损坏后无法,需要备份分区表。

      备份命令

      dd if=/dev/sda of=/root/bacup.img bs=512 count=1

      将sda硬盘的头512字节的数据保存到/root/bacup.img文件。

       3428638_1372951215qmkS.jpg

      如果系统分区表,bootloader损坏,进入rescue修复模式,使用dd命令即可恢复。


(三)grub的结束是当前内核以只读方式挂载根文件系统。然后运行磁盘上的init程序  

    (/sbin/init)。

      3428638_1372951215oDJ3.jpg

     这个init程序作用是找到系统配置文件(/etc/inittab),并且指定runlevel(系统运行级

     别)。

     vi /etc/inittab

      3428638_1372951216ntoN.jpg


runlevel模式

    0 关机

    1单用户维护模式

    2 多用户模式,但不加载网络服务

    3 字符界面

    4 系统保留,尚未使用

    5 图形模式

    6 重启

    id:5 系统默认启动模式


/etc/rc.d/rc.sysinit 开机启动脚本

vi /etc/rc.d/rc.sysinit

3428638_1372951217e1o5.jpg

/etc/inittab文件中

3428638_1372951217VyKh.jpg

分别指定不同的runlevel级别下服务启动的脚本;

l0 标签;

0不同runlevel级别;

wait等待前一个脚本运行完毕再运行下一个脚本;

脚本的内容:

3428638_1372951219yvHh.jpg

该目录下的软链接文件以K打头的服务系统脚本是不启动的:以S打头的是启动的。数字代表启动或关闭的顺序,如果数字相同则按照ASCII码的顺序排列。


链接的是/etc/rc.d/init.d/目录下的脚本

3428638_1372951219gcLZ.jpg

不同的runlevel启动级别区别是因为启动的服务脚本不同

特殊的是rc0.d,关机模式

3428638_1372951222QcJn.jpg

除了开启着两个服务(杀死所有进程,关机),其余全部关闭。

3428638_1372951222PCfp.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-7030-1-1.html 上篇帖子: linux计划任务cron 下篇帖子: linux中远程访问及控制 Linux
累计签到:24 天
连续签到:1 天
发表于 2013-7-7 01:27:11 | 显示全部楼层
学习学习    谢谢了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-9-13 17:36:05 | 显示全部楼层
沙发!沙发!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2014-1-3 01:51:15 | 显示全部楼层
原因为自己可以狠坚强,可是我终究败给了现实。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表