当前位置: 澳门新濠3559 > 操作系统 > 正文

BIOS 将被加载到内存里,BIOS启动自检

时间:2019-12-26 00:20来源:操作系统
一、系统启动流程 一般来说,Linux 系统的启动流程是这样的: 开机之后,位于计算机主板 ROM 芯片上的 BIOS被最先读取,在进行硬件和内存的校验以及 CPU 的自检没有异常后, BIOS将被加

一、系统启动流程

一般来说,Linux 系统的启动流程是这样的:

  1. 开机之后,位于计算机主板 ROM 芯片上的 BIOS 被最先读取,在进行硬件和内存的校验以及 CPU 的自检没有异常后, BIOS 将被加载到内存中。

  2. BIOS 按照其设置的设备启动顺序,依次尝试加载含有 MBR 信息的可启动设备(一般是硬盘,可设置),然后将控制权交给 MBR 中的 Bootloader(引导程序)。

  3. Linux 中使用 GRUB(多操作系统引导程序)作为 Bootloader。GRUB 可以识别(根)文件系统并加载 Kernel(内核),同时将系统的控制权交给 Kernel。

  4. Kernel 极其精简,加载过程中也可能会加载一些必要的模块打包文件。

  5. 随同 Kernel 一起加载的还有 init(/sbin/init)进程,是 Linux 启动的第一个进程,它负责加载文件系统并根据运行级别启动(重启)和关闭相应服务,最后初始化字符终端和/或启动图形终端,等待用户登录。

至此,系统启动完成。

 

多数操作系统的启动流程:

二、流程详解

BIOS启动自检 ->MBR引导->执行引导程序GRUB->加载内核->执行init->runlevel

1. BIOS(Basic Input Or Output,基本输入输出系统)

BIOS 是计算机启动后最先被读取的系统,在硬件和内存的校验以及 CPU 的自检通过、没有异常后,BIOS 将被加载到内存里。BIOS 主要存储了设备(一般是硬盘,可在 BIOS 界面设置)的启动顺序,BIOS 依次尝试加载含有 MBR 信息的可启动设备,找到后将控制权交给 MBR 中的 Bootloader。

 

 

2. MBR(Master Boot Record,主引导记录)

MBR 在磁盘上的第一个扇区(1 扇区占 512 字节),它的前 446 字节是 Bootloader(引导程序),后 4 个 16 字节是最多 4 个主分区信息,最后 2 字节 55 AA 是启动标识。

Linux 中使用 GRUB 作为 Bootloader。

 

  1. BIOS(Basic Input Output System)

    负责检查硬件并且查找可启动设备,如USB、CDROM、HD。

     

  2. MBR

    BIOS找到可启动设备后执行其引导代码,引导代码为MBR(共512字节)的前446字节。

    引导代码为操作系统的引导程序。

     

  3. GRUB

    BIOS 将被加载到内存里,BIOS启动自检。Grub是现在Linux使用的引导程序。(诸如window下的ntldr)

    可以引导大多数的操作系统。

    grub相关文件保存在/boot/grub。

    grub配置文件为/boot/grub/grub.conf。

     

    目录内含文件:

    /boot/grub/stage1 #MBR引导代码的镜像文件,如果MBR损坏,可拷贝过去。

    诸如/boot/grub/e2fs_stage1_5等以stage1_5后缀的文件是支持文件系统的加载文件。

    /boot/grub/stage2 #stage1引导完后的第二个引导文件

     

  4. Kernel

    MBR的引导代码将负责找到并加载Linux内核。

    内核保存在:/boot/vmlinuz-2.6.32-279.el6.i686

    一般还会加载内核模块打包文件:/boot/initramfs-2.6.32-279.el6.i686

    为保持Kernel的精简,一些不常用的驱动、功能编译成为模块,在需要的时候动态加载,这些模块被打包保存为一个initramfs文件。

    在需要的时候动态加载,而这些模块被打包保存为一个initramfs文件。

    initramfs是initrd的替代优化版本(早期Linux使用initrd文件)。

     

    通过dmesg命令或查看/var/log/dmesg文件,可查询此次启动的内核输出信息。(查询内核的某些故障有用)

3. GRUB(GRand Unified Bootloader,多操作系统引导程序)

GRUB 是现在 Linux 使用的主流引导程序,可以用来引导现在几乎所有的操作系统。

GRUB 是模块化的,运行时会经历如下阶段:

澳门新濠3559 1

(1)stage1:stage 1 大小 512 字节(和 MBR 一样大),是 MBR 的备份,MBR 损坏时可以从这里得到一个备份。

(2)*_stage1_5:用于识别多种类型文件系统的文件。CentOS 6 以后的版本默认文件系统是 ext4,会相应地识别 e2fs_stage1_5 文件。识别后,加载文件系统。

(3)stage2:根据 GRUB 配置文件 /boot/grub/grub.conf 的内容来决定如何加载 Kernel。该文件内容一般如下:

澳门新濠3559 2

参数详解:

default:默认启动的内核编号,从0开始(每个内核信息由title标识)
timeout:等待用户选择要启动的内核的超时时间,单位为秒
splashimage:使用的背景图片
hiddenmenu:隐藏菜单
title:操作系统或内核的标题
    root:内核所在的分区,(hd0,1)表示第1块磁盘的第1个分区
    (在grub中,设备统统以hd开头,并紧跟一个数字作为各磁盘设备的标记,从0开始编号;分区也是从0开始编号,而我的(hd0,1)是因为我的第0个分区是swap交换分区)
    kernel:要加载的内核文件,后面附带启动参数
    initrd:额外驱动或模块的打包文件,ram disk 或 ram fs 文件(通常是归档压缩文件,以.img为文件名后缀)

 

 

4. Kernel(内核)

澳门新濠3559,GRUB 的最后阶段 stage2 会根据 GRUB 配置文件 /boot/grub/grub.conf 的内容来加载 Kernel,并将系统控制权交给 Kernel。

命令 dmesg 可以用来查看本次启动时内核的输出信息。

 

  1. INIT

    init是LINIX系统运行的第一个进程,也是所有进程的父进程。

    init会一直存在,直到关机。

    作用:调用 /etc/rc.d/rc.sysinit负责对系统初始化,挂载文件系统,并且根据运行级别启动相应服务。

     

    Linux运行级别:

    1. 关机,
    2. 单用户模式,
    3. 不带网络的多用户模式,
    4. 多用户模式,
    5. 未使用
    6. XII图形化模式
    7. 重启

     

    可通过/etc/inittab配置文件修改默认的运行级别;

    每个级别对应的启动服务保存在/etc/rc.d/rc[0123456].d各目录中。

    命令:

    runlevel:显示上一个和当前运行的级别。

    init:可改变当前的运行级别。

     

     

    单用户修改密码:

    为内核传递参数"1"或"single"可系统进入单用户模式;

    单用户模式下不启动任何服务,并直接以root用户登陆,不需要密码。

    此时可以使用passwd修改root密码。

     

    GRUB加密:

    通过在grub.conf中的grub.conf的启动配置的首行中加入如下参数即可对grub进行加密:

    password –md5 …………………………………………… #点为密码

     

    加密后的密码可以通过grub-md5-crypt生成。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

5. init(Linux 启动的第一个进程)

init 进程是 Linux 启动的第一个进程,PID 为 1,其他所有进程是它的子进程。

Linux 的 init 进程是由传统的 sysvinit 演变而来的,init 进程读取的配置文件 /etc/inittab 仅保留了 sysvinit 的 inittab 文件定义的默认运行级别 runlevel,其他的配置则分散到了 /etc/init/*.conf 多个文件中。

init 进程会根据 /etc/inittab 文件定义的 runlevel 去执行相应目录下的脚本。

澳门新濠3559 3

澳门新濠3559 4

 

6. runlevel(运行级别)

命令 runlevel 可显示上一个及当前 runlevel。命令 init 可用来改变当前的 runlevel。

Linux 的 runlevel 有 7 个:

0:系统停机,默认运行级别不能设为0,否则不能正常启动
1:单用户模式,root权限,用于系统维护,禁止远程登陆
2:多用户模式(无网络)
3:多用户状态(命令行界面)
4:保留未使用
5:多用户模式(X11图形化界面)
6:系统重启,默认运行级别不能设为6,否则不能正常启动

这 7 个 runlevel 分别对应了 /etc/rc.d/rc[0-6].d/ 七个目录:

澳门新濠3559 5

每个目录存储了所有以 K* 和 S* 开头的文件,K 开头的文件表示从其他 runlevel 切换过来需要开启(重启)的服务,S 开头的文件表示从其他 runlevel 切换过来需要关闭的服务。

 

三、单用户修改root密码

在开机启动时,为内核传递参数 "1" 或 "single" ,可让系统进入单用户模式(runlevel 1)。单用户模式下不启动任何服务,直接以 root 用户登录,并且不需要密码,可以使用 passwd 修改 root 密码。

 

操作步骤如下:

开机后,在 GRUB 引导等待用户选择要加载内核的超时时间内,随意按下一个键,进入内核的选择界面。

澳门新濠3559 6

上图中,选中目标版本内核,按下 "e" 键进入编辑。

澳门新濠3559 7

上图中,选中 kernel,按下 "e" 键进入编辑。

澳门新濠3559 8

上图中,在行末尾为内核传递参数 "1" 或 "single" ,回车确定,按 "b" 启动。

澳门新濠3559 9

上图中,成功进入单用户模式,并且是 root 用户登录。使用 passwd 修改 root 密码,然后 exit 退出,正常重启即可。

澳门新濠3559 10

 

四、GRUB加密

管理员可以通过单用户模式修改 root 密码,但是这也导致任何人都可能通过这种方式入侵系统。为了防止这种危险,可以进行 GRUB 加密。

  1. 在 root 用户下输入 grub-md5-crypt 命令,然后输入为 GRUB 设置的密码,产生一组 MD5 加密后的密文。

澳门新濠3559 11

  1. 将得到的密文添加到 GRUB 配置文件 /boot/grub/grub.conf 中。

澳门新濠3559 12

这样在用户在开机后要编辑内核时就会强制要求输入 GRUB 密码,剔除了非法修改 root 密码的可能。

其次,也可以在 title 段添加一个 passward,它是用于内核(系统)启动时要求输入的密码。

 

参考链接:

Linux系统启动流程

图解Linux系统启动流程

Linux系统启动过程

linux中inittab文件详解

Linux系统有7个运行级别(runlevel)

CentOS 6.4 Grub加密码

编辑:操作系统 本文来源:BIOS 将被加载到内存里,BIOS启动自检

关键词: