Linux开机启动过程

1.开机加载BIOS自检

  计算机开机时首先加载BIOS,对CPU信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息等硬件进行自检。

2.读取MBR信息

  MBR(Master Boot Record),即主引导记录。位于磁盘的0柱面0磁道1扇区,整个大小为512字节,存放了系统预启动信息、分区表信息即分区标志等。

  MBR分为两部分,第一部分为引导及录取,占446字节。作用是找到标记为活动的分区,并将活动分区的引导记录读入内存。

           第二部分为分区表,占66字节,其中前64字节是分区表信息,后2字节是分区的结束标志。

3.加载Grub菜单(Boot Loader,引导加载程序)

  计算机将MBR信息读取到内存中,执行Boot Loader,即加载Grub信息。

  Grub信息为/etc/grub.conf

  

[root@centos6 ~]# cat /etc/grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0    #默认情况下加载哪个系统,0表示加载的第一个系统。       
timeout=5    #表示多少秒之后开始加载默认的系统,为管理员选择留出时间。
splashimage=(hd0,0)/grub/splash.xpm.gz    #启动时显示的背景图标,(hd0,0)代表/boot分区
hiddenmenu    #系统启动时,会隐藏启动菜单信息,按默认设置即可启动系统,除非用户按键干预
title CentOS 6 (2.6.32-696.el6.x86_64)    #要启动的系统名称,可修改
        root (hd0,0)    #引导内核文件和所需驱动所在的分区
        kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=fd238ba5-155a-4bc6-8a5f-98645a97ffdc rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet    #位于boot分区的内核文件,及可选内核参数  
        initrd /initramfs-2.6.32-696.el6.x86_64.img    #内核启动所需驱动文件,在/boot分区

4.加载kernel内核及驱动程序

  系统根据grub.conf,对内核文件进行解压缩,并设置加载内核及内核所需的驱动程序、相关参数,进而挂载并读取跟分区的信息,加载操作系统。

5.启动init进程,读取initab文件

  加载完内核及驱动程序之后,系统会运行/sbin/init,因为init进程对应的pid永远为1。

  此时,init读取/etc/inittab文件中的运行等级进行启动。

6.init进程执行rc.sysinit初始化系统

  inint进程加载/etc/rc.d/rc.sysinit,对系统进行初始化设置,并加载内核模块。

7.init进程执行对应的运行级别下的脚本

  init进程执行对应的运行级别下的脚本,如rc3.d

  

[root@centos6 ~]# ls /etc/rc.d/rc3.d/
K01smartd          K50dnsmasq     K75quota_nld       K95firstboot     S11auditd       S23NetworkManager    S26udev-post  S95atd
K02oddjobd         K50kdump       K76ypbind          K99rngd          S11portreserve  S24nfslock           S28autofs     S99certmonger
K05wdaemon         K60nfs         K84wpa_supplicant  S01sysstat       S12rsyslog      S24rpcgssd           S50bluetooth  S99local
K10psacct          K61nfs-rdma    K87restorecond     S02lvm2-monitor  S13cpuspeed     S25blk-availability  S55sshd
K10saslauthd       K69rpcsvcgssd  K88sssd            S05rdma          S13irqbalance   S25cups              S80postfix
K15htcacheclean    K73winbind     K89netconsole      S08ip6tables     S13rpcbind      S25netfs             S82abrtd
K15httpd           K74ntpd        K89rdisc           S08iptables      S15mdmonitor    S26acpid             S83abrt-ccpp
K30spice-vdagentd  K75ntpdate     K92pppoe-server    S10network       S22messagebus   S26haldaemon         S90crond

8.加载/etc/rc.local

  rc.local是在系统做好初始化之后,留给管理员自定义设置的一个文件。可以添加开机自启动程序。

9.启动mingetty,进入登录前状态

  系统读取/etc/init/tty.conf,设置对应运行级别的终端,启动mingetty,进入登录前的状态。输入账户密码,即可登录系统。

  

posted @ 2019-11-14 22:12  小杜君  阅读(271)  评论(0)    收藏  举报