一、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系统的启动过程也非常重要。