当前位置: 技术问答>linux和unix
谁能贴一张关于GRUB中命令行使用的帖子,100相送!!!!!
来源: 互联网 发布时间:2015-02-08
本文导语: 最后能结合例子详细的讲,谢谢了:) | 转载自http://www.freelamp.com/new/publish/1003246964/index_html 如果你玩过Linux ,那么你一定使用过或者知道 LILO ,这个在安装 有Linux 的系统上使用最广泛的...
最后能结合例子详细的讲,谢谢了:)
|
转载自http://www.freelamp.com/new/publish/1003246964/index_html
如果你玩过Linux ,那么你一定使用过或者知道 LILO ,这个在安装
有Linux 的系统上使用最广泛的多重启动管理程序。然而笔者今天要
介绍的是随 Mandrake Linux 所带的 GRUB(GRand Unified Bootloader)
,让我们看看它怎样来代替LILO。
LILO 需要知道你的内核在驱动器上的实际位置,但是GRUB
却不需要,它不仅能读文件系统还能识别内核映像,而且它还支持最新的
2.4.1 内核所带的 Reiser 日志文件系统。这意味着你不必在更新内核
或者改变配置文件之后重新安装GRUB。如果BIOS 支持LBA 的话,也没有
1024 柱面的问题。另外还支持网络启动和无盘客户机。
然而,或许我们对LILO 太熟悉了吧,也或许GRUB 还有很多需要完善?
总之,安装 GRUB 看起来并不是一件很轻松的事情。下面我们就详细介绍
GRUB 的安装和配置。
安装
在 /tmp 目录下解开文件:
# tar zxvf grub-0.5.96.1.tar.gz
进入 "grub-0.5.96.1" 目录,编译程序:
# ./configure
# make
# make install
配置:
和许多我们平常看到的多重启动管理程序一样,GRUB
提供一个菜单界面(LILO 不是菜单界面的)。GRUB的
缺省安装位置为 /boot/grub ,配置文件也放在这个目录下。缺省
的配置文件名为 menu.lst,这个文件的功能就像和 lilo.conf
一样,定义多重启动选项以及磁盘映像。
我们来看一个 menu.lst 文件的示范例子:
timeout 5
color black/yellow yellow/black
default 0
password freeos
title My Mandrake
kernel (hd0,1)/vmlinuz root=/dev/hda3 idebus=66
title My Red Hat
kernel (hd0,6)/boot/vmlinuz root=/dev/hda7 idebus=66
title W2K Pro
root (hd0,0)
makeactive
chainloader +1
让我们详细分析一下各个选项的含义:
timeout - 缺省入口的显示延迟时间(秒)
color - 菜单显示的颜色组合,第一组颜色为前景色和背景色,
第二组为高亮时的组合。
default - 定义缺省的启动入口,这里的 0 就是使用定义的第一个入口。
password - 定义进入GRUB 高级特性时需要的口令。GRUB
利用其能读取文件系统的特色,提供十分强大的功能。例如用户可以
在grub 的启动提示符下输 'cat /etc/shadow' 来读包含加密口令的
文件,而不需要进入你的系统!所以,为你的系统设置一个口令十分重要。
下面分析启动入口,每一个入口都应该以一个 'title' 的关键字开始,
后面跟上对该启动入口的描述。接下来就是 'kernel' 入口,
kernel (hd0,1)/vmlinuz root=/dev/hda3 hdc=ide-scsi
根据 GRUB 对设备的命名规则,我们可以很容易的理解上面这行的含义
:软驱设备名为 fdx ,硬盘为 hdx,需要记住的是 GRUB 从0 开始计数
,所以第一台硬盘为 hd0 而不是 hd1。设备名用括号括起来,硬盘上的
分区用逗号连接。例如 (hd0,1) 表示第一台硬盘上的第二个分区,而
(hd1,5) 就表示第二台硬盘上的第一个逻辑分区。
GRUB 能读取大多数文件系统,上面这一行指定 GRUB 寻找
位于第一台硬盘上第二基本分区上的 /vmlinuz 文件,你也需要指定
'root=/dev/hda3' (假设你的根文件系统位于/dev/hda3),否则内核
就不能挂接上根文件系统,之后就是你自己想加入的其他参数了。这些
参数就和LILO 启动时传递给内核的参数一样,或者说和 lilo.conf 中
append 后面的参数一样。
另外一个比较特别的入口是启动Windows 2000 的入口,root 入口指向
Windows 2000 的安装位置(C:),接下来的入口设置分区的激活标志
,最后的入口告诉 GRUB 搜索分区的第一个扇区来启动那里的操作系统。
以上是对GRUB 的一个典型的多重启动设置的分析,在正式开始安装GRUB
之前,建议你手头有一张LILO 启动盘或者一张应急启动盘,以防不测。
以root 登录,输入"grub"命令以后,就会看到如下的画面:
GRUB version 0.5.96.1 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word,
TAB lists possible command completions. Anywhere else TAB lists
the possible completions of a device/filename. ]
grub>
以上看到的就是 grub 提示符,我们要在这个提示符下面安装GRUB。
grub> install (hd0,1)/boot/grub/stage1 d (hd0) (hd0,1)/boot/grub/stage2
p (hd0,1)/boot/grub/menu.lst
GRUB 分为两个主要的步骤, stage1 和 stage2。Stage1 是一段嵌入MBR 的
迷你代码。Stage2 是主要部分,在 stage1 把控制权传递给它后,就由它
来接管所有事情。
install 后面指定stage1 的位置,我们不仅说明了其分区
位置:(hd0,1),因为 GRUB 能读取文件系统,所以还说
明了分区上目录位置:/boot/grub/stage1,d 参数表示 stage1 将寻找
stage2 所在的磁盘。接着就是 GRUB 的安装位置:(hd0) ,
这里就是指安装在MBR。后面的参数指定 stage2 的位置:(hd0,1),
和 stage1 的定义一样。p 参数指定 menu.lst 文件的位置。
对于 /boot 作为单独的分区的例子,需要采用下面的命令行:
grub> install (hd0,1)/grub/stage1 d (hd0) (hd0,1)/boot/grub/stage2
p (hd0,1)/grub/menu.lst
以上例子假设 /boot 位于 (hd0,1) (也就是hda2),而 / 位于(hd0,2)
(也就是 hda3) ,我们不能用 '(hd0,2)/boot/grub/stage1' ,因为GRUB
不知道 (hd0,1) 是 /boot ,所以必须首先指向挂接为 /boot 的分区,
然后把目录指向那里。
重新启动系统以后,就可以看到 GRUB 菜单了。看起来似乎很繁琐,
这么长的命令行,是的!对于那些 LILO 能正常使用的人来说,
或许没有必要来玩这个危险游戏。但是,对于那些想使用 GRUB 增强功能的
人来说,试一下 GRUB 或许会有意想不到的惊喜。我的朋友告诉我说他不能用
LILO 识别 1G 内存,希望 GRUB 能帮助办到。本文旨在抛砖引玉,
GRUB 还有很多的功能有待您的开发。
如果在配置和安装中遇到了麻烦,为什么不使用
info grub 或者 man grub 来寻求帮助呢?或者干脆上
GRUB 的官方网站
http://www.gnu.org/software/grub/
如果你玩过Linux ,那么你一定使用过或者知道 LILO ,这个在安装
有Linux 的系统上使用最广泛的多重启动管理程序。然而笔者今天要
介绍的是随 Mandrake Linux 所带的 GRUB(GRand Unified Bootloader)
,让我们看看它怎样来代替LILO。
LILO 需要知道你的内核在驱动器上的实际位置,但是GRUB
却不需要,它不仅能读文件系统还能识别内核映像,而且它还支持最新的
2.4.1 内核所带的 Reiser 日志文件系统。这意味着你不必在更新内核
或者改变配置文件之后重新安装GRUB。如果BIOS 支持LBA 的话,也没有
1024 柱面的问题。另外还支持网络启动和无盘客户机。
然而,或许我们对LILO 太熟悉了吧,也或许GRUB 还有很多需要完善?
总之,安装 GRUB 看起来并不是一件很轻松的事情。下面我们就详细介绍
GRUB 的安装和配置。
安装
在 /tmp 目录下解开文件:
# tar zxvf grub-0.5.96.1.tar.gz
进入 "grub-0.5.96.1" 目录,编译程序:
# ./configure
# make
# make install
配置:
和许多我们平常看到的多重启动管理程序一样,GRUB
提供一个菜单界面(LILO 不是菜单界面的)。GRUB的
缺省安装位置为 /boot/grub ,配置文件也放在这个目录下。缺省
的配置文件名为 menu.lst,这个文件的功能就像和 lilo.conf
一样,定义多重启动选项以及磁盘映像。
我们来看一个 menu.lst 文件的示范例子:
timeout 5
color black/yellow yellow/black
default 0
password freeos
title My Mandrake
kernel (hd0,1)/vmlinuz root=/dev/hda3 idebus=66
title My Red Hat
kernel (hd0,6)/boot/vmlinuz root=/dev/hda7 idebus=66
title W2K Pro
root (hd0,0)
makeactive
chainloader +1
让我们详细分析一下各个选项的含义:
timeout - 缺省入口的显示延迟时间(秒)
color - 菜单显示的颜色组合,第一组颜色为前景色和背景色,
第二组为高亮时的组合。
default - 定义缺省的启动入口,这里的 0 就是使用定义的第一个入口。
password - 定义进入GRUB 高级特性时需要的口令。GRUB
利用其能读取文件系统的特色,提供十分强大的功能。例如用户可以
在grub 的启动提示符下输 'cat /etc/shadow' 来读包含加密口令的
文件,而不需要进入你的系统!所以,为你的系统设置一个口令十分重要。
下面分析启动入口,每一个入口都应该以一个 'title' 的关键字开始,
后面跟上对该启动入口的描述。接下来就是 'kernel' 入口,
kernel (hd0,1)/vmlinuz root=/dev/hda3 hdc=ide-scsi
根据 GRUB 对设备的命名规则,我们可以很容易的理解上面这行的含义
:软驱设备名为 fdx ,硬盘为 hdx,需要记住的是 GRUB 从0 开始计数
,所以第一台硬盘为 hd0 而不是 hd1。设备名用括号括起来,硬盘上的
分区用逗号连接。例如 (hd0,1) 表示第一台硬盘上的第二个分区,而
(hd1,5) 就表示第二台硬盘上的第一个逻辑分区。
GRUB 能读取大多数文件系统,上面这一行指定 GRUB 寻找
位于第一台硬盘上第二基本分区上的 /vmlinuz 文件,你也需要指定
'root=/dev/hda3' (假设你的根文件系统位于/dev/hda3),否则内核
就不能挂接上根文件系统,之后就是你自己想加入的其他参数了。这些
参数就和LILO 启动时传递给内核的参数一样,或者说和 lilo.conf 中
append 后面的参数一样。
另外一个比较特别的入口是启动Windows 2000 的入口,root 入口指向
Windows 2000 的安装位置(C:),接下来的入口设置分区的激活标志
,最后的入口告诉 GRUB 搜索分区的第一个扇区来启动那里的操作系统。
以上是对GRUB 的一个典型的多重启动设置的分析,在正式开始安装GRUB
之前,建议你手头有一张LILO 启动盘或者一张应急启动盘,以防不测。
以root 登录,输入"grub"命令以后,就会看到如下的画面:
GRUB version 0.5.96.1 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word,
TAB lists possible command completions. Anywhere else TAB lists
the possible completions of a device/filename. ]
grub>
以上看到的就是 grub 提示符,我们要在这个提示符下面安装GRUB。
grub> install (hd0,1)/boot/grub/stage1 d (hd0) (hd0,1)/boot/grub/stage2
p (hd0,1)/boot/grub/menu.lst
GRUB 分为两个主要的步骤, stage1 和 stage2。Stage1 是一段嵌入MBR 的
迷你代码。Stage2 是主要部分,在 stage1 把控制权传递给它后,就由它
来接管所有事情。
install 后面指定stage1 的位置,我们不仅说明了其分区
位置:(hd0,1),因为 GRUB 能读取文件系统,所以还说
明了分区上目录位置:/boot/grub/stage1,d 参数表示 stage1 将寻找
stage2 所在的磁盘。接着就是 GRUB 的安装位置:(hd0) ,
这里就是指安装在MBR。后面的参数指定 stage2 的位置:(hd0,1),
和 stage1 的定义一样。p 参数指定 menu.lst 文件的位置。
对于 /boot 作为单独的分区的例子,需要采用下面的命令行:
grub> install (hd0,1)/grub/stage1 d (hd0) (hd0,1)/boot/grub/stage2
p (hd0,1)/grub/menu.lst
以上例子假设 /boot 位于 (hd0,1) (也就是hda2),而 / 位于(hd0,2)
(也就是 hda3) ,我们不能用 '(hd0,2)/boot/grub/stage1' ,因为GRUB
不知道 (hd0,1) 是 /boot ,所以必须首先指向挂接为 /boot 的分区,
然后把目录指向那里。
重新启动系统以后,就可以看到 GRUB 菜单了。看起来似乎很繁琐,
这么长的命令行,是的!对于那些 LILO 能正常使用的人来说,
或许没有必要来玩这个危险游戏。但是,对于那些想使用 GRUB 增强功能的
人来说,试一下 GRUB 或许会有意想不到的惊喜。我的朋友告诉我说他不能用
LILO 识别 1G 内存,希望 GRUB 能帮助办到。本文旨在抛砖引玉,
GRUB 还有很多的功能有待您的开发。
如果在配置和安装中遇到了麻烦,为什么不使用
info grub 或者 man grub 来寻求帮助呢?或者干脆上
GRUB 的官方网站
http://www.gnu.org/software/grub/
|
善哉,善哉,胖兄功德无量...