您的位置:

Linux启动流程详解,从BIOS到运行级别

一、BIOS

BIOS(基本输入输出系统)是电脑的主要固件之一,内置于计算机的主板上,主要作用是在计算机加电时进行自检,并将系统控制权移交给操作系统。在Linux启动的过程中,BIOS是第一步。

当计算机开机时,BIOS会自动初始化硬件资源,包括CPU、内存、硬盘、光驱等。接下来,BIOS会加载自检程序,进行一系列硬件自检,如果发现错误,就会输出错误信息。如果自检通过,BIOS会搜索启动设备的引导扇区,并将控制权转交给引导扇区。在Linux启动过程中,引导扇区是非常重要的,因为它包含着操作系统的启动程序。

二、引导程序

引导程序是位于硬盘的引导扇区中的第一扇区,它是操作系统启动的第二步。在Linux系统中,引导程序通常是GRUB(GRand Unified Bootloader)。GRUB是一个多重引导程序,它可以识别主流操作系统,比如Windows、Linux、Mac等,用户可以在启动时选择任何一个操作系统。

#在Linux系统中,GRUB的配置位于以下文件中:/etc/grub.d/40_custom
#GRUB启动顺序可以在/etc/grub.d/00_header和40_custom中进行调整
menuentry 'Ubuntu 18.04' {
   set root='hd0,msdos2'
   linux /vmlinuz root=/dev/sda2 ro
   initrd /initrd.img
}

从GRUB开始,Linux系统才开始真正地被加载。在此过程中,GRUB会读取内核文件和其它必要的文件系统模块并将它们加载到内存中。

三、内核启动

内核是Linux系统的核心部分,也是运行与系统最底层,直接操作硬件资源的部分。内核启动是Linux启动的第三步。

在内核启动时,Linux会做如下操作:

1、设置系统日志

2、初始化CPU、内存、硬盘等硬件

3、挂载根文件系统

4、建立root用户的环境变量

5、启动init进程

内核会创建root文件系统并挂在,以便操作系统可以访问硬盘中的数据。接下来,内核会加载一些必要的模块,如文件系统模块、网络模块等。在文件系统准备好之后,内核会启动init进程。init是Linux系统的第一个用户级别进程,它是进程控制的直接祖先。在Linux中,init一直存在于运行级别中,负责启动和终止其它的用户级别进程。

四、用户级别

用户级别是操作系统运行时的可供用户选择的不同状态,也称为运行级别。在Linux中,有七个运行级别。不同的运行级别提供了不同的服务,如多用户服务、图形界面、只运行背景服务等。用户可以根据需求选择运行级别。

以下是运行级别的定义:

0:系统停机状态,也称关机

1:单用户工作状态,root用户的命令行模式

2:多用户状态,没有NFS支持

3:完整的多用户状态,有NFS支持且无图形界面

4:系统未使用,保留

5:多用户状态,带图形界面

6:系统正常关闭并重启

用户可以通过运行级别来控制Linux系统的状态。在Linux中,运行级别可以通过修改/etc/inittab文件来实现。例如,可以增加下面这行代码来在“init 5”的时候启动Nginx服务器。

#在/etc/inittab中设置运行级别,并添加如下两行代码
id:5:initdefault:
ng:5:respawn:/usr/local/nginx/sbin/nginx

总结

以上是Linux系统启动的完整过程,从BIOS开始,到引导程序,再到内核启动,最后到用户级别。操作系统的启动过程非常复杂,需要各种硬件和软件的协同作用。了解Linux的启动过程可以帮助我们更好地理解操作系统,并且在处理问题时可以更快地找到根本问题。在实际运维中,了解Linux系统的启动过程也非常重要。