启动流程 上电开机-- BOIS实现硬件自检初始化-- 找到启动设备的编号 -- 找到MBR(主引导记录,在硬盘的0磁道的0扇区) -- 启动grub程序 -- 通过grub设置找到vmlinuz并加裁到内存里运行 -- 启动内核会加载initrd(随机内存盘,小型文件系统,作用:能够让内核认出系统所在的哪个设备上,临时驱动) -- 运行产生第一个进程init -- init进程会读取/etc/inittab根据配置文件,判断系统进去运行在哪个级别并进入相对应级别启动相应服务 -- /etc/rc.sysinit 系统环境初始化,获取主机网络环境,测试或者载入设备,设置时间... -- /etc/rc.local开机后要运行的脚本
/etc/inittab
0 关机 1 单用户模式 2 没有网络的文本模式 3 有网络的文本模式 4 保留 5 图形模式 6 重启
id:5:initdefault: 默认开机后进入的系统级别
l0:0:wait:/etc/rc.d/rc 0 ....... l6:6:wait:/etc/rc.d/rc 6 定义六个级别启动的服务脚本
ca::ctrlaltdel:/sbin/shutdown -t3 -r now 定义ctrl+alt+del三键重启功能,在tty模式有效,在图形模式下无效,这个还会受到内核参数的影响
1:2345:respawn:/sbin/mingetty tty1 ..... 6:2345:respawn:/sbin/mingetty tty6 定义了6个虚拟终端
x:5:respawn:/etc/X11/prefdm -nodaemon 启动图形
x:5nce:/bin/su root -l -c "/bin/bash --login -c startx >& /dev/null" 自动用root登录图形
respawn 代表什么时候终止都重新启动命令 once 代表运行这个命令一次
/etc/rc.local linux启动最后阶段,系统会执行/etc/rc.local脚本
/etc/X11/xinit/xinitrc.d/ 此目录里可以放置图形界面开启自动运行的脚本
=============================================================================== 三、GRUB启动加载器
cd /boot/grub
stage1 MBR中的bootloader备份文件
stage2 grub的核心文件
device.map grub与linux的硬盘符号映射表
splash.xmp.gz grub的背景图片
grub.conf grub的配置
-------------------------------------------------------------------------------
vim /boot/grub/grub.conf 配置文件
default=0 默认启动的操作系统(0代表第一个title....)
timeout=5 5秒后自动启动default操作系统
splashimage= 指定背景图片的路径
hiddenmenu 隐藏开机选项
password --md5 设置启动参数密码,grub-md5-crypt产生
title 操作系统名称
password --md5 设置启动操作系统密码
root 指定kernel和initrd所在的分区,(hd0,0),表示第一块硬盘,第一个分区
kernel 指定kernel路径,内核启动参数
initrd 指定initrd路径
rootnoverify 指定其它操作系统(windows)
chainloader +1 链接加载到第一扇区(windows)
--------------------------------------------------------------------------------
grub背景图片制作
convert 源图片 -resize 640x480! -colors 14 test.xpm 修改颜色数和分辩率
convert没有此命令:
imagemagick 找此关键字安装
-------------------------------------------------------------------------------
grub命令
help 列出命令
quit 退出
root(hd0,1) 指定第一个硬盘第二个分区为grub文件所在的分区
setup(hd0) 安装grub到第一个硬盘上
把grub安装到硬盘第一扇区: grub-install /dev/sda
boot 启动系统
grub.conf中title下的命令都一样
-------------------------------------------------------------------------------
kernel 启动参数
ro 以只读的方式加载内核,默认rw
root=LABEL=/ 指定卷标是/的分区为根分区,也可以直接指定设备文件
rhgb 图形启动时以图形方式显示启动信息
quiet 启动时不显示检查硬件的信息
[0-6] 1启动单用户模式....
vga=792 指定终端的分辩率为1024x768
panic=n 内核崩溃n秒后重新启动
iso-scan/filename=/0.91.iso 指定根分区为iso镜像
boot=casper 启动iso默认访问的文件夹
-------------------------------------------------------------------------------
initrd作用
Kernel网启动没有任何文件系统的目录,这时会先以initrd提供的目录当作kernel的暂时目录,该文件系统主要提供内核启动时需要的驱动,ext3文件系统驱动,如果没有该驱动就不能挂载根分区,没有挂载根分区就不能读取根分区中的ext3驱动,所以要有一个临时的initrd提供驱动
-------------------------------------------------------------------------------
打开initrd
file initrd-* 检查到该文件为gzip文件,不要相信扩展名
mv initrd initrd.gz 改变扩展名
gzip -d initrd.gz 解压gz文件
file initrd 检查到该文件为cpio文件
cpio -im < initrd 解压cpio文件
打包initrd
find | cpio -co | gzip -9 > initrd-new.img
-------------------------------------------------------------------------------
grub 排错引导例子
如果grub丢失,或者grub写的有错误等情况,进系统时有可能会直接到一个grub>的界面(也就是黑屏幕上就一个grub >的提示符)
grub> root (hd0,0) --进入到/boot分区
grub> kernel /vmlinuz-xxxxxx ro root=LABEL=/ --根分区可以用label,也可以用/dev/sdax来代替
grub> initrd /initrd-xxxxxx
grub> boot --boot代表启动
如果能启动,就修改好你的grub
如果启动出现kernel panic 的错误,表示是上面写错了,再试试,不行就用linux rescue去修复 |