
作为一个开源的操作系统,Linux因其高度的可定制性和优秀的性能表现而备受欢迎。Linux的开机启动过程是其功能的基石。而想要深入了解Linux的开机过程,就需要理解它的启动代码。本文将会详细解析Linux的启动代码,介绍从开机到登录的完整流程。
一、BIOS
当计算机启动时,硬件会首先执行系统上的基本输入/输出系统(BIOS)。BIOS主要任务是初始化硬件并引导操作系统启动。BIOS包括ROM芯片,可以在操作系统及其驱动程序之前运行。
二、引导加载程序
BIOS执行后,会进入引导加载程序(bootloader)。引导加载程序会在硬盘上搜索并加载Linux内核,然后将内核文件从硬盘传送到内存中。
引导加载程序有很多种,大部分情况下是使用GRUB。GRUB(GRand Unified Bootloader)是一种常用的多操作系统引导管理器,支持在多种操作系统间切换。它位于硬盘的Master Boot Record(MBR)中,并维护一个称为GRUB Stage 1.5的小型文件系统。这个文件系统允许它找到并加载内核镜像文件和其他启动信息。
三、内核初始化
正如先前提到的,引导加载程序会将内核文件从硬盘传送到内存中。内核初始化然后开始,需要在系统中创建内核空间(内核数据结构和内核代码)并设置系统中的各种硬件。
内核的初始化包括以下步骤:
1. 内存管理初始化:内存管理初始化会创建内存管理结构,并在系统上保留必要的内存。
2. 进程初始化:初始化进程管理系统。
3. 初始化输入/输出子系统:键盘、鼠标、网络和其他输入/输出设备将被初始化。
4. 文件系统初始化:内核对文件系统进行初始化,此时可以对根文件系统进行挂载。
5. 设备驱动程序初始化:初始化各种硬件设备驱动程序。
6. 网络初始化:初始化网络子系统,包括设置网络接口和访问网络协议栈。
7. 初始化用户模式和用户模式程序:启动getty和login等程序。
四、用户模式初始化
用户模式初始化可以开始几秒钟后,在启动到这一步之前计算机是处于内核模式运行状态,除了Kernel Mode之外任何用户模式程序都没有运行。这时,内核将开启一个进程(init进程),进入用户模式。用户模式会加载Linux发行版的一些程序,并转移到之一条运行级别的配置脚本。
Linux中的6个运行级别:
0 – 关闭系统
1 – 单用户模式
2 – 基于文本的多用户模式
3 – 基于文本的多用户模式,与2不同之处在于支持多个网络服务。
4 – 系统级别没有任何规定。可以自由更改,不影响系统功能。
5 – 基于图形的多用户模式,类似于Windows下的GUI。
典型的系统只用到0-5级运行级别。在不同的运行级别,Linux内核会启动执行不同的用户空间程序,并关闭不需要的服务。
五、登录
用户启动提交用户名和密码后,系统会进行身份验证,如果身份验证成功,用户就会登录到系统。
在Linux启动流程中,BIOS、引导加载程序、内核初始化、用户模式初始化和登录过程都是不可或缺的环节。用户最终将会登录到一个完全初始化且运行良好的系统中,可以在其中尽情地进行其所有需要的操作。
本文详细解析了Linux启动代码的过程,并从技术层面细致地介绍了从开机到登录的完整流程。对于系统调试和管理人员来说,理解这些过程是非常有用和必要的。它们可以使操作系统管理员了解Linux内部故障排除和优化的工作方式,以及如何使其更高效、更灵活。
相关问题拓展阅读:
- 如何查看和停止Linux启动的服务
- linux开机启动脚本
如何查看和停止Linux启动的服务
你好,
1. 查看Linux启动的服务
. 代码如下:
chkconfig –list 查询出所有当前运行的服务
chkconfig –list atd 查询atd服务的当前状态
2.停止所有服务或毁胡并且在下次系统启动时不再启动,如下余蔽所示:
. 代码如下:
chkconfig –levelsNetworkManager off
如果想查看当前处于运行状态的服务,用如下衫拦语句过滤即可
. 代码如下:
chkconfig –list |grep on
3.如果只是想当前的设置状态有效,在系统重启动后即不生效的话,可以用如下命令停止服务
. 代码如下:
service sshd stop
linux开机启动脚本
需要自己写一个脚本
脚本内容是
一个死循环,里面包含查询进程的命令ps,让后grep出你的进程
如果发现你的进程就认为启动成功,没发现就一直等待。
脚本例子,监控mysql
s_port=`netstat -na|grep “LISTEN”|grep “3306”|awk -F+ ‘{print $5}’`
if ; then
echo ” mysql is running “
echo $s_logfie
else
echo ” mysql is down try start ” > $s_logfie_err
$s_mysqldir/share/mysql/mysql.server restart –user=root
sleep 10
s_port=`netstat -na|grep “LISTEN”|grep “3306”|awk -F+ ‘{print $5}’`
if ;then
echo ” mysql start ok “
else
echo ” mysql start fail “
fi
fi
linux启动代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux启动代码,Linux启动代码详解:从开机到登录的完整流程,如何查看和停止Linux启动的服务,linux开机启动脚本的信息别忘了在本站进行查找喔。
香港服务器首选树叶云,2H2G首月10元开通。
树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/195710.html<