首页 > 代码库 > Linux系统启动过程

Linux系统启动过程

技术分享

过程解说:

POST:在CPU的指挥下,将某个特殊硬件设备的内容加载到内存物理空间,不需要任何

            额外指令,是硬件设备自带的。将系统自检所需要的BIOS程序加载到CPU可以查

            找的物理地址空间。

BIOS(Boot Sequence)启动顺序。设定外部IO设备或存储设备哪一个作为默认找操作

          系统或者系统所在的设备。决定了去那去找操作系统所在的位置。从上到下的顺序去

          寻找启动设备的MBR。

MBR(Boot Loader,占据446字节)主要是Boot Loader工作。主要用于根据MBR中的分区表查找

          活动分区,找到操作系统所在的分区,并将操作系统的kernel加载到内存。,然后将控制权交给

          Kernel。Boot Loader一旦获得控制权,BIOS就退出。

bootloader(MBR)

      LILO: LInux LOader:早期Linux使用的。但是不能引导1024柱面以后分  区的内核,所以不支持大硬

     盘。8G以后的分区装内核的话,就无法引导

   GRUB: GRand Unified Bootloader

       Stage1: 装载在MBR内,主要为了引导Stage2

       Stage1_5: 用来识别常见的不同类型的文件系统

       Stage2: 位于/boot/grub/。这才是真正启动操作系统

     使用

grub.conf

default=0  设置默认启动的title编号

timeout=5  等待用户等待的超时时间,单位为秒

splashimage=(hd0,0)/grub/splash.xpm.gz    指定北京图片

hiddenmenu  隐藏菜单,

titleCentOS 6 (2.6.32-504.el6.x86_64)  <==当前主机上系统的内核标题或系统名称,字符串,可自由修改

        root (hd0,0) 内核文件所在的设备,对于grub而言,所有类型硬盘一律为hd,格式为(hd#,n)#表示第几个磁盘,后面的0表示第几个分区

        kernel /vmlinuz-2.6.32-504.el6.x86_64ro root=UUID=40c06d08-45d3-405e-87ed-fe6059a4b32f rd_NO_LUKS rd_NO_LVMLANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgbquiet 内核文件路径及传递给内核的参数,和/prco下的cmdline相同

        initrd/initramfs-2.6.32-504.el6.x86_64.img ramdisk文件路径,操作系统安装完成最后一步生成的

 

Kernel:探测并加载硬件,完成后

Kernel初始化的过程:

  1、设备探测

  2、驱动初始化(可能会从initrd(initramfs)文件中装载驱动模块)

  3、以只读挂载根文件系统;

  4、装载第一个进程init(PID:1

/boot/initrd

   作用一:在内存中释放供kernel使用的root filesystem

   作用二:执行根文件系统中的/sbin/init进程

init

  调用/etc/inittab

       运行级别:0-6

              0:halt

              1: single user mode, 直接以管理员身份切入, s,S,single

              2:multi user mode, no NFS

              3: multi user mode, text mode

              4:reserved

              5: multi user mode, graphic mode

              6: reboot

/etc/rc.d/rc.sysinit:OS初始化

   1、激活udev和selinux;

   2、根据/etc/sysctl.conf文件,来设定内核参数;

   3、设定时钟时钟;

   4、装载键盘映射;

   5、启用交换分区;

   6、设置主机名;

   7、根文件系统检测,并以读写方式重新挂载;

   8、激活RAID和LVM设备;

   9、启用磁盘配额;

   10、根据/etc/fstab,检查并挂载其它文件系统;

   11、清理过期的锁和PID文件;

etc/rc.d/rc.local:系统最后执行的一个脚本;

 /etc/inittab的任务:

  1、设定默认运行级别;

  2、运行系统初始化脚本;

  3、运行指定运行级别对应的目录下的脚本;

  4、设定Ctrl+Alt+Del组合键的操作;

  5、定义UPS电源在电源故障/恢复时执行的操作;

  6、启动虚拟终端(2345级别);

   7、启动图形终端(5级别)

本文出自 “黑夜路人” 博客,请务必保留此出处http://kevinhao.blog.51cto.com/5204735/1606136

Linux系统启动过程