linux系统启动流程

简介: linux系统启动流程

按下系统的电源开关,过一会就可以看到Linux的登录界面了。

你是否曾经想过,从按下电源开关到登录界面出现,这后面到底发生了什么?


image.png

Linux 系统在启动过程中,首先是固件(PC 上大多是 CMOS/BIOS)的物理检测,诸如检测系统的显卡、CPU 和硬盘等,可从系统按下电源后看到此检测信息;检测无问题,将读取硬盘的MBR(主引导记录)中的自举程序,Linux 中常用的自举程序GRUB。自举程序 GRUB 在系统启动期间只有一个作用,就是载入内核,内核在引导期间有两个主要的作用,一个是驱动系统硬件,另一个将启动系统进程 init;init 进程将读取其配置文件/etc/inittab 完成后续所有的引导。

image.png


整个过程基本可以分为7个步骤:POST-->BIOS-->MBR(GRUB)-->Kernel-->Init-->Runlevel。下面会详细说明每个过程的作用。


1. 开机自检 (POST, Power On Self Test)


电脑通电之后,首先加载BIOS(basic input output system,基本输入输出系统)。而BIOS程序首先检查计算机能否满足运行的基本条件,这个叫做“硬件自检(Power On Self Test)”。


主要检查:主板,CPU,内存,磁盘,网卡,声卡,显卡,鼠标,键盘,显示器等

2. 启动顺序


硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。这是,BIOS需要知道,“下一阶段的启动程序”具体存放在哪个设备里(磁盘,光盘,移动硬盘等)。也就是说,BIOS需要有一个外部存储设备的排序,排在前面的设备就是优先转交控制权的设备。这种排序叫做“启动顺序”(Boot Sequence)

3、主引导记录 MBR( master boot record)


主引导记录只有512个字节,位于0柱面,0磁道,1扇区,放不了太多东西。它的主要作用是,告诉计算机到硬盘的那一个位置去找操作系统


4、启动管理器 Grub


在这种情况下,计算机读取”主引导记录”前面446字节的机器码之后,不再把控制权转交给某一个分区,而是运行事先安装的”启动管理器”(boot loader),由用户选择启动哪一个操作系统。

Linux环境中,目前最流行的启动管理器是Grub

在centos7中的启动管理是grub2

[root@fruit boot]# ll
总用量 112548
-rw-r--r--. 1 root root   153591 10月 20 2020 config-3.10.0-1160.el7.x86_64
drwxr-xr-x. 3 root root       17 5月  19 22:06 efi
drwxr-xr-x. 2 root root       27 5月  19 22:08 grub
drwx------. 5 root root       97 5月  19 22:11 grub2
-rw-------. 1 root root 62118628 5月  19 22:10 initramfs-0-rescue-dfc787c8ebab403c82f14b33d3c1b96c.img
-rw-------. 1 root root 21714935 5月  19 22:11 initramfs-3.10.0-1160.el7.x86_64.img
-rw-------. 1 root root 13773260 5月  19 22:13 initramfs-3.10.0-1160.el7.x86_64kdump.img
-rw-r--r--. 1 root root   320648 10月 20 2020 symvers-3.10.0-1160.el7.x86_64.gz
-rw-------. 1 root root  3616707 10月 20 2020 System.map-3.10.0-1160.el7.x86_64
-rwxr-xr-x. 1 root root  6769256 5月  19 22:10 vmlinuz-0-rescue-dfc787c8ebab403c82f14b33d3c1b96c
-rwxr-xr-x. 1 root root  6769256 10月 20 2020 vmlinuz-3.10.0-1160.el7.x86_64
[root@fruit boot]#

5、 操作系统


控制权转交给操作系统后,操作系统的内核首先被载入内存。开始运行第一个程序systemd,执行默认target配置文件/etc/systemd/system/default.target

可以看出systemd启动用户进程, kthreadd 启动内核进程

[root@fruit default.target.wants]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 09:31 ?        00:00:10 /usr/lib/systemd/systemd --switched-root --system --des
root          2      0  0 09:31 ?        00:00:00 [kthreadd]
root          4      2  0 09:31 ?        00:00:00 [kworker/0:0H]
root          6      2  0 09:31 ?        00:00:01 [ksoftirqd/0]
root          7      2  0 09:31 ?        00:00:00 [migration/0]

centos7/8 里的第一个进程是systemd

centos6 的第一个进程是init


6、 运行级别 runlevel


[root@localhost test]# runlevel # 查看当前的运行级别

N 3

N 代表最开始进入的模式, 如果是N表示没有进行模式切换

3 5 代表最开始进入运行级别3 , 后面切换到运行级别5

centos 6 中的叫法

0 关机

1 单用户模式

2 多用户模式,不能使用 nfs

3 完全多用户模式

4 保留,没有使用

5 图形界面

6 重启


7、用户登录


登录shell

首先读取/etc/profile配置文件,加载/etc/profile.d/*.sh,再去用户的家目录,读取~/.bash_profile,然后去~/.bashrc,最后读取/etc/bashrc。进行初始环境变量

非登录shell

首先读取~/.bashrc文件,再读取/etc/bashrc

目录
相关文章
|
12月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
978 3
Linux系统禁用swap
|
12月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
1567 3
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
1051 3
Linux系统初始化脚本
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
734 18
|
12月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
1200 1
|
12月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1477 1
|
存储 Linux
Linux环境下删除大文件后磁盘空间未释放问题诊断流程。
以上诊断流程涉及Linux底层机制与高级管理技能结合之处,并需要管理员根据实际环境灵活调整诊断策略与解决方案。
866 8
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
2674 10
|
安全 Linux 数据安全/隐私保护
为Linux系统的普通账户授予sudo访问权限的过程
完成上述步骤后,你提升的用户就能够使用 `sudo`命令来执行管理员级别的操作,而无需切换到root用户。这是一种更加安全和便捷的权限管理方式,因为它能够留下完整的权限使用记录,并以最小权限的方式工作。需要注意的是,随意授予sudo权限可能会使系统暴露在风险之中,尤其是在用户不了解其所执行命令可能带来的后果的情况下。所以在配置sudo权限时,必须谨慎行事。
1947 0
|
Ubuntu Linux 开发者
国产 Linux 发行版再添新成员,CutefishOS 系统简单体验
当然,系统生态构建过程并不简单,不过为了帮助国产操作系统优化生态圈,部分企业也开始用国产操作系统替代 Windows,我们相信肯定会有越来越多的精品软件登录 Linux 平台。
930 0