Linux系统服务 4 ---- 启动流程+模块管理与loader

简介: 一 Linux的启动流程分析     1 目前各大Linux发行版本的主流引导装载程序使用的软件为grub     2 简单来说,系统启动的过程如下:        1.


一 Linux的启动流程分析

    1 目前各大Linux发行版本的主流引导装载程序使用的软件为grub

    2 简单来说,系统启动的过程如下:

       1. 加载BIOS的硬件信息与自我测试,并依据设置取得第一个可启动的设备

       2. 读取并执行第一个启动设备内的MBR的boot Loader也就是一般的grub

       3. 依据boot Loader的设置加载Kernel,Kernel会开始检测硬件与加载驱动程序

       4. 在硬件驱动成功后,Kernel会主动调用init进程,而init会取得run-level信息

       5. init准备软件执行的环境以及各个服务,最后等待用户的登录

    3 引导装载程序称为Boot Loader,就在启动设备的第一个扇区内,也就是我们一直说的MBR

    4 为什么我们推荐先安装windows再安装Linux呢?

       原因是因为Linux具有控制权转交的功能,而Windows是没有的,因为在加载Boot Loader的时候windows只会加载它自己的(流氓啊,业界毒瘤)

    5 假设我的MBR使用的是Linux的grub,那么我们就有三种菜单了

       1. 第一个菜单就是直接指向Linux的内核文件直接加载内核来启动Linux 

       2. 第二个菜单就是将引导装载控权交给windows,此时会加载windows的内核启动windows

       3. 使用Linux的boot sector内的引导装载程序,此时就会跳出另一个grub的菜单

    6 在内核加载完毕进行完毕硬件检测与驱动加载后,此时我们的内核就会主动的调用第一个进程就是/sbin/init

    7 运行级别

       0: 系统直接关机

       1: 单用户维护模式,用在系统出问题时的维护

       2: 类似运行级别3,但是没有NFS服务

       3: 完整含有网络功能的纯文本模式

       4: 系统保留功能

       5: 与运行级别3类似,但是加载了x window

       6: 重新启动

    8 init的配置文件就是/etc/inittab

    9 如果用户有想要在系统启动的时候进行的工作,可以直接写在/etc/rc.d/rc.local,那么该工作就会在启动的时候自动被加载,而不必等我们登录系统去启动。

    10 如果仅是暂时更改系统的运行级别,则使用init x切换到运行级别x


二 Boot Loader

    1 boot Loader是载入内核的重要工具,没有boot Loader的话那么内核根本没有办法被系统加载

    2 硬盘与分区在grub中的代号

       1 第一块查找的硬盘代号为(hd0),而该硬盘的一号分区为(hd0 , 0)

       2 在grub里面,它开始的数字是0而不是1,第一块硬盘的第一个分区的grub的代号为(hd0 , 0), 第一块硬盘的第一个逻辑分区的grub的代号为(hd0 , 4)

    3 BIOS无法读取大硬盘的问题

       举例来说,过去很多朋友经常会发现,系统使用DVD启动安装的时候,可以顺利安装好linux,但是第一次启动时,屏幕只出现黑黑的一片,且出现grub>的字样,而无法进入Linux系统,这是怎么回事?

       1 在安装的过程中,由于是使用DVD或CD启动,因此加载Linux内核不成问题,而内核会失去检测系统硬件,因此可以识别BIOS识别不到的硬盘

       2 但是进入硬盘启动时,由于Kernel与initrd文件都是通过BIOS的INT3通道来读取的,因此你的Kernel与initrd如果放置在BIOS无法判断的扇区中,当然就无法被加载,而仅会出现grub>等待你的处理


三 重点内容

    1 Linux不可随意关机,否则容易造成文件系统错乱或者其他无法启动的问题

    2 启动流程主要是BIOS,MBR,Loader,Kernel+initrd,/sbin/init等流程

    3 init的配置文件为/etc/initab,此文件可以设置默认的runlevel,系统初始化脚本,不同执行等级的服务

    4 grub的配置文件与相关文件系统定义文件太多放置/boot/grub目录中,配置文件名为menu.lst

    5 若要进入救援模式,可于启动菜单过程中,在kernel的选项后面加入"single"或者"init=/bin/bash"等方式来进入救援模式



目录
打赏
0
0
0
0
15
分享
相关文章
|
22天前
|
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
56 23
Linux系统之whereis命令的基本使用
|
3月前
|
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
277 78
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
165 19
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
136 23
|
2月前
|
Linux systemd 服务启动失败Main process exited, code=exited, status=203/EXEC
通过以上步骤,可以有效解决 systemd 服务启动失败并报错 `Main process exited, code=exited, status=203/EXEC` 的问题。关键在于仔细检查单元文件配置、验证可执行文件的有效性,并通过日志分析具体错误原因。确保可执行文件路径正确、文件具有执行权限,并且可以独立运行,将有助于快速定位和解决问题。
509 7
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
128 13
12.13 Linux工作管理
工作管理指的是在单个登录终端(也就是登录的 Shell 界面)同时管理多个工作的行为。也就是说,我们登陆了一个终端,已经在执行一个操作,那么是否可以在不关闭当前操作的情况下执行其他操作呢?
151 0
12.13 Linux工作管理
Linux系统管理-工作管理(后台程序管理)
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/77857203 简介 工作管理指的是在当个登陆终端中同时管理多个工作的行为。
1201 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等