| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux系统启动过程 -> 正文阅读 |
|
[系统运维]Linux系统启动过程 |
关于linux 系统的启动流程我们可以按步进?划分为如下: BIOS
引导操作系统
加载操作系统 关于BIOS1. BIOS 是什么上个世纪70 年代初,”只读内存”(read-only memory ,缩写为ROM )发明,开机程序被刷?ROM 芯?,计算机通电后,第?件事就是读取它。计算机,启动这块芯??的程序叫做”基本输入输出系统”(Basic Input/Output System ),简称为BIOS 。 它是?组固化到计算机内主板上?个ROM 芯?上的程序,它保存着计算机最重要的基本输?输出的程序、开机后?检程序和系统?启动程序,它可从CMOS 中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。 2. BIOS 存储的信息BIOS 芯?中主要存放:
BIOS :计算机加电?检完成后第?个读取的地?就是就是BIOS (Basic Input Output System ,基础输?输出系统),BIOS ??记录了主机板的芯?集与相关设置,如CPU 与接?设备的通信频率、启动设备的搜索顺序、硬盘的信息、系统时间、内存信息、时钟信息、PnP 特性、外部总线、各种接?设备的I/O 地址、已经与CPU 通信的IRQ 中断信息,所以,启动如果要顺利启动,?先要读取BIOS设置。 计算机会?先加载BIOS 信息,BIOS 信息是如此的重要,以?于计算机必须在最开始就找到它。 电脑启动后,CPU 逻辑电路被设计为只能运?内存中的程序,没有能?直接运?存在于软盘或硬盘中的操作系统,如果想要运?,必须要加载到内存(RAM )中。 3. BIOS 需要在内存中加载中断向量表和中断服务程序BIOS 程序被固化在计算机主机板上的?块很?的ROM 芯??。现在CS:IP 已经指向了0XFFFF0 这个位置,意味着BIOS 开始启动。随着BIOS 程序的执?,屏幕上会显?显卡的信息,内存的信息,说明BIOS 程序在检测显卡,内存,这个就是POST 开机?检期间,有?项对启动操作系统?关重要的?作,那就是BIOS 在内存中建?中断向量表和中断服务程序BIOS 程序在内存最开始的位置(0x00000 )?1KB 的内存空间(0x00000~0x003FF )构建中断向量表,在紧挨着它的位置?256KB 的内存空间构建BIOS 数据区(0x00400~0x004FF ),并在?约57KB 以后得位置(0x0e05b )加载了8KB 左右的与中断向量表相应的若?中断服务程序。 中断向量表有256 个中断向量,每个中断向量占4个字节,其中两个字节是CS 值,两个字节是IP 值。每个中断向量都指向?个具体的中断服务程序。 一、启动BIOS ,准备实模式下的中断向量表和中断服务程序电脑启动后,CPU 逻辑电路被设计为只能运?内存中的程序,没有能?直接运?存在于软盘或硬盘中的操作系统,如果想要运?,必须要加载到内存(RAM )中。 BIOS 是如何启动的,CPU 硬件逻辑设计为在加电瞬间强?将CS 值置为 BIOS 程序被固化在计算机主机板上的?块很?的ROM 芯??。现在CS:IP 已经指向了 1. POST ?检BIOS 的第?步动作就是进? 上电?检(POST )。
POST 的?作是检查硬件设备。如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中?。如果没有问题,随着BIOS 程序的执?,屏幕上会显?显卡的信息,内存的信息等。 电脑主机打开电源的时候,随后会听到滴的?声,系统启动开始了开机?检(POST-power on selftest )?检开始) 这个过程中主要是检测计算机硬件设备?如:CPU ,内存,主板,显卡,CMOS 等设备是否有故障存在。 2. 初始化设备BIOS 的第?步动作就是 枚举本地设备并初始化 有?项对启动操作系统?关重要的?作,那就是BIOS 在内存中建?中断向量表和中断服务程序。 BIOS 程序在内存最开始的位置( 中断向量表有256 个中断向量,每个中断向量占4个字节,其中两个字节是CS 值,两个字节是IP 值。 每个中断向量都指向?个具体的中断服务程序。 3. BIOS-runtime 服务按照boot 启动顺序搜索设备,寻找MBR由于BIOS 功能使?上的不同,它由两个部分组成:POST 和runtime 服务。POST 完成后,它将从存储器中被清除,但是BIOS runtime 服务会被保留,?于?标操作系统。 为了启动操作系统,BIOS 的runtime 服务将搜索那些激活状态的或是可引导启动的设备,搜索的顺序则由CMOS 设置决定(也就是我们平时所谓的在BIOS 中设置的启动顺序)。?个软驱,?台光驱,?个硬盘上的分区,?络上的设备甚??个usb 闪存盘都可以作为?个启动设备。 当然,linux 通常是从硬盘启动的。硬盘上的MBR (主启动记录)包含有基本的boot loader ,它是?个512 字节??的扇区,位于磁盘的第?个扇区(0磁头0磁道1扇区)。当MBR 被装载到RAM 中后,BIOS 就会将控制权转交给MBR 。 二、引导操作系统内核并为保护模式做准备位于MBR 中的主 boot loader 是?个512 字节的镜像,其中不仅包含了 bootload 程序代码,还包含了?个?的分区表。 最初的446 字节是主 boot loader ,它??就包含有可执?代码以及错误消息?本。接下来的64 字节是分区表,其中包含有四个分区的各?的记录(?个分区占16 字节)。MBR 通过特殊数字 ?先对CPU 发送 主 boot loader 的?作是寻找并加载次 boot loader (内核加载程序) 它通过分析分区表,找出激活分区来完成这个任务,当它找到?个激活分区时,它将继续扫描剩下的分区表中的分区,以便确认他们都是未激活的。 确认完毕后,激活分区的启动记录(次 boot loader )从设备中被读到 RAM ,并被执?。 说起Boot Loader,也就是在linux资料中俗称的grub。
但1,2合并起来,统称为GRUB引导阶段。 “主引导记录”只有512 个字节,放不了太多东西。它的主要作?是,告诉计算机到硬盘的哪?个位置
其中,第?部分”分区表”的作?,是将硬盘分成若?个区。 1. 分区表硬盘分区有很多好处。考虑到每个区可以安装不同的操作系统,”主引导记录”因此必须知道将控制权转交给哪个区。分区表的?度只有64 个字节,???分成四项,每项16 个字节。所以,?个硬盘最多只能分四个?级分区,?叫做“主分区”。
最后的四个字节(”主分区的扇区总数”),决定了这个主分区的?度。也就是说,?个主分区的扇区总数最多不超过2的32 次?。 如果每个扇区为512 个字节,就意味着单个分区最?不超过2TB 。再考虑到扇区的逻辑地址也是32位,所以单个硬盘可利?的空间最?也不超过2TB 。 如果想使?更?的硬盘,只有2个?法:
MBR :第?个可开机设备的第?个扇区内的主引导分区块,内包含引导加载程序。 引导加载程序(Boot loader ): ?个可读取内核?件来执?的软件。 内核?件:开始操作系统的功能。 2. 引导操作系统的过程由硬盘启动时,BIOS 通常是转向第?块硬盘的第?个扇区,即主引导记录(MBR) 。装载GRUB 和操作系统的过程,包括以下?个操作步骤:
不同的是,微软操作系统都是使??种称为链式装载的引导?法来启动的,主引导记录仅仅是简单地指向操作系统所在分区的第?个扇区。 3. 加载主引导加载程序-基本装载程序众所周知,硬盘上第0磁道第?个扇区被称为MBR ,也就是Master Boot Record ,即主引导记录,它的??是512 字节,别看地?不?,可??却存放了预启动信息、分区表信息。 按照BIOS 所设定的系统启动流程,如果检测通过,则根据引导次序(Boot Sequence) 开始在第?台设备上?持启动程序,我们的启动设备主要包括硬盘、USB 、SD 等,我们?般?的是硬盘,然后进?读取第?个设备就是硬盘,第?个要读去的就是该硬盘的主引导记录MBR (Master BootRecord ),然后系统可以根据启动区安装的引导加载程序(Boot Loader )开始执?核?识别的? 然后将控制权交给主引导代码。主引导代码的任务包括
4. 加载次引导记载程序–?级装载程序bootload 如GRUB系统读取内存中的grub 配置信息(?般为menu.lst 或grub.lst ),并依照此配置信息来启动不同的操作系统。 这时,计算机的控制权就要转交给硬盘的某个分区了,这??分成三种情况。 1. 情况A:卷引导记录上?节提到,四个主分区??,只有?个是激活的。计算机会读取激活分区的第?个扇区,叫做“卷引导记录”(Volume boot record ,缩写为VBR )。“卷引导记录”的主要作?是,告诉计算机,操作系统在这个分区?的位置。然后,计算机就会加载操作系统了。 2. 情况B:扩展分区和逻辑分区随着硬盘越来越?,四个主分区已经不够了,需要更多的分区。但是,分区表只有四项,因此规定有且仅有?个区可以被定义成“扩展分区”(Extended partition )。所谓“扩展分区”,就是指这个区???分成多个区。这种分区??的分区,就叫做”逻辑分区”(logical partition )。 计算机先读取扩展分区的第?个扇区,叫做“扩展引导记录”(Extended boot record ,缩写为EBR )。它??也包含?张64 字节的分区表,但是最多只有两项(也就是两个逻辑分区)。 计算机接着读取第?个逻辑分区的第?个扇区,再从??的分区表中找到第三个逻辑分区的位置,以此类推,直到某个逻辑分区的分区表只包含它??为?(即只有?个分区项)。因此,扩展分区可以包含?数个逻辑分区。 但是,似乎很少通过这种?式启动操作系统。如果操作系统确实安装在扩展分区,?般采?下?种?式启动。 4. 情况C:启动管理器在这种情况下,计算机读取”主引导记录”前?446 字节的机器码之后,不再把控制权转交给某?个分区,?是运?事先安装的“启动管理器”(boot loader ),由??选择启动哪?个操作系统。 Boot Loader 就是在操作系统内核运?之前运?的?段?程序。通过这段?程序,我们可以初始化硬件设备、建?内存空间的映射图,从?将系统的软硬件环境带到?个合适的状态,以便为最终调?操作系统内核做好?切准备。 Boot Loader 有若?种,其中Grub 、Lilo 和spfdisk 是常?的Loader 。 从bios/uefi到操作系统服务启动分legacy模式和UEFI模式。
UEFI时代 三、加载操作系统内核当内核映像被加载到内存中,并且次引导加载程序释放控制权之后,内核阶段就开始了。 其中加载过程需要借助 BIOS 提供的
??选择要加载的内核之后,次引导加载程序(GRUB )就会根据/boot/grub.conf 配置?件中所设置的信息,从/boot/ 所在的分区上读取Linux 内核映像,然后把内核映像加载到内存中并把控制权交给Linux 内核。 linux 内核获得控制权之后开始???的事
根据grub 设定的内核映像所在路径,系统读取内存映像,并进?解压缩操作。此时,屏幕?般会输出“Uncompressing Linux” 的提?。当解压缩内核完成后,屏幕输出“OK, booting the kernel” 。 系统将解压后的内核放置在内存之中,并调? 启动第五步 ??层init 依据inittab ?件来设定运?等级 内核被加载后,第?个运?的程序便是/sbin/init ,该?件会读取/etc/inittab ?件,并依据此?件来进?初始化?作。其实/etc/inittab ?件最主要的作?就是设定Linux 的运?等级,其设定形式是“:
1. 启动内核模块具体是依据 2. 执?不同运?级别的脚本程序根据运?级别的不同,系统会运?rc0.d 到rc6.d 中的相应的脚本程序,来完成相应的初始化?作和启动相应的服务。 三、加载内核镜像这个阶段,主要是vmlinuz ?件加载initrd ?件。 内核映像并不是?个可执?的内核,?是?个压缩过的内核映像。通常它是?个 zImage (压缩映像,?于 512KB )或?个 bzImage (较?的压缩映像,?于 512KB ),它是提前使? zlib 进?压缩过的。在这个内核映像前?是?个例程,它实现少量硬件设置,并对内核映像中包含的内核进?解压,然后将其放??端内存中,如果有初始 RAM 磁盘映像,就会将它移动到内存中,并标明以后使?。然后该例程会调?内核,并开始启动内核引导的过程。 当 bzImage (?于 i386 映像)被调?时,我们从 这 个 例 程 会 执 ? ? 些 基 本 的 硬 件 设 置 , 并 调 ? 参考链接linux操作系统引导与启动——内核启动和初始化(一) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 21:46:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |