2009年7月6日星期一

Linux笔记之启动&GRUB

Linux启动并不是简单的通电断电。当电源开关被按下后存在ROM中的引导程序就将执行,这个引导程序讲解决如何载入和启动Linux内核。内核被载入后,将探测系统的硬件同时产生第一个进程init。之后,init进程将负责文件系统fs检测和挂载,系统守护进程启动。
Linux启动主要分以下5个阶段:
1.内核的载入和初始化;
2.设备的检测和配置;
3.产生内核进程;
4.执行系统启动脚本;
5.多用户操作。

下面具体介绍一下这5个阶段。
1.内核的初始化
Linux内核kernel本身也是一个程序,Linux启动的第一件事就是把这个程序添加到内存里并执行。而kernel一般放在/vmlinuz或者/boot/vmvlinuz处。引导过程主要分两步走:第一,ROM载入一个引导程序到内存里。这个程序将kernel载入到内存。接着,kernel负责内存检测RAM内核将保留一块内存为自己所用,这块内存将不能被任何用户级别的程序使用。
2.设备的检测
内核的第一个任务就是检测机器的环境,看看现在有些什么硬件啊,然后选择正确的驱动程序。当然这些必须在你编译内核的时候告诉他有哪些硬件。
3.内核的进程
初始化结束后,内核kernel将在用户空间产生几个自发生进程。
4.执行系统启动脚本(就是些一般的shell script)
5.多用户操作
执行完系统启动脚本后,系统就完全运作起来了,当然还没人登录。登录一定要被一个特定的终端接受,同时一个叫做getty的进程对其进行监听。这个进程由init直接产生,另外init还负责产生图形化登录界面xdm和gdm。

对于PC的启动有两个常用的引导程序:LILO和GRUB

LILO本来是传统的Linux引导程序,但是由于其不能很好的支持多启动,因此Red Hat ,SUSE, Fedora都将GRUB作为默认引导程序。

说一下GRUB(以下文字由ajaxhe提供)

----------------------------------------------------------------------------------------------------------------------

Fedora Linux采用GRUB作为引导程序。GRUB(Grand Unifed Bootloader,大一统引导管理器)是一个通用的引导程序,是用户能够在引导系统时选择启动的操作系统,或选择同一操作系统的不同版本。GRUB是目前应用最广的引导程序,许多Linux系统现均采用GRUB作为默认的引导程序。

GRUB提供三个功能强大的用户界面,每个界面都允许用户直接引导操作系统,在系统启动期间甚至可以在GRUB的三个界面之间切换。

第一个是菜单界面,采用GRUB的Linux系统都将GRUB菜单作为默认的引导界面。当安装完毕,计算机引导时,菜单界面就会出现在屏幕上,利用上下箭头选择需要引导的系统,按下回车键即可。如果长时间没有用户登录,GRUB会自动引导默认的操作系统。

第二个是菜单配置编辑界面,在引导操作系统的菜单中按下“e”键,便可以进入菜单编辑器。此时,可以临时性的修改操作系统引导菜单 。例如,按下“o”键便可以在当前行后面增加引导项;按下“O”键可以在当前行前面增加引导;使用“d”键可以删除引导项;使用“e”键可以编辑引导项等。修改后可以按回车键确认,或者按Esc键取消修改。

注: 在编辑操作系统引导菜单期间所作的任何修改都是临时性的 ,在下次引导时,这些修改回消失(如果想永久性地修改引导菜单,需要编辑grub.conf文件)。在测试新编译的系统内核时,这个界面比较有用。

第三个是命令行界面,在引导操作系统的菜单中按下“c”键,便可以进入命令行界面。命令行是GRUB最基本的界面,也是最基本的界面。

GRUB采用下列形式命名存储设备及其分区:

(,)

其中。“”表示设备的类型。最常用的两个设备类型是hd(表示硬盘)和fd(表示3.5英寸软盘)。其他设备还有nd(表示网络)和cd(表示CD/DVD)等。

”是BIOS能够识别的设备号,从0开始编号。主硬盘称作hd0,第二个硬盘的编号为1,如此等等。例如,GRUB把第一个磁盘称作 hd0,第二个磁盘称作hd1。第一个软盘驱动器称作fd0。这种设备命名和编号方式等价于Linux系统内核采用的设备命名方式,例如,Linux系统内核使用的设备名/dev/hda等价于GRUB德hd0,/dev/hdb等价于hd1。

”指定设备的分区编号。同BIOS设备号一样,设备分区编号也是从0开始编号的。例如GRUB把第一个磁盘的第一个分区称作“(hd0,0)”,第二个磁盘的第三个分区称作"(hd1,2)"。

在命名和引用设备于分区时,GRUB并不区分IDE硬盘和SCSI硬盘,所有的硬盘均以hd命名。当指定整个硬盘,且不考虑其分区时(如需要将GRUB安装到一个硬盘的主引导目录(MBR)时)只需要将逗号“,”和分号去掉即可。

--摘自《Fedora 8 Linux从入门到精通》 电子工业出版社 邢国庆 任永杰 张凯 编辑

--------------------------------------------------------------------------------------------------------------------------

因此如果要设置双启动,需进行如下配置:
打开/etc/grub.conf
Windows系统与UNIX系统不同:
title Windows XP
rootnoverify (hd0,0)
chainloader +1
chainloader表示从特定地方载入引导程序(这里是主硬盘第一分区的第一扇区)
rootnoverify 要这样看root-no-verify该选项保证grub不会试着去挂载特定的分区,这就避免了GRUB在读取其无法理解的分区时陷入泥潭。例如,ntfs格式的分区或者GRUB能够读取范围以外的分区。
(hd0,0)第一个数字值代表物理盘的编码,第二个数字表示分区号。(hd0,0)="/dev/hda1" XP必须挂在第0分区(鄙视你!)

例子:
default=0
timeout =0
splashimage=(hd0,2)/boot/grub/splash.xpm.gz
hiddenmenu
title Windows XP
rootnoverify (hd0,0)
title Red Hat
root (hd0,1)
kernel /boot/vmlinuz
title Fedora
root (hd0,2)
kernel /boot/vmlinuz

没有评论:

发表评论