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采用下列形式命名存储设备及其分区:
(
其中。“
“
“
在命名和引用设备于分区时,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
没有评论:
发表评论