【就业班作业】【第九周】3、简述linux操作系统启动流程---CentOS6的启动流程
CentOS6的启动流程:
第一步,POST(Power On Self Test),加电自检
CPU、内存、硬盘、显卡、IO等硬件初始化检查;
BIOS中设置要查看到自检过程,如下:
效果图,如下:
第二步,BIOS启动顺序
设置启动顺序,检测驱动器,光驱、硬盘、网络、U盘等驱动器;
BIOS中设置驱动器启动顺序,如下:
第三步,如果是硬盘启动
读取硬盘的MBR(加载第1个扇区512字节到内存):512=BootLoader(446)+分区表(16)+MBR标识位0xAA55(2);
Bootloader程序主要有:windows的ntloader或Bootmgr;linux的grub或grub2程序;
加载完bootloader(已安装/boot/grub/stage1)后,控制权并转给grub这个引导程序;
第四步,grub2引导
stage1,放在MBR中,准备内存空间,再读取载入stage1.5多个文件;
stage1.5,放在MBR区域后紧跟的基本磁盘分区/boot里,本阶段可识别启动分区的文件系统,于是并载入/boot/grub/stage2;
stage2,载入时读取/grub/grub.conf;显示操作系统类别菜单,可为下一步指定只读方式内核(/boot/vmlinuz)、虚拟磁盘文件(/boot/initrd或/boot/initramfs)、真正根的分区位置等多个配置参数,回车后加载内核以及内核参数等,并将控制权转给内核;
[root@lab-CentOS-6 /]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom sda 8:0 0 20G 0 disk ├─sda1 8:1 0 500M 0 part /boot └─sda2 8:2 0 19.5G 0 part ├─vg_labcentos6-lv_root (dm-0) 253:0 0 17.6G 0 lvm / └─vg_labcentos6-lv_swap (dm-1) 253:1 0 2G 0 lvm [SWAP] [root@lab-CentOS-6 /]# ll /boot/grub/*1_5 -rw-r--r--. 1 root root 13380 Mar 12 2020 /boot/grub/e2fs_stage1_5 -rw-r--r--. 1 root root 12620 Mar 12 2020 /boot/grub/fat_stage1_5 -rw-r--r--. 1 root root 11748 Mar 12 2020 /boot/grub/ffs_stage1_5 -rw-r--r--. 1 root root 11756 Mar 12 2020 /boot/grub/iso9660_stage1_5 -rw-r--r--. 1 root root 13268 Mar 12 2020 /boot/grub/jfs_stage1_5 -rw-r--r--. 1 root root 11956 Mar 12 2020 /boot/grub/minix_stage1_5 -rw-r--r--. 1 root root 14412 Mar 12 2020 /boot/grub/reiserfs_stage1_5 -rw-r--r--. 1 root root 12024 Mar 12 2020 /boot/grub/ufs2_stage1_5 -rw-r--r--. 1 root root 11364 Mar 12 2020 /boot/grub/vstafs_stage1_5 -rw-r--r--. 1 root root 13964 Mar 12 2020 /boot/grub/xfs_stage1_5 [root@lab-CentOS-6 /]# ll /boot/grub/stage2 -rw-r--r--. 1 root root 126100 Mar 12 2020 /boot/grub/stage2
grub.conf文件内容:
[root@lab-CentOS-6 /]# cat /boot/grub/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/mapper/vg_labcentos6-lv_root # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.32-431.el6.x86_64) root (hd0,0) //grub查找stage2文件及kernel文件所在设备分区,grub的根。这里是第一块硬盘的第一个分区 kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_labcentos6-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_labcentos6/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg_labcentos6/lv_root rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-431.el6.x86_64.img
第五步,kernal引导
启动伪根里的init初始进程;加载驱动模块(内核才能识别真正的根);加载真正的根;启动真实根里的初始化程序(/sbin/init);此时控制权转给真正的初始化进程/sbin/init;
第六步,init初始化
读取用户级别(/etc/inittab)
根据级别启动服务(/etc/rc.d/rc#.d系统服务、/etc/rc.local用户服务)
初始化系统(/etc/rc.sysinit):网络、主机名、磁盘挂载配额检查、随机数设备、selinux、过程写入/var/log/dmesg等
[root@lab-CentOS-6 etc]# cat /etc/inittab # inittab is only used by upstart for the default runlevel. # # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # System initialization is started by /etc/init/rcS.conf # # Individual runlevels are started by /etc/init/rc.conf # # Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf # # Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf, # with configuration in /etc/sysconfig/init. # # For information on how to write upstart event handlers, or how # upstart works, see init(5), init(8), and initctl(8). # # Default runlevel. The runlevels used are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:3:initdefault: [root@lab-CentOS-6 etc]# [root@lab-CentOS-6 etc]# ls /etc/rc3.d/ K01numad K50dnsmasq K74ntpd K95firstboot S09netcf-transaction S13rpcbind S25netfs S80postfix S99libvirt-guests K05wdaemon K50netconsole K75ntpdate S02lvm2-monitor S10network S14nfslock S26haldaemon S84ksm S99local K10saslauthd K60nfs K85ebtables S07iscsid S11auditd S19rpcgssd S26udev-post S85ksmtuned K30spice-vdagentd K69rpcsvcgssd K87restorecond S08ip6tables S12rsyslog S22messagebus S28cgconfig S90crond K46radvd K71cgred K89rdisc S08iptables S13iscsi S25blk-availability S55sshd S97libvirtd [root@lab-CentOS-6 etc]# [root@lab-CentOS-6 etc]# ls -l /etc/rc3.d/S99local lrwxrwxrwx. 1 root root 11 Mar 12 2020 /etc/rc3.d/S99local -> ../rc.local [root@lab-CentOS-6 etc]# [root@lab-CentOS-6 rc3.d]# cat S99local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local //此处用于增加用户脚本 [root@lab-CentOS-6 rc3.d]#
init初始化(过程可在/var/log/dmesg查看)
第七步,终端启动
纯文本终端(/sbin/mingetty启动6个tty),验证登录、加载用户脚本、环境变量等
验证登录:*/etc/nologin、/etc/usertty、/etc/securetty、/etc/passwd、/etc/shadow
console登录时提示:/etc/issue
登录成功提示:/var/log/lastlog、/var/spool/mail/、/etc/motd
环境变量:/etc/profile、~/.bash_profile、~/.bash_login、~/.profile
x-window
级别5,开启图形界面。
(结束)