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,进入登录前的状态。输入账户密码,即可登录系统。
浙公网安备 33010602011771号