进入单用户模式: 1)编辑grub菜单,选定要编辑的title,而后使用e命令 2)在选定的kernel后附加1 ,s 或single 3)在kernel所在的行,键入b键
启动时按e键:
上下选择到kernel后按e编辑输入1或s、S、single,再次按b键重启
6、根切换 在挂载根文件系统时为了避免内核中有bug或操作过程中有bug导致根文件系统被损坏,先只读挂载根文件系统,加载完成后才读写挂载,完成整个挂载根文件系统后,直接去找/sbin/init程序,即开始运行用户空间的第一个程序。
用户空间启动流程 7、/sbin/init程序 init程序主要依赖于配置文件:/etc/inittab,大体分为:设定默认启动级别 --> 设定系统初始化脚本 --> 启动对应级别的服务 --> 打印各终端登录界面(如果级别为3处理提供文本登录界面,如果级别为5还提供图形登录界面)
8、设置默认运行级别 (1)运行级别:为了系统的运行或维护等目的而设定的机制; 0-6:共7个级别; 0:关机,shutdown 1:单用户模式(single user),root用户,无须认证,维护模式; 2:多用户模式(multi user),会启动网络功能,但不会启动NFS,维护模式; 3:多用户模式(multi user),完全功能模式,文本界面; 4:预留级别:目前无特别使用目的,但习惯以同3级别功能使用; 5:多用户模式(multi user),完全功能模式,图形界面; 6:重启,reboot 图示:
读取配置文件:/etc/inittab
(2)配置文件:/etc/inittab定义了很多功能,每一行定义一种操作(action)以及与之对应的process(仅适用于CentOS 5),一行就定义了init要执行的任务,甚至是一堆任务,每一行的语法格式为: id:runlevels:action:process id为一个任务的标识符; runlevels:在哪些运行级别下启动此任务;例:3,2345,也可为空表示所有级别; action:在什么条件下启动此任务; wait:等待切换至此任务所在的级别时执行一次(刚刚切换进来时); respawn:一旦此任务终止时,就自动重启;(如:登录终端执行logout登出后会再次启动) initdefault:设定默认允许级别;此时process省略为空; sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit脚本;(CentOS 5,6都用到此脚本,CentOS 7是靠systemd完成的),在CentOS 6中仅保留此配置文件中设定启动运行级别的功能。 process:具体任务;通常为应用程序,或脚本,或二进制的程序,取决于自定义。
演示:
9、系统初始化脚本 系统初始化脚本:/etc/rc.d/rc.sysinit (1)设置主机名; (2)设置欢迎信息; (3)激活udev和selinux; (4)挂载/etc/fstab文件中定义的所有文件系统; (5)检测根文件系统,并以读写方式重新挂载根文件系统;(重新挂载是指根文件检测完之后) (6)设置系统时钟; (7)根据/etc/sysctl.conf文件来设置内核参数; (8)激活lvm即软raid设备; (9)激活swap设备; (10)加载额外设备的驱动程序;(内核加载驱动只加载根文件系统的) (11)清理操作; 注意:在init配置文件:/etc/inittab中,有一行内容是定义/etc/rc.d/rc.sysinit,此脚本文件是负责完成系统初始化的脚本文件。
10、关闭/启动对应级别下的服务 脚本文件/etc/rc.d/rc作用为当级别切换时启动或停止服务;此脚本接受传递的参数给脚本中$runlevel变量,然后,读取/etc/rc$runlevel.d/K*和/etc/rc$runlevel.d/S*所有文件,这些文件就是为什么开机启动后,有些服务会自动启动,有些服务没有启动的原因。 K*:要停止的服务,K##*,优先级,数字越小,越优先关闭,依赖的服务先关闭,然后再关闭被依赖的。 S*:要启动的服务,S##*,优先级,数字越小,越是优先启动,被依赖的服务先启动,而依赖的服务后启动。 /etc/rc.d/init.d目录还有个链接目录为/etc/init.d目录,这两目录下文件相同。
如上诉定义将会启动3级别下的以S打头的进程: 图示:
11、启动终端(图形终端) 操作系统启动完成
三、系统启动流程总结。
内核级别: 1.POST做开机启动时候的硬件检测功能 2.BootSequence(BIOS)启动加载主引导分区MBR中的引导加载器程序BootLoader 在LInux现行的BootLoader是三段划分(打破446字节限制)的GRUB程序, 第1段写在BootLoader中 第1.5段在其后扇区用于文件系统的引导 第2段在boot/grub中提供内部接口和调用系统内核kernel 3.Kernel识别硬件、加载驱动、只读挂载根文件系统、同时交付给用户空间第一个程序/sbin/init 此处特别要注意,系统发行商为了适应多种硬件接口驱动调用,会在第一次安装系统时候,自动识别硬件接口,并调用唯一驱动程序来生成ramdisk文件,以内存当磁盘做虚根,驱动接口后会切换到真实的根文件系统上 CentOS 5系列是initrd,当磁盘映像文件会造成二次缓存缓冲 CentOS 6/7系列改进为initramfs,以文件系统形式可以不二次占用缓存和缓冲
用户空间级别 4./sbin/init接管后更具其配置文件来初始化 5.根据/sbin/init中的配置会设置默认运行级别,以及一些在/etc/init.d/设置的开机服务 6./etc/rc.d/rc.sysinit运行系统初始化脚本,完成系统初始化 7.关闭对应级别下需要停止的服务,启动对应级别下需要开启的服务 8.设置登录终端 (责任编辑:最模板) |