Linux系统开机启动流程

本文详细解析Linux系统开机启动的全过程,包括BIOS检查、MBR读取、Grub引导、内核加载、运行级别设定,以及关键脚本执行,最后引导到用户登录界面。

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

Linux系统开机启动的流程:

① 开机自动检查,加载BIOS;

② 读取MBR;

③ Boot Loader  Grub引导系统;

④ 加载Kernel 内核;

⑤ init进程根据inittab文件夹来设定运行级别;

⑥ init进程执行rc.sysinit;

⑦ 启动内核模块;

⑧ 执行不同运行级别的脚本程序;

⑨ 执行 /etc/rc.d/rc.local;

⑩ 执行 /bin/login程序,启动mingetty,进入登录状态。

Linux系统开机启动流程图:

① :开机自检,加载BIOS

计算机开机,则自检开始,这个过程主要是检测计算机硬件设备,如:CPU、内存、主板、显卡、CMOS等设备是否有故障存在。

② :读取MBR

BIOS自检,首先会在一个Boot Sequence 程序中搜索可以让系统启动的引导设备(如:有时在装系统时,通常会设置从U盘启动;一般都是会从硬盘启动)

如果BIOS找不到引导的设备及相关程序后,就会启动失败;如果依次找到了相关设备硬盘,那么BIOS将把控制权交给启动设备中的MBR主引导记录。

其中,MBR大小为512字节,存放预启动信息、分区表等数据。

③ :Boot Loader grub引导菜单

在MBR程序中找到其前446字节的Boot Loader。Boot Loader即为在操作系统内核运行前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的眏射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做准备。

Boot Loader的种类很多,其中有Grub、Lilo和spfdisk,常见的是Loader。

系统可以读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

④ :加载kernel内核

根据grub设定的内核眏像所在的路径,系统读取内存眏像,并进行解压缩操作。在这时,屏幕会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK,booting the kernel”。

系统将解压后的内核放置在内存中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。到这时,Linux内核已经建立起来了,基于Linux的程序可以正常运行了。

从全局启动历程start_kernel开始,

内核完成任务主要有:硬件的检测;硬件驱动的初始化,挂载根文件系统(根切换);启动init进程。

内核在系统启动后的功能:进程的调度,内存管理,文件系统的管理,硬件驱动,管理网络等。

⑤ :init进程依据inittab文件夹来设定运行级别

内核被加载后,第一个运行的程序便是/sbin/init。给文件会读取/etc/inittab文件,并依据该文件夹进行初始化。

其中 /etc/inittab文件最主要的作用就是设定Linux的运行级别,其设定形式为“: id:5:initdefault:” ,这就说明Linux需要运行在等级5上。Linux的运行等级设定如下:0:-halt 关机;1:-single user mode单用户模式;2:-Multi-user,without NFS无网络支持的多用户模式  类似于下面的run level3;3:-Full multi-user mode:有网络支持的多用户模式;4:-unused保留,未使用;5:-X11有网络支持有X-Window支持的多用户模式;6:-reboot:重新引导系统——重启。

可通过 #cat /etc/inittab      查看/etc/inittab相关信息。

⑥ :init进程执行rc.sysinit

在设定了运行级别后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作很多,包括设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。

⑦ :启动内核模块

根据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

⑧ :执行不同运行级别的脚本程序

根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应脚本程序,来完成相应的初始化工作和启动相应的服务。

⑨ :执行/etc/rc.d/rc.local

该文件为一切初始化工作后,Linux留给用户进行个性化设置的地方。用户可以把自己想设置和启动的东西放在这里。

⑩ :执行/bin/login程序,启动mingetty,进入登录状态。

GRUB:

是GRand Unifled BootLoader的缩写,它是一个多重操作系统启动管理器。用来引导不同系统,例如常见的windows,linux。

在X86架构的机器中,Linux、BSD或其他Unix类的操作系统中GRUB、LILO是最常用的多重系统启动管理器。

Windows也有类似的工具NTloader,当我们在计算机中安装了Windows10后,再安装一个Windows7系统,当机器启动时就会有一个菜单,用来选择进入哪个系统。

在PowerPC架构的计算机中,安装Linux的PowerPC版本,大多数采用的是yaboot多重引导管理器。实际应用中,Apple计算机大多数采用的是IBM PowerPC处理器,因此在该计算机上安装MACOS或Linux Powerpc版本的操作系统,大多采用yaboot来引导多个操作系统。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值