Linux
系统初始化
概述:
BIOS
初始化
引导装载程序
内核初始化
Init
初始化
BIOS
初始化
1,
外围设备的检测
2,
选择引导设备
3,
读取引导设备的MBR
MBR:
全称为
Master Boot Record
,即主引导记录
.
硬盘的
0
柱面
0
磁头
1
扇区也叫主引导扇区
.
(此图片来自百度)
主引导程序
(BootLoader):
负责从活动分区中装载
,
并运行系统引导程序占
446byte
分区表
(DPT,Disk Partition Table):
四个分区项每个占
16
字节
,
总共占
64byte
结束标志字
:
硬盘有效标志固定为
55AA,
如果该标志错误系统就不能启动
.
占
2byte
MBR = BootLoader + DPT + Magic Number = 512byte
引导装载程序
调用引导装载程序
:
两种方式
:
1,BIOS
将控制权交给安装在
MBR
中的初始化程序装载器
(IPL)
2,BIOS
将控制权交给另一个引导装载程序
,
再由这个装载程序将控制权移交给
IPL
RedHat
Enterprise Linux
下默认使用
GRUB
这个引导装载程序
.
由于
BootLoader
占用了
MBR
的
446byte,
所以
IPL
的大于就不能超过
446byte.
引导装载程序
:
第一阶段
GRUB
的
IPL
找到并装载第二阶段的引导装载程序
.(
即初始化引导装载器
)
第二阶段
GRUB
读取
/boot/grub/grub.conf
配置文件
,
加载启动分区
,
内核与
RAMDISK
文件
.
(GRUB
在安装时系统会选择性的将一部分安装在
MBR
或引导分区
/boot
上
,
将剩下的部分安装在引导分区
/boot
中
,
以文件的形式存在
.)
如下图
,GRUB
被安装在
/boot
引导分区上
stage1
刚好512字节,它唯一的工作就是找到并装载stage2
stage2
借助
stage1_5
驱动文件系统,并查找
grub.conf
,显示启动菜单供用户选择,然后根据用户的选择或默认配置加载操作系统内核,并将控制权交给操作系统内核,由内核完成操作系统的启动。
GRUB
特色
:
1,
引导提示时可以使用命令行界面
,
方便灵活
.
2,
可引导的文件系统
ext2/ext3 ReiserFS JFS FAT minix FFS
3,
支持
MD5
密码保护
. (
使用工具
:#grub-md5-crypt)
4.
如果
/dev/sda
中的
MBR
损坏
,
使用以下命令即可重新安装引导装载程序
.
#/sbin/grub-install /dev/sda
/boot/grub/grub.conf
注
:grub.conf
里
”
0”
表示第一个
全局定义部分
:
Default
指定默认启动项
,
这里默认是选择第一个启动项
,
这里也就一个启动项
.
Timeout
指定给用户选择的时间
,
这里是
5
秒
Splashimage
指定
GRUB
启动时的背景画面
.
Hiddenmenu
隐藏选单
password GRUB
密码
, --md5
参数为启用
MD5
加密
.
开机选项部分
:
Title
启动选项标题
Root
指定要加载的根
,
也就是
/boot
启动分区
Kernel
要加载的内核文件
, ro
只读的方式加载
root=/
根分区
,
传递内核参数
…
Initrd
指定要加载到内存中的
RAMDISK
文件
(
加载系统启动所需的驱动模块
)
引导
windows xp :
title windows xp
rootnoverify (hd0,1)
chainloader +1
内核初始化
1,
设备检测
2,
设备驱动程序程序初始化
3,
以只读的方式挂载根文件系统
4,
载入初始进程
: init (PID:1,
系统第一个启动的进程
,
所有进程的父进程
.)
Initrd
映像文件里包含了系统开机需要加载的模块
,
如果所需的驱动程序没有编译在内核里
,
那必须存在于
initrd
映像文件中
,
内核会将
initrd
映像暂时挂载到
RAMDISK
上
,
以便初始化程序使用
.(
内核初始化过程存放在
/var/log/dmesg)
Init
初始化
1,
初始化运行级别
2,
系统初始化脚本
3,
对应运行级别的脚本目录,
根据某个关键字顺序启动相关服务
4,
定义UPS
电源中断/
恢复脚本
5,
在虚拟控制台生成getty
6,
如果是运行级别5
则初始化X
Init
读取的初始化文件: /etc/inittab
系统默认运行级别:
0:
关机 1:
单用户模式 2:
不带NFS
的多用户模式 3:
完全多用户模式 4:
保留无定义
5:
图形登录 6:
重启
S , s , single
备用单用户模式
Emergency
紧急模式 (
绕过 rc.sysinit, sulogin,)
所以只能只读的方式挂载根.
/etc/rc.d/rc.sysinit
的主要工作:
1,
激活udev
和selinux
2,
依据
/etc/sysctl.conf
文件设定内核参数
3,
设定系统时钟
4,
装载键盘设置
5,
启用交换分区
6,
设置主机名
7,
检查并重新挂载根文件系统
8,
激活
RAID
和
LVM
设备
9,
启用磁盘配额
10,
检查并挂载其他文件系统
11,
清理过时的锁和
PID
文件
/etc/fstab
挂载设备
(
设备名
,UUID,LABEL)
挂载点
文件系统类型
挂载参数
dump
项
(0:
从不备份
,
上次备份则显示距今天的天数
) fsck
项
(/
始终为
1
即第一个检查
,0
为不检查
)
system V
运行级别
:
每个运行级别都有对应的目录
: /etc/rc.d/rcX.d ,
而
system V init
脚本放在
/etc/rc.d/init.d
目录中
,
运行级别目录中的符号链接使用
start
和
stop
参数调用
Init.d
目录内的脚本
.
S: start K: kill
数字为优先级
,
优先级大的先开后关
,
以数小为大
.
/etc/rc.d/rc.local
为
system V
初始化的最后阶段
.
在系统进入运行级别时执行
,
通常用于自定义开机执行需要的进程
.