系统启动过程?
POST->BIOS(boot sequence)->GRUB Stage1(MBR-bootloader)->GRUB Stage2(/boot/grub/grub.conf)->kernel, initramfs->/sbin/init->/etc/inittab->/etc/rc.d/rc.sysinit->/etc/rc.d/rc(/etc/rc.d/rcN.d/{K* S*})
1. 第一步 加电自检,检查硬件是否正常工作,如果正常,就会根据预先定义好的启动次序去指定的设备上依次查找MBR
2. 第二步 通过设备中的MBR中的前446字节可以获取到bootloader程序
bootloader有两种类型
早期LILO
流行GRUB 0.X 1.X
这里找到并执行bootloader,其实运行grub的第一阶段,通过grub state1可以找到磁盘上的一个特定分区中的grub stage2,在stage2的配置文件中就指定了内核和临时文件系统的位置,这样就通过bootloader找到了内核
3. 第三步 将找到的内核装载入内存中,并运行,同时将临时文件系统在内存中展开,将一部分内存空间临时作为磁盘来使用,这样在内存中就有一个完整的、临时的文件系统,内核可从这个临时文件系统中获取到所需要的驱动程序,那么内核就可以尝试执行/sbin/init发起第一个用户空间进程
4. 第四步 通过init生成第一个用户空间进程,同时会去读取配置文件/etc/inittab 以及 /etc/rc.d/rc.sysinit 来完成设置系统运行级别,以及其他的系统初始化功能
运行级别有
C5\C6:运行级别
0:关机
1:单用户模式级别:通常用于进行系统的修复
2:不带网络的字符级别
3:字符级别
4:保留级别
5:图形级别
6:重启
查看级别:
runlevel
who -r
临时切换级别
init NUM
1. 关机 init 0
2. 重启 init 6
3. 切换到图形界面 init 5
4. 切换到字符界面 init 3
修改系统的默认级别
修改init的配置文件/etc/inittab
init–/etc/inittab
1. 定义系统的默认运行级别
2. 定义系统初始化脚本(rc.sysinit)
3. 实现程序的开机自动启动
rc.sysinit的功能
设置主机名
设置系统时钟
设置键盘映射
激活swap
激活selinux/iptables
挂载 /etc/fstab中所定义的外部设备
激活raid、lvm