当你每次打开电脑的时候,第一个执行的程序是叫做bootloader的东西,它会引导你的电脑上已经安装好了的操作系统。Grub(GRand Unified Bootloader)是很多Linux版本的一部分。它会引导Linux内核的启动。这里我们大概讲解一下有关Grub的一些东西。
Grub最小是由Erich Stefan Boleyn编写的,现在已经成为了GNU项目的一部分。目前的版本是Grub 0.9X,也叫做Grub Legacy. 从2002年开始,开发人员们将注意力移到Grub2的开发上,并且停止了对Grub Legacy的继续支持。但是还是源源不断地接受来自世界各地的补丁以及bug。Grub2现在还处在开发阶段,大多数的Linux发行版本还是使用Grub Legacy.
Grub不依赖于任何一个操作系统。完全迎合了Free Software Foundation的多系统引导说明(Multiboot Specification),可以引导大多数已知的操作系统,如果你的电脑上安装有多个操作系统的话,Grub一样能够工作。
下面是Grub的一些优点:
1. 动态配置。用户可以在系统的启动阶段修改启动配置。
2. 支持多种文件系统。
3. Grub可以以图形界面的方式或者命令行的方式呈现给用户。
如果你已经在你的电脑上安装了Windows系统,在你安装完Linux后,Grub或者LILO会替换原来Windows的bootloader,这样你每次启动电脑的时候Grub都会为你服务。
安装Grub
大多数版本的Linux预装有Grub,需要声明的是,如果你已经安装了bootloader,那么没有必要安装Gurb,除非你的bootloader不认你的某些操作系统。
如果在安装Grub的过程中出现了错误,那么会直接导致你的机器无法启动。不要在自己的硬盘上面试验,如果需要的话,你可以在你的usb设备上进行尝试。
开始工作,首先下载Grub,记得要下载Legacy版本。解压缩你下载的包,然后执行下面的命令:
[code]
tar -xzvf grub-0.9x.tar.gz
cd grub-0.9x
./configure
make
sudo make install
[/code]
如果一切顺利的话,Grub会在上面的命令执行完毕之后安装好。
配置Grub菜单
如果你需要默认的让Grub启动某一个操作系统,或者呈现给你一个意安装操作系统菜单的话,那就需要配置一下Grub了,配置选项都放在一个叫做menu.lst的文件当中,位于Grub所在分区的grub目录下。智能的是,如果在安装grub的过程中,grub发现了你装有多个系统的话,所有的可引导系统都会自动列在这个文件里面。Ubuntu下该文件在/boot/grub下。
在Ubuntu 7.04下的menu.lst可能会是这个样子:
[code]
default 0
timeout 3
hiddenmenu
title Ubuntu, kernel 2.6.20-15-generic
root (hd0,0)
kernel /boot/vmlinuz-2.6.20-15-... ro quiet splash
initrd /boot/initrd.img-2.6.20-15-generic
[/code]
timeout--Grub菜单出现的时间
default--确定默认启动的系统,在timeout所规定的时间结束之后,会启动default所指定的系统,也可以不是数字,填写成saved,但是需要在默认启动的系统后面加上savedefault一行
hiddenmenu--不显示菜单,但是在grub运行的时候通过按ESC来显示
title--在菜单中显示的字符串
root--在哪一个硬盘上以及分区上可以找到要加载的内核文件
kernel--内核文件的位置 ro的意思是readonly,尽管内核不是readonly的,但是这里是强制其为只读方式。 quiet的意思是不显示debug信息 splash的意思是一命令行的方式显示系统启动过程
initrd--指定在系统启动后需要运行的第一个程序
出了上面的选项之外,还有其他很多的选项:
fallback--用法跟default一样,在后面加一个数字,这个选项在默认系统无法启动,并且安装有多个系统的时候乎非常有用,比如当你的linux无法启动,并且你还安装了windows的话,通过设置fallback 1,grub在检测到无法启动linux的时候会自动地启动windows系统。
在usb设备上安装Grub
通过在usb设备上安装grub,你可以将你的usb设备作为第一个启动的设备。
首先插上你的usb设备,然后使用具有sudo权限的帐号进行操作。在usb设备上建立一个文件夹,名字叫grub
下面需要根据usb设备的文件系统格式来将/boot/grub文件夹下面的几个文件拷贝到上面的grub文件夹,比如你的usb设备是e2fs格式,那么需要拷贝下面的文件:
[code]
cp /boot/grub/stage* /boot/grub/e2fs_stage1_5 /mnt/usb/grub/
[/code]
然后在MBR中写入要启动的设备的信息
[code]
grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
[/code]
device--指定第一个设备为/dev/sda设备,也就是usb设备
root--引导grub在usb设备的0扇区找到stage文件
setup--将信息写入到usb设备的MBR中
quit--退出
这样设置之后系统就会以usb设备启动了,但是这里没有什么系统,所以会出现grub命令行方式,具体能做些什么呢,看看这里
原文 部分内容修改
没有评论:
发表评论