10. Linux 系统启动原理

CentOS 7 启动过程

现代计算机系统是硬件与软件的复杂组合。从加电状态开始,到拥有登录提示符的运行中系统,
这需要大量的硬件和软件配合工作。
以下列表从较高层面概述了 CentOS7 启动过程。

  1. 计算机接通电源。系统固件(现代UEFI或更旧的BIOS)运行开机自检(POST),并开始初始化
    硬件。
    配置: 在系统启动早期,通过按特定的组合键,例如F2,配置系统固件。
  2. 系统固件搜索启动设备,根据固件配置的顺序搜索启动磁盘上的主启动记录(MBR)。系统固
    件从磁盘读取boot loader,然后将系统控制权交给boot loader,boot loader是GRand
    Unified Bootloader version 2(GRUB2)。
    配置: 使用 grub2-install 命令进行配置,它将安装 GRUB2 作为磁盘上的启动加载器。
  3. GRUB2从/boot/grub2/grub.cfg文件加载配置并显示一个操作系统菜单,可以从中选择要启
    动的系统。
    配置: 使用 /etc/grub.d/ 目录、/etc/default/grub 文件和 grub2-mkconfig 命令进行配置,
    以生成 /boot/grub2/grub.cfg 文件。
  4. boot loader根据选定条目的配置,从磁盘中加载kernel和initramfs,并将它们放入内存
    中。initramfs是一个存档,其中包含启动时所有必要硬件的内核模块、初始化脚本等等。
    boot loader将控制权交给kernel,并同时将启动项的内核参数、initramfs在内存中的位置
    传递给kernel。内核在initramfs中找到所有硬件驱动程序,并初始化这些硬件。

​ 配置: 使用 /etc/dracut.conf.d/ 用录、dracut 命令和 lsinitrd 命令进行配置,以检查
​ initramfs 文件。

  1. initramfs 执行/sbin/init,作为PID 1。在CentOS中,/sbin/init是一个指向systemd的链
    接。
    配置: 使用内核参数init=command 配置系统初始化程序。
  2. 随后,systemd会加载从内核命令行传递的target或者加载系统配置的default.target,该目
    标通常启动一个基于文本的登录或图形登录屏幕。
    配置:使用systemctl设置默认target。
  3. default.target依赖sysinit.target,sysinit.target用于初始化系统,例如读取/etc/fstab挂载
    文件系统,激活systemd-journald等。
    配置:使用/etc/fstab配置文件系统开机自动挂载。
  4. default.target还会激活开机启动的单元。
    配置:使用systemctl设置开机启用服务。
  5. default.target还会激活getty.target,该target将打开tty1终端用于用户登录。

系统 target

systemd使用类型为target的单元来分组不同单元,例如multi-user.target包涵
chronyd.service、crond.service、firewalld.service等服务。
target还可以包涵其他target,例如graphical.target包涵multi-user.target,multi-user.target包
涵basic.target,basic.target包涵sysinit.target。
使用以下命令查看target之间依赖关系:

[root@centos7 ~]# systemctl list-dependencies graphical.targetgraphical.target ● ├─accounts-daemon.service ● ├─gdm.service ● ├─initial-setup-reconfiguration.service ● ├─network.service ● ├─rtkit-daemon.service ● ├─systemd-readahead-collect.service ● ├─systemd-readahead-replay.service ● ├─systemd-update-utmp-runlevel.service ● ├─udisks2.service ● └─multi-user.target......# 查看反向依赖[root@centos7 ~]# systemctl list-dependencies sshd.service --reversesshd.service ● └─multi-user.target ● └─graphical.target

系统启动级别

传统的 SysVinit 系统定义了 7 个运行级别(0-6),每个级别有特定的作用,具体如下:

运行级别target作用描述
0关机(halt):系统终止所有进程并关闭电源,对应命
令 shutdown -h now 。
1emergency.target
rescue.target
单用户模式(single user mode):仅 root 用户可登
录,无网络服务,用于系统修复(如密码找回)。
2多用户模式(无 NFS):支持多用户登录,但不启动网
络文件系统(NFS),部分发行版(如 Debian)默认
此级别功能与级别 3 相同。
3multi-user.target完全多用户模式(文本界面):启动所有网络服务,用
户通过命令行登录,无图形界面。
4预留级别:默认未使用,可由用户自定义用途。
5graphical.target图形化多用户模式:在级别 3 的基础上启动图形界面
(如 GNOME、KDE),用户通过图形登录界面访问系
统。
6重启(reboot):系统终止所有进程并重启,对应命令
shutdown -r now 。

设置系统运行目标

/etc/inittab文件是CentOS 6之前版本初始化系统使用的配置文件。

# 部分内容如下# Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)# 1 - Single user mode# 2 - Multiuser, without NFS (The same as 3, if you do not havenetworking)# 3 - Full multiuser mode# 4 - unused# 5 - X11# 6 - reboot (Do NOT set initdefault to this)## 设置运行级别为5,也就是图形化方式启动。id:5:initdefault:

设置系统当前运行 target

# 设置系统当前运行target为multi-user.target[root@centos7 ~]# systemctl isolate multi-user.target# 设置系统当前运行target为graphical.target[root@centos7 ~]# systemctl isolate graphical.target

设置系统开机默认运行 target

# 查看系统开机默认运行target[root@centos7 ~]# systemctl get-defaultgraphical.target# 设置系统开机默认运行target[root@centos7 ~]# systemctl set-default multi-user.target# 重启验证

在系统启动时选择其它目标

要在启动时选择其他目标,将 systemd.unit=target.target 参数附加到内核命令行。该配置是临
时生效的,经常用于系统启动过程中故障排除。
要使用这种选择其他目标的方法,请执行以下步骤:

  1. 启动或重新启动系统。
  2. 按任意键中断启动加载器菜单倒计时(Enter除外,它用于执行正常启动)。
  3. 将光标移至第一个内核条目,按e编辑当前条目。

  1. 将光标移至以linux16开头的行,末尾附加systemd.unit=target.target。例如,
    systemd.unit=multi-user.target。按 Ctrl+x 使用这些更改进行启动。

重置 ROOT 密码

以下几种方法可用于设置新的root密码。例如:

  • 系统管理员可以使用Live CD启动系统,挂载根文件系统,然后编辑/etc/shadow:
    • 删除root账户密码字段
    • 使用已知密码字段替换root密码字段
  • 在CentOS 7之后版本中,可以让initramfs运行的脚本在某些点暂停,以提供root身份的
    shell,然后在该shell中重置root密码。

方法1:rd.break

  1. 重新启动系统。
  2. 按任意键(Enter除外)中断启动加载器倒计时。
  3. 将光标移至第一个内核条目,按e编辑当前条目。

  1. 将光标移至以 linux16 开头的行,末尾附加 rd.break。利用该选项,在系统从initramfs向
    实际系统移交控制权前,系统将会中断。按Ctrl+x进行启动。

  1. 此时,系统会显示root shell,且磁盘上的实际根文件系统以只读方式挂载在/sysroot。
    以读/写形式重新挂载/sysroot。
switch_root:/# mount -o remount,rw /sysroot
  1. 切换root位置,把/sysroot做为文件系统树的根。
switch_root:/# chroot /sysroot
  1. 设置新root密码。
sh-4.2# echo password | passwd --stdin root

==提示:==password 是用户自定义密码。

  1. 如果系统开启了 SELinux 功能,则需要确保所有未标记的文件(包括此时的/etc/shadow)在
    启动过程中都会重新获得标记。
sh-4.2# touch /.autorelabel
  1. 执行以下命令,系统将继续启动。如果系统开启了SELinux功能,还需要执行完整的
    SELinux 重新标记,然后再次重新启动。
sh-4.2# exitswitch_root:/# exit
  1. 登录验证。

方法2:init=/bin/bash

  1. 重新启动系统。
  2. 按任意键(Enter除外)中断启动加载器倒计时。
  3. 将光标移至第一个内核条目,按e编辑当前条目。
  4. 将光标移至以 linux16 开头的行,末尾附加 init=/bin/bash 。利用该选项,在系统从
    initramfs向实际系统移交控制权前,系统将会中断,请开启一个root shell。按Ctrl+x使用这
    些更改进行启动。
  5. 此时系统会显示root shell,且磁盘上的实际根文件系统以只读方式挂载在/。以读/写形式重
    新挂载/。
bash-4.2# mount -o remount,rw /
  1. 使用以下命令删除root密码,等进入系统后再重新设置root密码。
sh-4.2# passwd -d root

此时还可以使用vi编辑器直接编辑/etc/shadow文件,复制已知用户的密码记录替换
root密码。

  1. 如果系统开启了 SELinux 功能,则需要确保所有未标记的文件(包括此时的/etc/shadow)在
    启动过程中都会重新获得标记。
sh-4.2# touch /.autorelabel
  1. 执行以下命令,系统将继续启动。如果系统开启了SELinux功能,还需要执行完整的
    SELinux 重新标记,然后再次重新启动。
sh-4.2# exec /usr/lib/systemd/systemd
  1. 使用root登录,此时不需要密码。

/etc/fstab 引起的系统启动问题

环境准备

# 设置磁盘分区管理方案[root@centos7 ~]# parted /dev/sdb mklabel msdos# 创建分区[root@centos7 ~]# parted /dev/sdb unit MiB mkpart primary 1 10241# 格式化为xfs文件系统[root@centos7 ~]# mkfs.xfs /dev/sdb1# 创建挂载点[root@centos7 ~]# mkdir /data01# 设置持久化挂载[root@centos7 ~]# echo '/dev/sdb1 /data01 xfs defaults 0 0' >>/etc/fstab# 挂载并验证[root@centos7 ~]# mount -a[root@centos7 ~]# df -h /data01文件系统 容量 已用 可用 已用% 挂载点 /dev/sdb1 10G 33M 10G1% /data01

故障1:挂载点不存在

环境准备

[root@centos7 ~]# umount /data01[root@centos7 ~]# rmdir /data01

重启系统验证

# 可以正常进入系统,挂载点会被自动创建[root@centos7 ~]# df -h /data01文件系统 容量 已用 可用 已用% 挂载点 /dev/sdb1 10G 33M 10G1% /data01

故障2:设备名称写错或者找不到设备

环境准备

[root@centos7 ~]# vim /etc/fstab# 将原先的sdb1修改为sdb2/dev/sdb2 /data01 xfs defaults00

重启系统验证

  1. 启动过程中找不到该设备。
  2. 1分30秒超时后,进入emergency模式,进行修复。
    修改为正确的值或者注释该条目,确保系统正常启动。
  3. 然后输入exit,继续启动。

故障3:破坏文件系统

环境准备

[root@centos7 ~]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=1

重启系统验证

  1. 系统启动过程中尝试修复文件系统,修复失败后提示进入 emergency 模式修复。

  1. 输入root 密码进入emergency 模式。
# 执行以下命令修复[root@centos7 ~]# xfs_repair /dev/sdb1

it,继续启动。

故障3:破坏文件系统

环境准备

[root@centos7 ~]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=1

重启系统验证

  1. 系统启动过程中尝试修复文件系统,修复失败后提示进入 emergency 模式修复。

[外链图片转存中…(img-EvhLSUhj-1767872130507)]

  1. 输入root 密码进入emergency 模式。
# 执行以下命令修复[root@centos7 ~]# xfs_repair /dev/sdb1

修复完成后,输入 exit 正常启动系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1132807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源社区新星:这款翻译镜像为何获开发者青睐

开源社区新星:这款翻译镜像为何获开发者青睐 在 AI 技术快速渗透日常开发与业务场景的今天,高质量、低门槛、易集成的智能翻译服务正成为开发者工具链中的关键一环。尤其在跨国协作、文档本地化、内容出海等场景中,中英互译的需求日益增长。然…

智能翻译错误处理:CSANMT异常输入的优雅应对

智能翻译错误处理:CSANMT异常输入的优雅应对 🌐 AI 智能中英翻译服务 (WebUI API) 项目背景与核心挑战 随着全球化进程加速,跨语言沟通需求激增。AI 驱动的智能翻译系统已成为企业、开发者乃至个人用户的刚需工具。然而,在实际应…

M2FP模型在智能广告投放中的人体特征分析

M2FP模型在智能广告投放中的人体特征分析 📌 引言:为何人体解析技术正在重塑广告投放策略? 在数字广告竞争日益激烈的今天,精准用户画像与场景化内容匹配已成为提升转化率的核心手段。传统广告系统多依赖点击行为、设备信息和基…

M2FP模型微调:适配特定服装类型的解析

M2FP模型微调:适配特定服装类型的解析 📌 背景与挑战:通用人体解析的局限性 在当前计算机视觉领域,多人人体解析(Human Parsing) 已成为智能试衣、虚拟换装、人像编辑等应用的核心技术。ModelScope 提供的 …

企业级翻译系统搭建:CSANMT+负载均衡实现高可用部署

企业级翻译系统搭建:CSANMT负载均衡实现高可用部署 🌐 AI 智能中英翻译服务 (WebUI API) 在多语言业务快速扩展的今天,高质量、低延迟的自动翻译能力已成为企业出海、内容本地化和跨语言协作的核心基础设施。传统的翻译工具往往存在译文生硬…

智能翻译预处理流水线:CSANMT前端文本清洗技巧

智能翻译预处理流水线:CSANMT前端文本清洗技巧 🌐 AI 智能中英翻译服务 (WebUI API) 项目背景与技术定位 随着全球化进程加速,跨语言沟通需求激增。传统机器翻译系统在面对复杂句式、专业术语或口语化表达时,常出现语义失真、…

CSANMT模型在多模态翻译中的文本提取与融合

CSANMT模型在多模态翻译中的文本提取与融合 引言:AI智能中英翻译服务的演进需求 随着全球化进程加速,跨语言信息交互已成为企业、科研和个人日常工作的刚需。传统机器翻译系统虽已实现基础语义转换,但在语境理解、句式重构和表达自然度方面仍…

CSANMT模型效果对比:中英互译质量深度评测

CSANMT模型效果对比:中英互译质量深度评测 🌐 AI 智能中英翻译服务 (WebUI API) 项目背景与技术选型动因 随着全球化进程加速,跨语言沟通需求激增。传统统计机器翻译(SMT)在处理长句、语义连贯性方面表现乏力&#xf…

M2FP模型在虚拟时装秀中的创新应用

M2FP模型在虚拟时装秀中的创新应用 🌐 虚拟时尚的视觉基石:M2FP多人人体解析服务 随着数字时尚产业的迅猛发展,虚拟时装秀、AI换装系统、个性化推荐引擎等应用场景对高精度人体语义分割提出了前所未有的需求。传统图像处理方法在面对多人场…

轻量模型为何更快?CSANMT CPU优化技术原理解析

轻量模型为何更快?CSANMT CPU优化技术原理解析 📌 技术背景:AI智能翻译的轻量化需求 随着自然语言处理(NLP)技术的飞速发展,神经网络机器翻译(Neural Machine Translation, NMT)已成…

M2FP模型在时尚行业的创新应用:智能穿搭推荐系统

M2FP模型在时尚行业的创新应用:智能穿搭推荐系统 引言:从人体解析到智能时尚的跨越 随着人工智能技术在视觉领域的不断突破,语义分割正成为连接物理世界与数字体验的关键桥梁。在时尚行业中,如何精准理解用户的穿着状态、身体结构…

自动化测试方案:保障翻译API的稳定性与准确性

自动化测试方案:保障翻译API的稳定性与准确性 📌 引言:AI智能中英翻译服务的工程挑战 随着全球化进程加速,高质量的机器翻译已成为跨语言沟通的核心基础设施。本项目基于ModelScope平台的CSANMT神经网络翻译模型,构建了…

网站多语言改造实战:用AI镜像快速生成英文版内容

网站多语言改造实战:用AI镜像快速生成英文版内容 随着全球化进程的加速,越来越多的企业和开发者开始关注网站的多语言支持能力。对于中文为主的网站而言,如何高效、低成本地构建高质量英文版本,成为一项关键挑战。传统的人工翻译…

CSANMT模型在法律文书翻译表现

CSANMT模型在法律文书翻译表现 🌐 AI 智能中英翻译服务 (WebUI API) 项目背景与技术选型动因 随着全球化进程加速,跨国法律事务日益频繁,法律文书的精准中英互译需求急剧上升。传统机器翻译系统在处理法律文本时普遍存在术语不准、句式生硬、…

模型推理延迟优化:CPU环境下压缩至800ms以内

模型推理延迟优化:CPU环境下压缩至800ms以内💡 本文目标:在无GPU支持的轻量级CPU服务器上,将基于CSANMT架构的中英翻译模型推理延迟稳定控制在800ms以内。通过系统性分析瓶颈、应用多维度优化策略,实现高可用、低延迟的…

基于M2FP的虚拟背景替换技术实现详解

基于M2FP的虚拟背景替换技术实现详解 在当前视频会议、直播互动和智能安防等应用场景中,虚拟背景替换已成为提升用户体验的关键功能之一。传统方案多依赖单人检测与简单绿幕抠像,难以应对多人重叠、肢体遮挡或复杂光照条件。为此,基于高精度语…

M2FP在智能工厂中的安全监控应用

M2FP在智能工厂中的安全监控应用 引言:智能工厂的安全挑战与技术演进 随着工业4.0的深入推进,智能工厂对生产环境的安全性提出了更高要求。传统视频监控系统多依赖人工巡检或简单的运动检测算法,难以实现对作业人员行为、着装规范、操作姿势等…

CSANMT模型性能瓶颈:识别与解决翻译延迟问题

CSANMT模型性能瓶颈:识别与解决翻译延迟问题 📌 引言:AI 智能中英翻译服务的现实挑战 随着全球化进程加速,高质量、低延迟的机器翻译需求日益增长。基于深度学习的神经网络翻译(Neural Machine Translation, NMT&#…

电商出海必备:AI自动翻译商品描述实战案例

电商出海必备:AI自动翻译商品描述实战案例 🌐 AI 智能中英翻译服务 (WebUI API) 📖 项目简介 本镜像基于 ModelScope 的 CSANMT(神经网络翻译) 模型构建,专为电商出海场景设计,提供高质量的中文…

CSANMT模型在跨文化交际翻译中的适应性

CSANMT模型在跨文化交际翻译中的适应性 引言:AI 智能中英翻译服务的兴起与挑战 随着全球化进程加速,跨文化交际已成为企业出海、学术交流和内容传播的核心场景。然而,语言障碍始终是信息高效传递的主要瓶颈。传统机器翻译系统(如基…