linux系统的启动过程
大致可以分为五个阶段
内核的引导
运行init
系统初始化
建立终端
用户登录系统
大致步骤
1.内核的引导:操作系统--->/boot
2.运行init:操作系统--->/boot--->init进程(配置文件 /etc/inittab,根据配置文件中的运行 级别0-6,运行这些开机启动的程序)
3.系统初始化:操作系统--->/boot--->init进程--->运行级别--->/etc/init.d(系统初始化)
在init的配置文件中有这么一行:si::sysinit:/etc/rc.d/rc.sysinit,它调用执行 了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell脚本,它主要是完成系统 初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本, 它主要的工作有:激活交换分区,检查磁盘,加载硬件模板以及其它一些需 要优先执行的任务
4.建立终端
5.用户登录系统 操作系统--->/boot--->init进程--->运行级别--->/etc/init.d(系统初始 化)--->建立终端--->用户登录
详细步骤
1. --->通电
2. --->BIOS(POST(power on Self Test)开机自检,BIOS程序首先检查计算机能否满足运行的基本条件
3. --->启动程序,硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序,这时BIOS需要知道”下一阶段的启动顺序“具体放在哪个设备里(磁盘,光盘,硬盘等),也就是说,BIOS需要有一个外部存储设备的排序,排在前面的设备就是优先转交控制权的设备,这种排序叫做"启动顺序"Boot Sequence)
4. --->主引导记录MBR(master boot record),主引导记录只有512个字节,它的主要作用是,告诉计算机到硬盘的哪一个位置去找操作系统
5. --->启动管理器(计算机读取主引导记录前面的机器码之后,不再把控制权转交给某一个分区,而是运行事先安装的”启动管理器“,由用户选择启动哪一个操作系统,目前linux环境中最流行的启动管理器是Grub,在boot目录下)
6. --->(加载)操作系统,系统初始化,控制权交给操作系统后,操作系统的内核首先被载入内存,开始运行的第一个程序是systemd/init,执行默认target配置文件/etc/systemd/system/default.target(centos 7/8的第一个进程是systemd,centos6的第一个进程是init)
7. --->运行级别runlevel(启动对应运行级别里的服务,查看运行级别runlevel)
8. --->用户登录
附BIOS介绍:
BIOS:Basic input output system,基本输入输出系统,它是电脑ROM芯片上的一段程序,它保存着计算机最重要的基本输入输出的程序,开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息,其主要功能是为计算机提供最底层的,最直接的硬件设置和控制。
(CMOS常指保存计算机的基本启动信息,如日期,时间,启动设置等,区别BIOS,CMOS是主板上的一块可读写的并行或串行的FLASH芯片,是用来保存BIOS的硬件设置和用户对某些参数的设定,通常在电脑启动时根据电脑型号按Delete键或F2或F8或F12键可以进入)
BIOS存储的信息
BIOS芯片中主要存放:
·自诊断程序,通过读取CMOS RAM 中的内容识别硬件配置,并对其进行自检和初始化;
·CMOS设置程序:引导过程中,用特殊热键启动,进行设置后,存入CMOS RAM中;
·系统自举装载程序,在自检成功后将磁盘上相对0道0扇区上的引导程序装入内存,让其运行以装入DOS(Disk operating system)磁盘操作系统。
·主要I/O设备的驱动程序和中断服务
参考:BIOS的介绍及linux启动过程:https://blog.csdn.net/tiantianhaoxinqing__/article/details/123972845
linux启动的详细过程:
https://blog.csdn.net/shuju1_/article/details/126201364
linux系统启动过程:
http://edu.jb51.net/linux/linux-system-boot.html