linux启动流程

upstart技术 替代init技术进行引导 (centos6)
# 一 BIOS初始化和自检 POST(加电
--加载ROM芯片中的BIOS启动代码--BIOS执行自检程序(初始化硬件并检测硬件是否工作正常) CMOS:存在于RAM中,保存实时时钟和 硬件配置信息和参数的设定 按DEL可进入BIOS设置,CMOS保存这些设置 BIOS:存在于ROM中,保存基本的输入输出程序,系统该信息设置,自检程序,系统启动自举程序 # 二、装载引导程序MBR BIOS会根据启动顺序 读取某硬件(HD CD-ROM USB等)的MBR启动引导程序(512b)并把控制权交给boot loader也就是交给了GRUB MBR分3部分(如硬盘HD 的1磁盘1分区1扇区 512b) 主引导程序 boot loader 446b(GRUB程序安装在boot loader) 分区表 partition tables 64b 校验位 magic muber 55AA 2b boot loader分类:GRUB是boot loader一种 LILO ARM用 GRUB PC和服务器用 # 三、GRUB启动引导阶段 找到BMR的boot loader也就找到了GRUB GRUB引导过程: 加载stage1,stage1通常位于MBR中,用于装载stage2 加载stage1.5,用于识别文件系统 加载stage2,grub的核心程序 注意:stage1.5和stage2文件位于/boot/grub目录下 使用/boot/grub/grub.conf配置文件来加载虚拟linux内核 # 四、内核引导(加载内核) 1 自动识别文件系统 2 加载linux内核vmlinuz到内存 内核取得控制权,放到/boot (vmlinuz是一个gzip压缩文件,加载时需要使用gzip解压) 3 加载initrd*.img镜像到内存(通常是加载USB,LVM,RAID,SCSI等设备模块和磁盘接口的驱动程序) 临时构建只读的/文件系统,在这个文件系统各种执行临时的init进程 临时init进程作用: 把硬件驱动运行起来,磁盘、声卡、网卡等关键驱动的加载 4 有了驱动,内核再去挂载真正的跟文件系统,内核把控制权交给 /sbin/init进程 # 五、init 进程读取顺序
       运行/sbin/init程序 并使用配置文件/etc/inittab并根据此文件初始化
       那么/sbin/init主要做的有4步:如下
        1 启动运行级别:
           init进程会根据/etc/inittab的initdefault取得runlevel运行级别做为当前的运行级别
                
        2 系统初始化运行环境:
           init 运行/etc/rc.sysinit脚本
              @获取网络环境
              @初始化硬件
              @设置主机名
              @设备映射器及相关初始化
              @初始化LVM
              @文件系统检测
              @启用磁盘配额和更新配额
              @挂载设备(根据/etc/fstab配置文件进行挂载)
              @清除开机过程中所产生垃圾文件
              @启用交换分区
              @将信息写入/var/log/dmesg文件
         3 加载内核模块
          init进程 会根据 /etc/modules.conf文件(2.4内核) 或 /etc/modprobe.conf(2.6内核)下文件装载内核模块
         4 启动运行级别下的服务
           init 按照设定的级别启动相关的服务,使用/etc/rc.d/rc*.d目录下的程序启动服务;*表示0-6的7个级别。
            /etc/rc.d/rc*.d目录下的文件由启动状态(S 表示启动,K 表示不启动)、启动顺序、和启动服务程序三部分组成。
         5 最后读取的脚本文件
           init进程会执行 /etc/rc.local脚本
         6 引导用户登录login:
            init运行/sbin/mingetty登录程序
              用户登录(输入用户名和密码)
              /etc/passwd和/etc/shadow检测正确性
              运行/etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc
              进入用户桌面,运行相应的桌面程序(gdm gnome桌面,kde kde桌面,xdm 启动X Windows)

 

 
INIT技术 centos5
centos5 的启动流程
    1 开机自检(bios)
    2 MBR引导
    3 GRUB菜单
    4 加载内核
    5 运行INIT进程
    6 读取 /etc/inittab配置文件
    7 执行/etc/rc.d/rc.sysinit脚本
    8 执行/etc/rc.d/rc脚本
    9 启动mingetty集成
缺点:慢 优点:串行启动

 

 

systemd 技术(centos7 Ubuntu1604)

# 优点
    提高系统的启动速度,和INIT兼容,并行启动

# 分辨启动技术:
    centos6 PID为1 的进程是init 
    centos7 PID为1 的进程是systemd

# 三种技术的对比图:
    1 init 纯串行启动 T1+T2+T3+T4+T5+T6+T+T+T+T+T
    2 upstart 依赖关系的就串行,不依赖就并行启动 T1+T2+T3
    3 systemd 纯并行启动 T1 (通过造假技术解决依赖关系)

# centos7开机引导和启动过程

BIOS 上电自检(POST)
引导装载程序 (GRUB2)
内核初始化
启动 systemd,其是所有进程之父
GRUB2 和 systemd 二者是目前主流的 linux 发行版本所使用的引导装载程序和初始化软件
 
# 引导过程
引导过程能以两种方式之一初始化。其一打开电源按钮将开启系统引导过程。其二,重启操作,从而触发系统引导过程。重启包括了一个关机和重新开始的操作
 
# BIOS 上电自检(POST)
BIOS 上电自检确认硬件的基本功能正常,然后产生一个 BIOS 中断 INT 13H,该中断指向某个接入的可引导设备的引导扇区。它所找到的包含有效的引导记录的第一个引导扇区将被装载到内存中,并且控制权也将从引导扇区转移到此段代码。
 
引导扇区是引导加载器真正的第一阶段。大多数 Linux 发行版本使用的引导加载器有三种:GRUB、GRUB2 和 LILO。GRUB2 是最新的,也是相对于其他老的同类程序使用最广泛的。
 
# GRUB2
GRUB 的最主要作用都是将内核加载到内存并运行

# 阶段 1
功能就是定位并加载阶段 1.5 的代码
 
# 阶段 1.5
 是开始执行存放阶段 2 文件的 /boot 文件系统的驱动程序,并加载相关的驱动程序
 
# 阶段 2
主要功能是定位和加载 Linux 内核到内存中,并转移控制权到内核代码。
 
# 内核
内核自解压完成,则加载 systemd 进程(其是老式 System V 系统的 init 程序的替代品),并转移控制权到 systemd
 
# 引导结束
这就是引导过程的结束此刻,Linux 内核和 systemd 处于运行状态,但是由于没有其他任何程序在执行,故其不能执行任何有关用户的功能性任务
 
 
# 启动过程
启动过程紧随引导过程之后

 
# systemd
首先,systemd 挂载在 /etc/fstab 中配置的文件系统,包括内存交换文件或分区。据此,systemd 必须能够访问位于 /etc 目录下的配置文件,包括它自己的。systemd 借助其配置文件 /etc/systemd/system/default.target 决定 Linux 系统应该启动达到哪个状态(或目标态target)。default.target 是一个真实的 target 文件的符号链接。对于桌面系统,其链接到 graphical.target,该文件相当于旧式 systemV init 方式的 runlevel,系统将暂停于检查点直到其所要求的服务和目标态都满足为止。

 

 

 

 

 

 

centos6与7 的区别
 
区别1 网卡名称
    修改7 网卡名称为eth0
    安装界面时 TAB键 输入内核参数 :net.ifname=0 biosdevname=0
 
区别2 网络配置命令
    7默认ifconfig没有 yum install net-tools
    nmtui
 
区别3 主机名
    6 /etc/sysconfig/network
    7 /etc/hostname 永久生效命令hostnamectl set-hostname XXXXX
 
区别4 字符集
    6 略
    7 /etc/locale.conf 永久生效命令 localectl set-locale LANG=zh_CN.UTF-8
 
区别5 rc.local
    chmod +x /etc/rc.d/rc.local
 
区别6 管理服务
    centos6
    service network restart chkconfig netowrk on/off chkconfig --list
    centos7  
    重启 systemctl restart network systemctl 
    状态 systemctl status network
    开机启动systemctl enable/disable network
    查看某服务是否开机启动systemctl is-enabled network
    查看所有开机服务 systemctl list-unit-files
 

posted on 2023-07-03 17:04  luokeli  阅读(40)  评论(0)    收藏  举报

导航