Linux 引导和系统启动

本文深入解析Linux系统的启动过程,从BIOS到加载内核,再到init进程与systemd机制下的守护进程启动,全面覆盖传统init及现代systemd的管理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bootstrap 引导程序;鞋带 -> 简称 boot 启动

pull oneself up by one’s bootstraps.(体现计算机系统启动的难处)

Linux系统启动分为两大部分:
在这里插入图片描述

一. 第一部分:机器启动(BIOS到 加载内核 ,其实跟Linux关系不大。)

1.BIOS:Basic Input Output System 三步走
(1)通电/硬件自检
(2)读取CMOS中的设置进行初始化
(3)根据CMOS设置寻找引导程序,并加载到内存
现在比较新的笔记本电脑用的是BIOS改进版EFI/UEFI

2.MBR: Master Boot Record 主引导记录 (与之等价的有GPT)
MBR是硬盘上最前面的512个字节,其最后两个字节是55AA,表示是可以启动的。前446个字节代码区存放指针,用于指向真正的引导程序,在Linux中是GRUB。
在这里插入图片描述

3.GRUB
重要配置文件 grub.conf 修改此文件可以改变以下界面
在这里插入图片描述

4.加载内核:将/boot目录下的相关内核文件加载到内存中

二. 第二部分

  1. init进程(第一个进程,PID=1,是之后所有进程的父进程)
    1.1守护进程:
    即Windows里面的服务,一开机就会运行,不用用户自己启动。
    守护进程(Daemon)一般以d结尾,如atd,crond,httpd。
    如登陆界面,图形化界面(不是Linux必须)

1.2启动守护进程的两种机制:
1.2.1 init机制
将守护进程分成三种类型:自己类,独立启动(小),超级守护进程(大,要启动可能要先启动子进程)。针对这三种进程提供三种命令:init、chkconfig、service。

运行级别:不同级别下启动的程序数目不同。
例如级别2:不带网络模式的多用户——就不去启动网卡驱动之类的程序

要启动一个程序,就会有一个脚本。
如果发现tomcat没启动,如何手动启动?
sudo /etc/init.d/apache2 start
或者
service apache2 start(apache是一个service)

明白这些遇到问题时就很有用。
用户登录的三种方式:
在命令行——运行级别1:单用户模式
在shell——运行级别3:普通多用户
在图形化界面——运行级别

用户登录一定是在init启动之后,那么在用户登录出现之前可以修改密码。

1.2.2 systemd机制

init机制的缺点

  1. 串行,启动时间长
  2. 启动脚本复杂

systemd取代init成为第一个进程,CentOS 7+和其他较新的发行版均采用该机制,其主要特点是:
(1) 一个守护进程被视作一个unit(服务单元),unit按功能被分为多种类型(如service,socket-即要使用网络),多个unit组合成一个target(服务组)-联系前面的运行级别。
(2) 使用systemctl主命令统一管理守护进程。
(3) 向下兼容init.d管理机制。

systemd结构过于复杂,违反了kiss规约。

文章最后列出它的一些用法:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSU迦叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值