在ubuntu9.10(karmic koala)中配置grub1.97,grub1.97是ubuntu9.10发行是默认的,如果需要使用以前老的grub0.97,可以自己手动安装,运行
$sudo apt-get install grub
即可,然后运行
$sudo update-grub
就会检测系统上的系统,生成/boot/grub/menu.lst文件。但是可能不能检测出其它系统,如windows,不过menu.lst文件中有配置好的windows启动项,只需要取消注释即可,或者根据自己的需要修改一下windows装在哪个分区。
下面说一下grub1.97的配置,配置中会用到的文件和目录如下,以前修改grub0.97的时候都是自己直接去修改menu.lst,现在grub1.97推荐修改以下几个文件,然后运行update-grub命令来生成grub.cfg文件,而不是直接去修改grub.cfg。
/etc/default/grub
/etc/grub.d/00_Header
/etc/grub.d/05_debian_theme
/etc/grub.d/40_custom
首先,/etc/default/grub文件设置了grub最基本的配置,如默认启动项,等待时间,分辨率等,可以按照自己的需要修改。分辨率最好是安装vbeinfo命令的输出来设置,vbeinfo命令可以在grub shell中运行,也就是你开机的时候出现菜单的时候按下c键,进入一个grub shell,这里运行vbeinfo后你可以看到支持的分辨率。
然后,/etc/grub.d/00_Header文件设置grub.cfg文件中的Header部分。也是配置grub背景显示效果的地方,这里可以设置grub的背景/前景色,以及大家都感兴趣的背景图片,其中一段大概如下(因为我修改过)
# check for usable backgrounds use_bg=true if [ "$GRUB_TERMINAL_OUTPUT" = "gfxterm" ] ; then #添加了jpg文件,因为下面case语句中都有jpg,而且这里可以添加一些你自己的目录 for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; do if is_path_readable_by_grub $i ; then bg=$i case ${bg} in *.png) reader=png ;; *.tga) reader=tga ;; *.jpg|*.jpeg) reader=jpeg ;; esac if test -e /boot/grub/${reader}.mod ; then echo "Found Debian background: `basename ${bg}`" >&2 use_bg=true break fi fi done fi
上面的第二行use_bg,原来等于false,其实不改成true也可以,因为下面的脚本会检查背景文件
for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga};do
........
这段脚本是在指定目录/boot/grub,/usr/share/images/desktop-base下查找背景文件moreblue-orbit-grub.*,这里后缀名可以是png,tga,看下面的case语句,可以知道你还可以加入jpg文件,这里的目录:你可以加入你的目录到搜索路径中,文件moreblue-orbie-grub可以修改成你喜欢的名字,后缀名,可以使用png,tga,jpg,最后可能如下:
for i in {/boot/grub , /usr/share/images/desktop-base , /usr/mypictures}/grub-background.{png,tga,jpg};do
case语句之后,会检查是否存在支持的模块,在/boot/grub/目录下有很多模块,都以.mod结尾。
其次,你可以修改文件/etc/grub.d/40_costom文件来添加自己的系统启动项,如windows系统,我在这里添加了gentoo系统的启动菜单。因为在30_os-prober阶段中已经自动检测到了windows。所以不用自己动手了。
最后,执行
$sudo update-grub命令来生成/boot/grub/grub.cfg文件
下面说说问题:
在我的电脑上,启动后,grub背景和分辨率都没有任何改变,我不知道这是为什么,然后我进入grub shell,输入background_image命令后,提示error: no video mode activated.
运行vbeinfo命令,可以看到支持的分辨率,设置正确,但是分辨率一样很低,根本没有改变。
运行915resolution mode 1024 768设置分辨率,提示:unrecognized number
运行915resolution命令可以查看到系统芯片组是945GM,但是使用915resolution -c 945GM时,却提示error: unknow argument '-c',看看915resolution的usage就知道,它明明提供了-c选项!
所以,真不知道该说什么好!以前ubuntu-9.04(jaunty)的时候也使用grub1.97,背景,分辨率设置都好好的,真是郁闷!