linux系统是怎么启动的?

每次打开 linux pc 时,它都会经历一系列阶段,然后最终显示提示输入用户名或密码的登录屏幕。每个 linux 发行版在典型的启动过程中都会经历 4 个不同的阶段。
每次打开 linux pc 时,它都会经历一系列阶段,然后最终显示提示输入用户名或密码的登录屏幕。每个 linux 发行版在典型的启动过程中都会经历 4 个不同的阶段。
用户登录提示
在本指南中,我们将重点介绍 linux 操作系统从开机到登录的各个步骤。请注意,本指南仅考虑了当前使用的grub2引导加载程序和systemdinit 绝大多数现代 linux 发行版 引导过程需要以下 4 个步骤,我们将更详细地讨论这些步骤:
bios完整性检查 (post)
加载引导加载程序 (grub2)
内核初始化
启动systemd,所有进程的父进程
1. bios 完整性检查 (post)
引导过程通常在用户按下开机按钮(如果 pc 已经关闭)或使用 gui 或命令行重新启动系统时初始化。
当 linux 系统启动时,bios(基本输入输出系统)启动并执行开机自检(post)。这是执行大量诊断检查的完整性检查。
该post探测部件,如硬件操作性hdd或ssd,键盘,ram,usb端口,和任何其他的硬件。如果未检测到某些硬件设备,或者任何设备出现故障,例如损坏的 hdd 或 ssd,屏幕上会出现一条错误消息,提示您进行干预。
在某些情况下,特别是在缺少 ram 模块的情况下,会发出哔哔声。但是,如果预期的硬件存在并且按预期运行,则引导过程将进入下一阶段。
2. 引导加载程序 (grub2)
一旦post完成并且停止运行,bios 就会探测mbr(主引导记录)以获取引导加载程序和磁盘分区信息。
该mbr是位于硬盘驱动器通常是第一个扇区 512 字节的代码/dev/sda或/dev/hda根据您的硬盘驱动器架构。但是请注意,有时mbr可以位于linux的live usb或dvd安装中。
linux 中有 3 种主要类型的引导加载程序:lilo、grub和grub2。该grub2引导装载程序是现代的 linux 发行版的最新和主引导程序,另外两个已经过时。
grub2代表grand unified bootloader版本 2。一旦bios找到 grub2 引导加载程序,它就会执行并将其加载到主内存 (ram) 上。
该grub2菜单允许你做两件事情。它允许您选择要使用的 linux 内核版本。如果您已经升级了几次系统,您可能会看到列出的不同内核版本。此外,它还使您能够通过按键盘组合键来编辑某些内核参数。
选择内核版本
此外,在有多个操作系统安装如何使用 ftp 网络源安装多个 centos/rhel 服务器)的双引导设置中,grub 菜单允许您选择要引导到的操作系统。grub2 配置文件是/boot/grub2/grub2.cfg文件。grub 的主要目标是将 linux 内核加载到主内存中。
3. 内核初始化
内核是任何 linux 系统的核心。它将 pc 的硬件与底层进程连接起来。内核控制 linux 系统上的所有进程。一旦引导加载程序加载了选定的 linux 内核,它必须在执行任何任务之前从其压缩版本中自行解压缩。在自解压缩,所选择的内核安装根文件系统,并初始化/ sbin 目录 / 初始化通常被称为程序初始化。
内核初始化过程
init始终是第一个要执行的程序,并被分配进程 id 或 pid 为 1。它是 init 进程,它产生各种守护进程并挂载/etc/fstab文件中指定的所有分区。
内核然后挂载初始 ram 磁盘 (initrd),它是一个临时的根文件系统,直到真正的根文件系统被挂载。所有内核都/boot与初始 ram 磁盘映像一起位于该目录中。
4. 启动 systemd
内核最终加载了systemd,它是旧sysvinit的替代品。systemd是所有 linux 进程的母体,并管理文件系统的挂载、启动和停止服务等等。
systemd 使用/etc/systemd/system/default.target文件来确定 linux 系统应该引导到的状态或目标。
对于桌面工作站(带有 gui),默认目标值为 5,相当于旧 systemv init 的运行级别 5。
对于服务器,默认目标是multi-user.target,它对应于 sysv init 中的运行级别 3。
以下是 systemd 目标的细分:
poweroff.target (runlevel 0):关闭或关闭系统。
rescue.target (runlevel 1):启动救援shell会话。
multi-user.target (runlevel 2,3,4):将系统配置为非图形(控制台)多用户系统。
graphics.target (runlevel 5):将系统设置为使用具有网络服务的图形多用户界面。
reboot.target (runlevel 6):重新启动系统。
要检查系统上的当前目标,请运行以下命令:
> systemctl get-default  
检查运行级别
您可以通过在终端上运行以下命令从一个目标切换到另一个目标:
> init runlevel-value  
例如,init 3 将系统配置为非图形状态。
在init 6命令重新启动您的系统和init 0关闭系统电源。当您要切换到这两个目标时,请务必调用sudo 命令。
一旦systemd加载所有守护进程并设置目标或运行级别值,引导过程就会结束。此时,系统会提示您输入用户名和密码,然后您就可以进入 linux 系统。


面向分布式声波传感的硅基超高消光比调制器
今年有哪些值得关注的物联网趋势?
基于区块链架构的全民阅读应用阅链介绍
人工智能的利与弊分析
安卓一哥名副其实 一加手机5T性能评测
linux系统是怎么启动的?
ZigBee现状及前景分析
工业物联网解决方案:智慧工厂数字孪生可视化监测系统
VR直播界大咖:苹果VR一出 无人可与争锋?
提升品牌力量,华为云CDN赋能企业服务质量提升
2012 PCB有望持续成长,行动装置应用成趋势
为什么SMT贴片加工越来越难做了?
如何模拟实现应用在数据采集系统中的89C51单片机I/O口串行通信?
英伟达 RTX 3060 Ti 11 月 17 日发布,3060 待定
ST和YouTransactor为了现在的市场发布安支付系统芯片
猎豹发布五款“真有用”机器人产品
魔珐科技获数亿元融资
如何减少物联网应用中存在的潜在风险
连接器注意事项说明
数码超声波振动筛电源发生器设计