linux系统的启动是一个复杂的过程,根据个人所学分析总结,如有错误,敬请指正

 

1. BIOS 自检


  

通电后,主板上的BIOS程序检测硬件,根据BIOS中的设定,找到第一个启动介质。
根据INT 13中断功能,读取启动硬盘第一个扇区的内容,此扇区存储446bytes的MBR 和64bytes的分区表

2. GRUB引导阶段


MBR中存储boot loader主程序,其配置文件和相关文档默认在/boot/grub/下 ,
BIOS自检完后,boot loader 运行,读取grub.conf中内容,寻找到 initrd 和linux内核
位置,并将内核加载到内存当中。

3.内核引导阶段

 

    initrd内程序运行,虚拟一个根分区,加载其他硬件驱动。然后,linux内核载入硬盘驱动,进而识别硬盘,
只读方式挂载真正的根分区(/),initrd 退出,此时硬件的管理权交给内核。内核开始准备软件的执行环境

4 .系统软件及服务环境初始化阶段


内核呼叫第一支程序,/sbin/init ,init读取配置文件/etc/inittab内容,运行。
    ->inittab 中规定了默认运行级别,系统初始化需要执行的其他程序,/etc/rc.d/
       rc.sysinit , /etc/rc.d/rc[0-6].d, /etc/rc.d/rc.local
    ->/etc/rc.d/rc [0-6].d 是启动和关闭对应级别的服务,会调用/etc/init.d/下
       服务的启动脚本和/etc 下服务的配置文件
    ->加载登录程序,等待用户输入账户,密码。和/etc/passwd 和/etc/shadow 中
       内容比对,是否正确,验证通过,则将相关验证信息写入日志。然后,读取/etc/p
       rofile 以及对应用户家目录下的配置文件,如:~/.bash_profile,~/.bashrc,都没有问题则启动登录shell
    ->或者执行/etc/X11/prefdm 这个文件,启动linux的图形桌面环境

5.启动完成。