1. linux系统启动过程如下:
(1) 进入BIOS开机自检,获取系统的引导方式
系统启动时首先进入BIOS,加载BIOS信息,在此步骤选择开机引导方式,如磁盘,光盘或者网络引导。
本文假设磁盘为第一引导
(2) 读取磁盘中MBR的boot Loader
MBR是磁盘的0柱面0磁头1扇区。
MBR由三部分组成:主引导程序,磁盘分区表和硬盘有效标志。
不同盘片的相同扇区组成柱面。
MBR大小为512字节,其中主引导程序未446字节,负责从活动分区中装载运行系统引导程序,磁盘分区表即DPT占64字节,每个分区表项为16字节,64/16=4, 这也就是为什么ext4文件系统最多有4个主分区的原因。分区有效标志位占2个字节,规定为55AA,如果此标志位为0xAA55则此为MBR。
grub是一个来自GNU项目的多操作系统启动程序。
(3)依据 boot loader的设定到引导分区加载kernel。
kernel会开始侦测硬件并加载驱动程序。
(4) 硬件驱动成功后kernel会主动执行init程序。
(5) init程序读取/etc/inittab文件中runlevel值
根据独到的runlevel决定进入哪个运行级别
(6)init读取/etc/rc.d/rc.sysinit配置,完成对应运行级别环境的配置。
如时区、网络的配置。
(7)init执行对应runlevel下的服务
(8)init读取文件/etc/rc.local,执行开机执行的命令
(9)init执行虚拟终端控制程序mingetty来启动login程序,然后进入登录界面。
开机后通过ps -aux | grep mingetty可以看到没有tty1,即运行级别5.因为tty1是从/bin/bash中直接启动的。
2. 文本界面向图形界面切换
startx或者init 5皆可,二者区别是startx运行级别未发生改变,init 5运行级别切换到5, init 5服务需要重启,statx不需要服务的重启。
3. 开机涉及的文件
grub文件: /etc/grub.conf , grub加密、开机顺序、延迟等都可在此设置
runlevel文件: /etc/inittab,在此修改开机启动级别
/etc/rc.d/rc.sysinit :系统初始化文件,主机名、mount分区、激活swap等都在此记录。
如运行级别3:/etc/rc.d/rc3.d里面S开头的是需要开机启动的,K开头的为开机不启动的服务,K/S后面数值是启动的优先级,数值越小优先级越高。
rcn.d即不同级别下需要开机时需要开启和关闭的服务,虽然在这些文件里面可以查看到服务的开机启动与否,但是不可再次进行开机启动与否的设置。
服务的开机启动方式:
(1)chkconfig
(2)/etc/init.d
(3)/erc/rc.local
现在正在做系列视频课程,课程中会提供视频中涉及的操作文档、软件包,系列课程内容更加完整、贴近实际工作。欢迎感兴趣的小伙伴到[网易云课堂](https://study.163.com/course/introduction/1005734052.htm)进行学习。