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



目录
相关文章
|
28天前
|
存储 算法 Linux
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
61 5
|
1月前
|
Shell Linux C语言
【Shell 命令集合 系统设置 】⭐Linux 卸载已加载的内核模块rmmod命令 使用指南
【Shell 命令集合 系统设置 】⭐Linux 卸载已加载的内核模块rmmod命令 使用指南
29 1
|
1月前
|
搜索推荐 Shell Linux
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
37 2
|
15天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
1天前
|
Linux
Linux(23) Linux 4G模块不能获取IP排查思路
Linux(23) Linux 4G模块不能获取IP排查思路
4 0
|
8天前
|
存储 关系型数据库 MySQL
Linux服务详解
Linux服务详解
22 0
|
9天前
|
网络协议 Ubuntu Linux
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
|
9天前
|
消息中间件 监控 Linux
Linux进程和计划任务管理
通过这些命令和工具,你可以有效地管理Linux系统中的进程和计划任务,监控系统的运行状态并保持系统的稳定和可靠性。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
101 2
|
16天前
|
存储 缓存 监控
Linux内存和硬盘空间管理技巧
了解Linux内存和硬盘管理技巧,提升系统性能和稳定性。使用`free`, `top`, `vmstat`监控内存,通过`sync`, `echo 1 > /proc/sys/vm/drop_caches`清理缓存。利用Swap分区释放内存。借助`df`, `du`检查硬盘空间,清理无用文件,使用`clean-old`, `gzip`, `tar`压缩归档。查找大文件用`find`和`du`,确保
33 0
|
16天前
|
监控 Java Linux
linux下监控java进程 实现自动重启服务
linux下监控java进程 实现自动重启服务