如何CentOS 探索Linux系统开机背后的秘密:CentOS与Red Hat Enterprise Linux的差异及加电自检主板过程

代码编程 2025-05-25 11

一按那开机键,电脑立马复活了,但你可曾想过它背后经历了啥?这不就像那相亲对象突然点头答应跟你约会,其中的曲折肯定不少。

BIOS自检就像查户口

CentOS系统开机流程_Linux系统启动秘密_如何CentOS

电脑一开机先来个自我审查,这不就跟相亲前先查查对方的底细似的。POST程序把CPU、内存、硬盘挨个儿摸一遍,要是发现啥大问题,就直接撂挑子不干了,小问题,就嘟嘟嘟地乱响一气。

2023年,某品牌主板用户反馈说,有87%的电脑开不了机,原因竟然是内存条没插稳。这时候,兄弟别慌张,先把那金手指擦干净,再给它插回去,这可比相亲被拒后死缠烂打来得实际多了。

CentOS系统开机流程_如何CentOS_Linux系统启动秘密

硬盘启动顺序暗藏玄机

BIOS这货找启动设备就跟饿汉寻饭馆似的,瞧见硬盘列表里谁在头排,就跟它似的,先吃谁。你按F2进BIOS调整顺序的时候,可得稳住手,把Windows那东西给Linux让道,这效果,简直就像给前女友发错了复合短信,尴尬得一批。

那家伙把U盘启动设置成首要选择,结果每次开机就自动给系统来了个全套重装,这操作跟带错身份证去相亲似的,除了显摆自己傻,没别的效果。

MBR里的GRUB是隐形裁判

发现MBR就跟在相亲对象手机里翻出探探一样,GRUB引导程序就在那等着。它自己就爱自动启动系统,但你按个e键就能手动来个干预,跟偷偷改相亲资料似的。

有人搞了个小浪漫,在GRUB那东西里头敲了“make love not war”,结果电脑直接给了个错误代码大满屏,这操作跟用摩斯电码表白似的,浪漫得有点尴尬。

grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot

内核加载像便秘现场

e: 编辑模式,用于编辑菜单;
c: 命令模式,交互式接口;
help: 获取帮助列表;
help KEYWORD: 详细帮助信息;
find (hd#,#)/PATH/TO/SOMEFILE:
root (hd#,#) 设定grup的根设备;
kernel /PATH/TO/KERNEL_FILE:设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用cmdline参数;
例如:init=/path/to/init, selinux=0;
initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk;
boot: 引导启动选定的内核;

如何CentOS_CentOS系统开机流程_Linux系统启动秘密

内核启动时得往里塞一堆驱动,就跟便秘的人使出浑身解数挤最后一滴屎似的。据2021年Linux内核的数据统计,这过程平均得冒出23次错误日志,可即便这样,系统还是能正常运作。

那服务器小能手把错误记录弄成了电脑桌面背景,这下好家伙,会议室的大屏幕上天天滚动着“usb 3-1:设备不接受地址”的字样。这等硬核的装饰风格,可比挂那些“天道酬勤”的书法显得洋气多了。

default=#: 设定默认启动的菜单项;落单项(title)编号从0开始;
timeout=#:指定菜单项等待选项选择的时长;
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;
hiddenmenu:隐藏菜单;
password [--md5] STRING: 菜单编辑认证;
title TITLE:定义菜单项“标题”, 可出现多次;用来引导多个内核或者操作系统;
root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”;
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核;
initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件;
password [--md5] STRING: 启动选定的内核或操作系统时进行认证。

init进程是终极老妈子

/sbin/init这货一启动就爱插手,得按照那/etc/inittab文件来排任务,就跟你妈春节催你相亲似的,流程一套一套的:先盘问你工作,再聊聊你的钱包,最后还给你介绍隔壁王大妈家的闺女。

探测可识别到的所有硬件设备;
加载硬件驱动程序;(有可能会借助于ramdisk加载驱动);
以只读方式挂载根文件系统;
运行用户空间的第一个应用程序:/sbin/init。

这运维小子把启动级别硬生生调成6,结果系统就开启了无限重启模式。这操作跟相亲时直接问对方打算生几个娃似的,除了把人吓跑,还能有什么后果?

rc.local是程序员后门

在/etc/rc.local里能塞一堆自己的脚本,就跟在相亲简历里偷偷加上“王者荣耀全国前十”一样。有些人在这挂上了挖矿软件,等被发现时,人家已经悄无声息地白拿公司电费三年了。

1.执行系统初始化脚本(/etc/rc.d/rc.sysinit),对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系
统,到此系统基本算运行起来了,后面需要进行运行级别的确定及相应服务的启动;

Linux系统启动秘密_CentOS系统开机流程_如何CentOS

2.确定启动后进入的运行级别; 3.执行/etc/rc.d/rc,该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/r cn.d(n=0~6)目录下,所有的文件均链接至/etc/init.d下的相应文件; 4.有关key sequence的设置; 5.有关UPS的脚本定义; 6.启动虚拟终端/sbin/mingetty ; 7.在运行级别5上运行X。

最近有些公司想让人把那些rc.local文件都给删了,说是为了“不让员工启动那些不该启动的东西”。这话换成人话就是:别在相亲现场突然来个胸口碎大石秀。

id:runlevels:action:process;
id:一个任务的标识符;
runlevels:在哪些级别启动此任务;#,###,可以为空,表示所有级别;
action:在什么条件下启动此任务;
process:任务;(脚本或程序);
action:
wait:等待切换至此任务所在的级别时执行一次;
respawn:一旦此任务终止,就自动重新启动之;
initdefault:设定默认运行级别;此时,process省略;
sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit脚本;
K*:要停止的服务;K##*,优先级,数字越小,越是优先关闭;依赖的服务先关闭,而后关闭被依赖的;
S*:要启动的服务;S##*,优先级,数字越小,越是优先启动;被依赖的服务先启动,而依赖的服务后启动;

网上很多网站文字不能复制?教你几招轻松免费复制全网文字
« 上一篇 2025-05-25
手机上如何抠图?分享最简单的手机抠图方法
下一篇 » 2025-05-25