1.加载BIOS的硬件信息,获取第一个启动设备。
2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息
3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备。
4.核型执行init程序并获取运行信息。
5.Init执行/etc/rc.d/rc.sysinit文件。
6.启动核心的外挂模块(/etc/modprobe.conf)。
7.Init执行运行的各个批处理文件(scripts).
8.Init执行/etc/rc.d/rc.local.
9.执行/bin/login程序,等待用户登录。
10.登录之后开始以Shell控制主机。
POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘、CD-ROM光驱等硬件情况的检测。
ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等。
RAM:CMOS互补金属氧化物半导体,保存各项参数的设定
按次序查找引导设备,第一个有引导程序的设备为本次启动设备
bootloader: 引导加载器,引导程序
windows: ntloader,仅是启动OS
Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
LILO:LInuxLOader
GRUB: GRandUnified Bootloader
GRUB 0.X: GRUB Legacy,GRUB2
MBR:
446: bootloader,64: 分区表, 2: 55AA
GRUB:
primary boot loader : 1st stage,1.5 stage
secondary boot loader :2nd stage,分区文件
kernel:
自身初始化:
探测可识别到的所有硬件设备
加载硬件驱动程序(可能借助于ramdisk加载驱动)
以只读方式挂载根文件系统
运行用户空间的第一个应用程序:/sbin/init
init程序的类型:
SysV: init, CentOS 5之前
配置文件:/etc/inittab
Upstart: init,CentOS6
配置文件:/etc/inittab, /etc/init/*.conf
Systemd:systemd, CentOS 7
配置文件:/usr/lib/systemd/system
/etc/systemd/system
ramdisk:
内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问
ramdisk--> ramfs提高速度
CentOS 5: initrd, 工具程序:mkinitrd
CentOS 6: initramfs,工具程序:mkinitrd, dracut
系统初始化:
POST --> BootSequence(BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs(只读) --> init(systemd)
/sbin/initCentOS6之前
运行级别:为系统运行或维护等目的而设定;0-6:7个级别
0:关机
1:单用户模式(root自动登录), single, 维护模式
2: 多用户模式,启动网络功能,但不会启动NFS;维护模式
3:多用户模式,正常模式;文本界面
4:预留级别;可同3级别
5:多用户模式,正常模式;图形界面
6:重启
默认级别:3, 5
切换级别:init #
查看级别:runlevel; who -r
服务脚本示例:
[[email protected] init.d]# cat testsrv
#!/bin/bash
# chkconfig: 35 88 22 #35: 运行级别;88:系统启动时此服务的运行顺序,最大99;22:系统关闭时的运行顺序,值越大优先级越低!
# description: testsrv script #描述-----此两行是固定格式!!!
case $1 in
start)
echo testsrv start
;;
stop)
echo testsrv stop
;;
status)
echo testsrv status
;;
*)
echo ‘testsrv start | stop | status‘
;;
esac
以下为命令行操作:
chkconfig --add /etc/rc.d/init.d/testsrv #添加此服务至服务列表
chkconfig --list #查看服务列表
chkconfig --del testsrv #从服务列表中删除此服务
chkconfig --level 35 testsrv off #3或者5级别,开机时不启动此服务
chkconfig --level 345 testsrv on #3,4或5级别,开机时启动此服务
ntsysv #也可以设置开机启动项
chkconfig testsrv on #不指定级别时,模式是2345
chkconfig |grep testsrv
testsrv 0:off 1:off 2:on 3:on 4:on 5:on 6:off
centos6破解root口令---即单用户模式(前提是没设置grub密码,否则需输入grub的密码才能进入)
1、重启机器,当出现以下界面时按任意键
按“e”
按上下箭头选择第二行,再按“e”
在quit的后面先空格,再输入1,回车
按“b”启动系统
2、如下图说明系统已经启动了,在命令行输入runlevel,查看系统当前运行级别,显示为1 S,即单用户模式,此时就可以修改root密码了,在命令行输入passwd,回车,输入两次密码,然后重启机器即可。