1)启动第一步--加载BIOS;
2)启动第二步--读取MBR;
3)启动第三步--Boot Loader;
4)启动第四步--加载内核;
5)用户层init依据inittab文件来设定运行等级;
6)启动第六步--init进程执行rc.sysinit;
7)启动第七步--启动内核模块;
8)启动第八步--执行不同运行级别的脚本程序;
9)启动第九步--执行/etc/rc.d/rc.local;
10)启动第十步--执行/bin/login程序,进入登录状态;
其中在系统启动第二、三步时尤为重要,因为该步骤启动牵涉到MBR(主引导记录)中前446个字节的Bootloader(引导加载器),如果该步骤启动失败,那么linux内核就启动不起来,将直接导致linux系统启动失败。
Bootloader(引导加载器)分为两类:
1)LILO:Linux loader 早期linux比较常用,由于LILO短小精悍但是不能引导1024柱
面以后的分区上的系统,因现有硬盘都比较大,所以该种引导加载器不常用,只有
在嵌入式开发中用到,这里我们不多做解释;
2)GRUB:Grand Unified Bootloader(大统一引导程序),目前该种引导加载器在
linux系统中是最常用的,同时也可以用于windows系统中,这里我们将会详细说 一下grub,grub采用了非常精巧的启动方式,其启动过程分两个节段并且自己实
现了接力:
1)Stage1:位于MBR前446Byte中,主要负责引导Stage2;
2)Stage2:放在/boot/grub/目录里,还有另外的路径/usr/share/grub/,其提供
了导更多操作系统的界面,还可以提供一个图形界面splashimage,并且提供一个
背景图,在此背景图上还提供一个菜单让我们选择,并且该菜单还可以进行编辑, 由此看来grub功能异常强大;
其实grub的工作要依赖于其配置文件(/etc/grub/grub.conf)来实现的,这里来说grub的配置文件:
一、grub的配置文件是/boot/grub/grub.conf,其有两个链接文件分别为/boot/grub/menu.lst和/etc/grub.conf;其配置文件分为全局配置文件和局部配置文件:
下面来说下画面中的各选项的代表的意义:
default:用于设定哪个title用于默认启用的;
timeout:设定默认启动时间;
hiddenmenu:隐藏菜单;
splashimage:设定背景图片;例如:splashimage=(hd0,0)/grub/splash.xpm.gz
grup识别分区有自己的机制;hd0,0 表示第一个硬盘上的第一个主分区;
/grub/splash.xpm.gz或者/boot/grub /splash.xpm.gz(取决于/boot与/是否在
一个分区上);
title:引导一个内核或一个位于特定的分区的操作系统;
root:表示linux内核所在的分区;or(只读方式挂载);root=“真正的根
文件系统”,quiet 隐藏内核探测信息;
kernel 内核所在分区下的目录;
initrd initrd在内核所在分区下的目录;
系统启动时按任意键,可以进入grup的菜单选项,可以选择需要加载的内核:
如果需要修改有关内核的启动信息的话可以按e键可以对进入编辑接口:
编辑完成后连续按enter键退出然后按b键进行加载内核,如果要放弃修改可以按esc键退出。
当我们忘记系统密码时可以进入编辑接口向kernel中传递参数1,s,S,single
(单用户模式)中的任意一项就可以不用系统密码直接登录系统:
如果每个人都可以通过单用户模式进入我们的系统的话,像上述操作模式给系统的安全性带来了很大的风险,所以我们可以编辑/etc/grub.conf配置文件增加进入编辑模式的密码,每当用户进入编辑模式时会提示用户输入密码,这样我们的系统就安全多了:
其实在给/etc/grub.conf配置文件增加密码时有三种情况需要说明:
1)在全局配置文件中添加passwd “密码串”(会在编辑接口要输入密码);
2)在局部配置文件中增加passwd “密码串”(会在启动对应操作系统输入密码);
3)grub-md5-crypt 该命令为密码转换为乱码,然后复制到/etc/grub.conf文件下
的passwd选项下;(该种操作提示用户在启动内核前就必须输入密码);
二、如果grub由于某种原因损坏将会直接导致系统无法启动,下面讲一下如何重新安装grub,有两种安装方式:
1、 在grub命令模式下安装;
#grub(进入grub交互模式)
grub> root (hd0,0)(指定内核所在的分区)
grub> setup (hd0)(指定装在哪一块磁盘上)
quit(退出)