辛苦修改的grub.cfg在upate-grub后被打回原形,怎么办?
本帖最后由 灰儿 于 2010-2-23 15:12 编辑其实,修改grub启动菜单不用修改grub.cfg,只要把个性化配置写入 /etc/default/grub 和 /etc/gurb.d下的脚本文件,以后不管升级内核或者是升级grub所执行的update-grub,所创建的grub.cfg都会如你所愿。
一、修改/etc/default/grub配置文件
一般需要修改的是以下几处:
GRUB_DEFAULT=0 -----> 设定默认启动项,按需要修改为1, 2
#GRUB_HIDDEN_TIMEOUT=0 --------->此设定将影响菜单显示,注意要显示菜单必须在此语句前面加#注释掉
GRUB_HIDDEN_TIMEOUT_QUIET=true --------->隐藏菜单,grub2不再使用
GRUB_TIMEOUT="10" ------->设定倒计时时间,默认10秒。
二、 修改/etc/grub.d文件夹内的内容
先看下 /etc/grub.d文件夹下的什么东东:
00_header
05_debian_theme
10_linux
20_memtest86+
30_os-prober
40_custom
前面这五个脚本对应grub.cfg上的各个部分,怎样修改这些脚本文件才能保证不会破坏update-grub的运行,又能让grub.cfg符合你的意愿呢?其实很简单,只要找到
cat << EOF
********
********
********
EOF
这类语句,EOF中间的文本会直接写入grub.cfg中相应位置,所以个性化的语句添加在这地方就可以了。
00_header
可供修改的有两地方
cat << EOF
load_env
set default=${GRUB_DEFAULT} <----- 这里根据 /etc/default/grub中default变量设定,不用修改
if [ \${prev_saved_entry} ]; then
saved_entry=\${prev_saved_entry}
save_env saved_entry
prev_saved_entry=
save_env prev_saved_entry
fi
insmod jpeg <---------这地方加入要加载的模块,如图片支持,或系统格式支持 insmod ntfs 和 insmod fat 等
insmod png <---------
EOF
另一个在最后
cat << EOF
set timeout=${GRUB_TIMEOUT} <------- timeout 根据上面 /etc/default/grub中的timeout 变量设定,这里不用改
background_image (hd0,7)/boot/images/012.jpg <----------这里背景图片的绝对路径
EOF
05_debian_theme
修改背景颜色
cat << EOF
set menu_color_normal=white/black <--------
set menu_color_highlight=yellow/black <------- 前面字体颜色可自定,后面背景一定要设为black,不然背景色会挡住背景图片。
EOF
10_linux
这部分是自动搜索当前系统,建立当前系统的启动菜单,包括系统头,内核等信息,不要随便修改,要使用个性菜单名,比如中文菜单,可修改这里,其余地方不要做修改:
cat << EOF
menuentry "启动 $1" { <---------在 双引号 " " 和 变量 $1 这间加入个性文字,或直接把 变量$1 改为固定字符比如 Ubuntu Karmic
EOF
if [ "x$3" = "xquiet" ]; then
cat << EOF
set quiet=1
EOF
20_memtest86+
添加内存测试启动项,可做修改的地方:
cat << EOF
menuentry "Memory test (memtest86+)" { <------可以修改为中文菜单如 menuentry "内存测试"{ ,双引号必须是英文字符
linux16 $MEMTESTPATH
}
# 下面第二个菜单项可删除
menuentry "Memory test (memtest86+)"
linux16 $MEMTESTPATH *********
}
EOF
30_os-prober
查找其他分区中存在的系统并建立菜单项,依次为 windows >> linux >> macos,这里不必修改。
40_custom
自定义启动项,按菜单标准格式添加即可,update-grub后会自动添加到grub.cfg上,如:
menuentry "Microsoft Windows XP Professional (on /dev/sda1)" {
insmod ntfs
set root=(hd0,1)
drivemap -s (hd0) ${root}
chainloader +1
}
把各项修改后保存,然后
sudo update-grub
看看 /boot/grub/grub.cfg 配置文件是不是和你想的一样了。
页:
[1]