Linux引导流程(第二版)
Linux引导流程
固件
按下电源的第一个启动步骤:启动固件firmware → POST加电自检
检查硬件的加载情况,如,键盘,内存等。
跟操作系统无关。但不同的硬件平台,固件不同;
当你新添加了一块硬盘,第一步就是应该首先进入到固件模式,检测固件是否已经识别出这块硬盘!
固件最重要的作用,读取MBR -> ...
自举程序
读取MBR[master boot record,主引导记录]
【MBR位于位于磁盘的0柱面,0磁头,1扇区 如图:】
进入这一步骤的目的是读取MBR中的数据[MBR保存了三种数据]:
1、Boot Loader:自举程序,自启动程序,在Linux中为:GRUB
2、Partition table:磁盘分区表
3、Magic Number:结束标志字
/etc/grub.conf简要分析:
kernel /vmlinuz-2.6.32-358.el6.i686 ro root=UUID=6e428aef...用来指定内核的位置
2:主板本号
6:次版本号,如果此处为奇数为测试版,偶数为正式版
32:末版本号
由此可以看出:GRUB最重要的作用 -> 载入内核!
附-关于内核:
1.是一个可执行文件,是一个文件,并不是一堆文件
2.z-代表是一个压缩文件,因此在启动的时候,他会不停的解压缩这个文件
载入内核
内核在此期间只做两个工作:
1、驱动硬件
2、启动进程init:
init启动后读取配置文件inittab,执行缺省运行级别, 从而继续引导。
在UNIX/Linux系统中,init时第一个可以存在的进程,它的PID恒为1[通常,PID是随机分配的,但是init特殊,可以通过命令:ps -el | more 查看],Linux系统中init名义上可以说是所有进程的父进程,虽然init的PID恒为1,但它也必须向一个更高级的功能负责:PID为0的内核调度器(Kernel scheduler),从而获得CPU时间.
内核调度器负责:分配系统时间,进程间切换
init读取配置文件/etc/inittab
Linux的运行级别,如图:
0-halt:关机
1-单用户模式,没有图形界面
【修复模式,类似与Windows的安全模式】
2-多用户模式,但是也没有图形界面,2与3是Linux服务器运用最多的模式
3-与2类似,添加了NFS
4-没有使用的,但可以由用户自定义
5-缺省运行级别:x11说明是图形化的多用户环境
6-重启
运行级别切换:
1.查看当前运行级别 runlevel
N代表没有切换过运行级别
S代表切换之前的运行级别
数字代表当前的运行级别
2.切换运行级别
init [0123456Ss]
或 telinit [0123456Ss]
附-同步软硬件时钟:【两个时间应该是一致的】
hwclock 显示硬件时钟
hwclock --help :其中详细的说明了同步时钟的选项
改变时间:
-s | --hctosys set the system time from the hardware clock
-w | --systohc set the hardware clock to the current system time
--set set the rtc to the time given with --date
E.g.
date MMDDhhmm
hwclock --set --date="9/23/14 16:31:05"