【就业班作业】【第九周】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,开启图形界面。

 (结束)

posted @ 2020-09-28 11:42  sankeya  阅读(201)  评论(0编辑  收藏  举报