Linux学习——系统启动流程

Linux学习——系统启动流程
    (1)BIOS(Basic input/Output System,基本输入/输出系统),它是硬件与软件之间的接口(位于芯片主板上),而且是非常基本的接口。它的工作就是检查计算机的硬件设备,如CPU、内存,硬盘和风扇速度等,选择从软盘、光盘或者硬盘中的一个作为启动盘启动计算机;

    (2)读取完BIOS之后,计算机会从所选的启动设备中读取硬盘MBR引导扇区(光盘是512B大小)。MBR会告诉电脑从设备的某一个分区来装载引导加载程序(Boot loader),boot loader存储有操作系统的相关信息,比如操作系统名称,内核(kernel)位置等,

    (3)MBR会加载GRUB,这是计算机启动的第一个程序,计算机会读取GRUB并加载对应的操作系统内核(kernet)。

    (4)加载kernet内核后,内核会以只读方式挂载根文件系统,当根文件系统被挂载后,开始装载第一个进程(用户空间的进程),执行/sbin/init,之后就将控制权交接给了init程序。

    (5)init是系统所有进程的父进程,最先启动的。init进程首先读取/etc/inittab文件来执行脚本进行相应系统初始化,要注意的是:/etc/inittab文件只定义系统默认运行级别,真正进行系统初始化工作的是/etc/rc.sysinit脚本(因此可以在开机时指定启动级别,也可以在登录后找到/etc/inittab修改默认运行级别)

    详情可参考这篇文章:https://www.cnblogs.com/anay/p/9028765.html

Linux运行级别

      在Linux7之前是有"0-6"共7个运行级别(可以百度查看分别有哪些)。而在Linux7之后就变成了2个级别(其实还是有一些其他级别的),分别为
3(multi-user.target多用户,命令行界面),5(graphical.target图形界面)

      (1)Linux7修改默认运行级别:systemctl set-default 级别.target
                           查询默认运行级别:systemctl get-default
               Linux7之前可直接通过修改/etc/inittab文件来修改默认运行级别

      (2)利用运行级别修改root密码:Linux7之前或之后都是利用开机前选择启动为单用户级别,直接进入root用户中(无需登录密码),然后修改密码即可。
            方法:https://www.cnblogs.com/betterquan/p/11474148.html

grub加密

        这个grub加密主要是为了防止其他用户可直接利用进入单用户模式,而窃取到数据。

        方法:https://www.cnblogs.com/fusheng11711/p/10769933.html
        解释:1、Linux7之前:第一步命令是为了获取加密之后的暗文,第二步就是复制暗文,将这个放到password上面。之后重启只能按p指令(本来之前是可以直接按a进入编辑,现在是不行了)输入密码之后才能进入单用户模式。(grub.config内容各字段解释可直接百度下)
        2、Linux7之后:在/etc/grub.d/00_header中输入的内容:
Linux学习——系统启动流程

bios加密

        系统启动流程第一步就是通过bios,bios这一步选择硬盘或者光盘来寻找MBS。这个时候就可以利用这个特点通过进入bios,并选择另一个光盘来进入。
        (这个也就是说原先安装操作系统的时候通过光盘的ios将操作系统安装到硬盘内,之后每次启动的时候就会选择硬盘来进入操作系统。而这个时候选择光盘来进入,这样操作系统就会挂在到原先安装的硬盘地址上去,硬盘就相当于外部人员了,这样就可以毫无障碍的访问本地文件,可以直接修改root用户密码或者去掉grub.d内加密的密码)
        选择光盘重启再选择安全模式,通过安全模式就可以重新进入源系统目录中。
        具体步骤可参考:https://www.jianshu.com/p/2e0f81c20376