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"等方式来进入救援模式



目录
相关文章
|
22天前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
56 23
Linux系统之whereis命令的基本使用
|
3月前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
277 78
|
2月前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
137 23
|
3月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
129 13
|
3月前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
87 0
|
4月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
398 8
|
4月前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
1225 6
|
9天前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
66 25
|
7天前
|
缓存 Linux
Linux查看内存命令
1. free free命令是最常用的查看内存使用情况的命令。它显示系统的总内存、已使用内存、空闲内存和交换内存的总量。 free -h • -h 选项:以易读的格式(如GB、MB)显示内存大小。 输出示例: total used free shared buff/cache available Mem: 15Gi 4.7Gi 4.1Gi 288Mi 6.6Gi 9.9Gi Swap: 2.0Gi 0B 2.0Gi • to
20 2
AI助理

你好,我是AI助理

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