知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

linux的启动流程详解

发布时间:2014-09-05 17:05:51作者:知识屋

 

1、系统加载bios,并透过bios加载coms,由coms内的设定取得主机的各硬件信息,然后bios进行自检

2、bios通过硬件的INT 13中端功能来读取MBR,由MBR加载bootloader。

  1.bootloader可以安装在文件系统的根分区和磁盘的MBR上面,在多重系统启动的环境中,例如windows

    和linux共存,这个时候要先装windows再装linux,因为windows默认会将bootloader同时装在MBR和系统的根分区上面,而装linux的时候我们可以选择安装bootloader到MBR也可以选择不安装,多重启动环境中MBR常被不同系统的bootloader所覆盖

  2.bootloader的主要功能:

    1.提供选项:用于多重引导

    2.载入系统内核

    3.转交其他的bootloader

  3.默认情况下windows的bootloader不具有转交的功能,因此我们先装windows再装linux,让linux的bootloader覆盖掉windows安装在MBR上面的bootloader,这样启动时我们既可以使用bootloader启动linux也可以转交给windows的bootloader用来启动windows了。

   

3、bootloader加载内核,内核被解压缩在内存当中,并借由内核的功能来驱动各硬件设备。

   kernel的主要工作:1.硬件探测2.驱动程序初始化3.以只读方式加载根文件系统4.启动init进程

   kernel启动时候的所有信息在/var/log/demesg

   boot所在的位置不能是lvm,也不能是raid(软),最多是raid1,MBR的前446字节没有多余的地方加载其他的驱动程序,否则内核就无法被加载。

  1.内核被放置在/boot目录内,有些设备的驱动内核以模块化的方式来加载,而这些模块放置在/lib/modules目录中,所以在装系统时/lib和/一定要在同一个分区,因为内核是通过挂载根来读取模块加载的,开机过程中根目录是以只读方式来挂载的。

   2.内核里面只有基本设备的驱动程序,其他的则被做成模块放在/lib/modules里面以实现动态加载,如果/目录在特殊的设备上面,例如SATA硬盘,LVM或者RAID上面,内核里面没有内置这些设备的驱动,这时候内核就需要借助initrd来实现根的挂载了。

   3.initrd称为虚拟文件系统,里面内置各种驱动程序,它存在得意义就是为了提供驱动,好让内核能顺利的挂载/目录,initrd的版本一定是和内核版本一致的。initrd不是总会被使用到的,例如/文件系统在IDE接口的硬盘上时,内核自己就直接挂载了。

    

4、启动init进程,init读取/etc/inittab配置文件,并且根据配置文件的内容来完成一系列的任务。

  inittab文件的主要内容

  id:3:initdefault:   读取系统启动的级别

  si::sysinit:/etc/rc.d/rc.sysinit  执行系统的初始化脚本

  1,激活udev和selinux

   2,通过读取/etc/sysct1.conf来设置内核参数

   3,设置系统始终

   4,加载键映射

   5,启用交换分区

   6,设置主机名

   7,检查根文件系统,无错后重新以读写方式挂载根文件系统

   8,激活RAID和LVM设备

   9,启动磁盘配额

   10,挂载其他文件系统

   11,清理过时的文件锁和PID文件

   根据响应的启动级别来执行相应启动级别的脚本,主要是在哪些启动级别要启动哪些系统服务,/etc/rc.d/rc{0,1,2,3,4,5,6}中以K开头的都是关闭,数字越小越早关闭,以S开头的都是开启的,数字越小启动越早,这些文件中的都是链接文件,链接至/etc/init.d/目录下,来说明哪些程序是开机启动的

  l0:0:wait:/etc/rc.d/rc 0

   l1:1:wait:/etc/rc.d/rc 1

   l2:2:wait:/etc/rc.d/rc 2

   l3:3:wait:/etc/rc.d/rc 3

   l4:4:wait:/etc/rc.d/rc 4

   l5:5:wait:/etc/rc.d/rc 5

   l6:6:wait:/etc/rc.d/rc 6

   设定好ctrl+alt+del这组功能键

   ca::ctrlaltdel:/sbin/shutdown -t3 -r now

   设定了两个电源选项

   pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

   pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

   为用户打开六个虚拟终端,mingetty 会打开一个虚拟终端并且调用login打印一个登录提示

   1:2345:respawn:/sbin/mingetty tty1

   2:2345:respawn:/sbin/mingetty tty2

   3:2345:respawn:/sbin/mingetty tty3

   4:2345:respawn:/sbin/mingetty tty4

   5:2345:respawn:/sbin/mingetty tty5

   6:2345:respawn:/sbin/mingetty tty6

   如果启动级别是第五级别则启动图形化桌面

   x:5:respawn:/etc/X11/prefdm -nodaemon

  

5、执行/etc/rc.d/rc.local,这里面主要是用户自定义开机启动程序的放置位置。

   开机过程中用到的配置文件

   /etc/modprobe.conf

   /etc/sysconfig/*

   这里面主要的配置文件有:

   authconfig:提供身份认证机制,是否使用/etc/passwd,/etc/shadow来提供身份认证,

   /etc/shadow采用何种加密算法(默认MD5),是否还有其他的身份认证方式NIS,LDAP等

   clock:设定系统的时区

   i18n:设定使用的语系

   network:设定网络信息

   关于bootloader

   由于MBR只有512字节,分区表占去64个字节,还有两个字节的校验位,只剩下446个字节,这446个字节能够存放下bootloader吗?其实bootloader

   加载需要两个阶段

   第一阶段:加载bootloader的最小主程序

   第二阶段:加载bootloader的配置文件

   [root@server30 ~]# ls -l /boot/grub/

   total 234

   -rw-r--r-- 1 root root     63 Aug  6 17:04 device.map grub的装置对应文件

   -rw-r--r-- 1 root root   7584 Aug  6 17:04 e2fs_stage1_5 ext2/ext3文件系统支持

   -rw-r--r-- 1 root root   7456 Aug  6 17:04 fat_stage1_5  fat支持

   -rw-r--r-- 1 root root   6720 Aug  6 17:04 ffs_stage1_5  ffs支持

   -rw------- 1 root root    812 Aug  6 09:07 grub.conf   grub配置文件

   -rw-r--r-- 1 root root   6720 Aug  6 17:04 iso9660_stage1_5  光盘支持

   -rw-r--r-- 1 root root   8192 Aug  6 17:04 jfs_stage1_5  jfs支持

   lrwxrwxrwx 1 root root     11 Aug  6 17:04 menu.lst -> ./grub.conf

   -rw-r--r-- 1 root root   6880 Aug  6 17:04 minix_stage1_5  mini文件系统支持

   -rw-r--r-- 1 root root   9248 Aug  6 17:04 reiserfs_stage1_5 reiserfs文件系统支持

   -rw-r--r-- 1 root root  32428 Jan  5  2007 splash.xpm.gz  开机图片

   -rw-r--r-- 1 root root    512 Aug  6 17:04 stage1  第一阶段说明 

   -rw-r--r-- 1 root root 104988 Aug  6 17:04 stage2  第二阶段说明

   -rw-r--r-- 1 root root   7072 Aug  6 17:04 ufs2_stage1_5 ufs文件系统支持

   -rw-r--r-- 1 root root   6272 Aug  6 17:04 vstafs_stage1_5 vstafs支持

   -rw-r--r-- 1 root root   8904 Aug  6 17:04 xfs_stage1_5  xfs支持

  

   关于GRUB,grub.conf

   default=0  开机使用哪个title,默认第一个

   timeout=5  5s延迟后不选择title的话默认使用第一个title进系统

   splashimage=(hd0,0)/grub/splash.xpm.gz  开机图片,(640*480 14bit色,要保存为xpm并且用gzip压缩一下)

   hiddenmenu 隐藏titile

   title Red Hat Enterprise Linux Server (2.6.18-164.el5) title名称

   root (hd0,0) 这里是第一块磁盘的第一个分区,grub认为所有的磁盘都是hd设备,并且磁盘号和分区号都从0开始

   kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/vol0/root rhgb quiet 内核名称以及放置位置,root指定根目录,rhgb显示为彩色

   quiet,对kernel侦测到的信息不显示输出

   initrd /initrd-2.6.18-164.el5.img  initrd的名称以及放置位置

  

  

   grub加密grub-md5-crypt

   在hiddenmenu下面写入

   password --md5 密文

  

   误操作grub损坏

   1,进入grub命令模式root(hd0,0);setup (hd0);quite

   2,grub-install --root-directory=/(此处的目录为boot的父目录)/dev/sda

         

   dd if=/dev/sda of=/backup/mbr bs=512 count=1 备份MRB

   dd if=/dev/zero of=/dev/sda bs=512 count=1 销毁MBR,会删除磁盘上面的所有分区信息以及bootloader

本文出自 “成长全记录” 博客

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜