当前位置: 首页 > Linux

Linux系统启动过程分析

时间:2023-04-06 18:37:34 Linux

GNUGRUB(简称GRandUnifiedBootloader“GRUB”)是来自GNU工程的多操作系统启动程序。GRUB是多重引导规范的实现,它允许用户在计算机中同时拥有多个操作系统,并在计算机启动时选择自己想要运行的操作系统。GRUB可用于在操作系统分区上选择不同的内核,也可用于将引导参数传递给那些内核。runlevelLinux中有7个默认运行级别。0到6各个运行级别的含义如下:运行级别0:关机运行级别1:单用户模式。如果系统出现问题,可以使用该模式进入系统进行维护(如忘记root密码)runlevel2:多用户模式,但无网络连接。运行级别3:完全多用户模式。默认运行级别运行级别4:保留为未使用。运行级别5:窗口模式,支持多用户,支持网络。运行级别6:重新启动。Linux在任何时候都只能在一个运行级别下运行。HealthCheck当我们按下电源按钮时,计算机会加载BIOS,这是计算机上最接近硬件的软件。每个主板厂商都会开发适合自己主板的BIOS,而BIOS的一个很重要的功能就是对自己的硬件进行健康检查。只有当硬件没有问题时,它才会运行软件。PS:操作系统也是软件的一种。这种上电后的自检过程简称为“开机自检”(POST)。如果所有硬件设施都通过自检,一般会有提示音。》短声提示,说明硬件正常。bootsystem是在BIOS中设置的,机器自检通过后,boot程序就会运行。默认情况下,BIOS会从第0柱面读取一个叫做MBR的东西,第0磁道,硬盘上的第一个扇区,即主引导记录。一个扇区的大小为512字节,存储的内容是引导程序和分区信息。其中,引导程序占446字节,另外64字节是磁盘分区表DPT,最后两个字节是MBR的结束位,这512字节空间的内容是由特殊的分区程序产生的,比如fdisk.exe文件Windows下,或者Linux下的fdisk命令,不依赖于任何操作系统,而且MBR中的引导程序也是可以修改的,所以可以利用这个特性实现多操作系统共存。RedHat和CentOS将默认使用Grub作为操作系统的引导程序,但是Grub本身比较大,所以通常的做法是将Grub的地址写在MBR中,这样系统才会真正加载Grub作为系统的引导程序程序。运行Grub经过以上两步的准备,接下来就是顺利运行Grub了。Grub最重要的功能是根据其配置文件加载Kernel镜像,并在加载内核后运行第一个程序/sbin/init。这个程序会根据/etc/inittab进行初始化工作。其实这里最重要的是根据文件中设置的值来确定系统运行的runlevel。默认运行级别在“id:3:initdefault:”中定义,其中数字3表示当前运行级别定义为3。设置系统变量,配置环境Linux根据/etc/inittab中定义的系统初始化配置,si::sysinit:/etc/rc.d/rc.sysinit执行/etc/rc/sysinit脚本,会设置系统变量、网络配置、启动swap、设置/proc、加载用户自定义模块、加载内核设置等。根据runlevel的值运行相应的服务。这一步是根据之前读取的runlevel的值,启动相应的服务。如果值为3,将运行/etc/rc3.d下的所有脚本。如果runlevel=5,则会运行/etc/rc5.d下的所有脚本。