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"

相关内容