执手麦田的咖啡空间  
专注于Java的学习研究
公告
  • 于喧闹网界之中,寻一处僻静之所,与三二好友,品程序、论思想,其乐何融融!
    执手麦田的咖啡馆——在这里关注JAVA的学习研究
日历
<2007年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

留言簿(2)

随笔分类(13)

随笔档案(13)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
四、GRUB 接口

GRUB 除了菜单模式,还提供了一个命令模式和 grub shell 。当系统启动并显示菜单时,按 c 键就可以进入命令模式。提示符是 grub> 。

如果你已经成功引导操作系统并登录,可以在 shell 提示符下执行 grub ,这会启动一个 grub shell。提示符也是 grub> 。

GRUB 能够象 bash 一样使用上下键来访问 command history ,ctrl-u、ctrl-k、ctrl-l 等快捷键也可以使用。想要编辑菜单,可以按下 e 键;

想要新增一空白行,可以按下 o 键(当前行之后)或者 O 键(当前行之前)。想要删除当前行,按下 d 键;ESC 键放弃当次修改并返回上级菜单。

有些命令只能在命令模式下,有些命令只能用于配置文件(菜单模式),有些命令在两个模式下都可以使用。下面我们就介绍 GRUB 常用的命令。

五、GRUB 常用命令

5.1 只能用于配置文件的命令

下面这5个命令只能出现于配置文件中,分别是 :

a)default :定义默认引导的操作系统。0 表示第一个操作系统,1表示第2个,依此类推

b)fallback :如果 default 所指定的操作系统引导失败,则默认引导由 fallback 指定的操作系统

c) hiddenmenu :用于启动时隐藏菜单,除非在 timeout 之前按下 ESC 才能看到菜单。

d)timeout :定义多少秒内如果用户没有按下键盘上的某个按键,就自动引导 default 所指定的操作系统。

e)title :定义引导项目的名称。

f)password :用于定义进入 GRUB 命令模式的密码。你还可以为每个操作系统都定义一个密码,方法是把 password 命令放在 title行之后。

而且每个操作系统的引导密码可以不同,也可以和进入命令模式的那个密码不同,最大程度的保证 GRUB 的安全。

5.2 只能用于命令模式或者 grub shell 的命令

a)device :用于定义 BIOS 中的磁盘设备和操作系统的磁盘设备之间的映射关系。

例如 device (hd0)/dev/hdb 把 BIOS 中的第一个硬盘相当于 Linux 的 /dev/hdb

b)serial :用于初始化一个串口设备。

例如 :serial –-unit=0 –-speed=9600 表示初始化 COM1(--unit=0),速率为 9600 Baud

不过 grub shell 下执行该命令会显示 “无法识别的命令”

c)terminal :用于切换显示输出。有两这个值可选 :console 和 serial 。当你把笔记本接到一个没有显示器/键盘的主机上时,执行

terminal serial 就可以在你的笔记本上操作这台主机的 GRUB 了。执行 terminal console 把显示输出还原到该主机。

不过 grub shell 下执行该命令会显示“无法识别的命令”

d)splashimage :用于定义启动时的背景图片。例如 splashimage /grub/splash.xpm.gz

经过测试,发现用 tarball 安装的不支持该命令,这似乎是 redhat grub rpm 专有的。

e)blocklist :用于显示某个文件在文件系统中的位置,以 block list 的形式显示。例如 blocklist /vmlinuz

f)ca :用于显示文件内容。由于 GRUB 可以直接访问多种文件系统,所以可以用 cat (hd0,1)/etc/passwd 来在 GRUB 命令模式下查看 /etc/passwd 文件

g)root :用于指定含有 stage 文件的分区。如果有 /boot 分区,则 root device 就是 /boot 分区,否则

就是 / 分区。

h)rootnoverify :和 root 类似,但不会尝试挂载该分区。例如用于指定 windows 操作系统所在的分区。

i)chainloader :用于加载另外一个 boot loader ,通常是用于加载 windows 的 boot loader 。它的参数是一个 block list ,

例如 chainloader (hd0,0)0+1 表示加载第一个磁盘的第一个分区的第1块,0 是开始位置(block 从0开始编号),+1 表示总共读取多少个 block。

所以 chainloader 2+0 表示读取第3个block (编号为2)

j)find :可以用于在所有分区上搜索文件。注意,是所有分区,而不是某个分区。例如 find /vmlinuz 将会在所有分区上查找位于该分区的顶级目录下的

vmlinuz文件,如果找到就打印该分区名,例如 (hd0,1)。

k)geometry :用于显示或者设置某个硬盘的 CHS 参数,同时还显示分区信息。例如 geometry (hd0)

l)halt :关机

m)reboot :重启机器

n)kernel :指定操作系统内核文件,还可以在内核文件名后加上参数。例如

kernel /vmlinuz ro root=LABEL=/

表示以只读的方式挂载 / 分区,且根分区设备是 label 为 / 的那个设备;也可以直接给出设备名。

o)initrd :用于指定 RAM Disk 文件,例如 initrd /initrd-2.xx.img 。

p)boot :引导 kernel 所指定的内核,对于 linux 来说,必须先加载了 kernel 和 initrd 才能执行 boot 。

q)setup :用于安装 stage1 到磁盘的 MBR 或者某个分区的引导扇区。

六、保护 GRUB 设置

下面是一个例子


[Copy to clipboard]CODE:
password –-md5 <密码1>
timeout=30
default=0
title “redhat AS 4”
password –-md5 <密码2>
root (hd0,1)
kernel /vmlinuz ro root=LABEL=/
initrd /initrd-xxx.img
title “windows”
password –-md5 <密码3>
rootnoverify (hd0,0)
chainloader +1

当出现 GRUB 菜单时,必须按下 p 并输入 <密码1> 才能进入命令模式,如果选择 “redhat AS 4”并按下回车,会出现提示信息,要求输入密码,

这时应该输入 <密码2>。同样只有输入 <密码3> 才能进入 windows 系统。--md5 告诉 GRUB 后面的内容是已经用 md5 算法加密过的了。所以 GRUB

会将你输入的口令用 MD5 加密后再与之比较。你可以命令模式下用md5crypt 命令或者在 shell 下执行 grub-md5-cypt 来得出一个字符串用 MD5 加密

后的结果,再插入到配置文件中。为每个引导项目设置 GRUB 密码有好处也有坏处 :

a)好处是 :你可以禁止用户随便引导某个操作系统,即使普通用户可以接触GRUB 菜单,没有密码也没有用;

b)坏处是 :如果你一旦重启机器,就必须手工输入口令,否则会一直停在那里。如果你是在半夜远程重启某个主机的话…. Hoho

c)建议 :只设置 GRUB 密码,也就是限制用户进入命令模式,具体菜单项不设置密码。
posted on 2007-05-16 20:04 执手麦田 阅读(385) 评论(0)  编辑  收藏 所属分类: 展览馆

只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © 执手麦田 Powered by: 博客园 模板提供:沪江博客