再说GFXBOOT中显示menu.lst内中文的问题

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
RobinHoo
帖子: 18
注册时间: 2008-01-17 12:00
送出感谢: 0
接收感谢: 0

再说GFXBOOT中显示menu.lst内中文的问题

#1

帖子 RobinHoo » 2008-10-27 12:14

上次说过了如何在OpenSUSE里实现menu.lst内中文显示的问题。这次给出Ubuntu内的实现脚本。
由于有中文字符我把它放在附件里了,下载后使用
makegfxfont.zip
(1.2 KiB) 下载 130 次

先给个图,然后慢慢说用法:
gfxboot.JPG
隶书字体的启动界面
1、首先下载脚本,解压到你的某个目录
2、更改属性为755
3、在终端下用sudo执行该脚本。
当然我假设你已经安装好grub-gfxboot。
如果没安装Ubuntu的grub-gfxboot也没关系,先执行完脚本然后安装grub-gfxboot。当然你要有相关的message.xxx文件放在脚本定义的位置。程序或自动安装gfxboot-theme-ubuntu和gfxboot两个包。如果和grub-gfxboot冲突可以先卸载grub-gfxboot。做好之后再安装。
推荐的方法是:Ubuntu装普通的grub,然后用OpenSUSE的LIVE CD启动安装它的GRUB。我就是这么做的!

代码: 全选

#!/bin/bash
DEBUG=1
START_DIR=`pwd`
##定义图形启动包的位置
MESSAGE=/boot/message
##定义字形生成程序位置
MKBLFONT=mkblfont
##定义键盘映射程序位置
KEYMAPCHARS=/usr/share/gfxboot/bin/keymapchars
##定义键盘映射表位置
KEYTABLES=/usr/share/gfxboot-theme-ubuntu/keytables.inc
##定义临时文件位置
TMP_FOLD=message
##定义字形所用字体
TTFFont=simli
##定义字体目录
TTFPath=/usr/share/fonts/truetype/microsoft
##定义界面语言
LANGUAGE=简体中文
##定义语言ID
LANG_ID=zh
##定义默认启动语言
DEF_LANG=zh_CN
debug_msg()
{
	[ $DEBUG == 1 ] && echo "[`date +"%F %T"`] $@" >&2
}

install_pkg()
{
	local PKG=`sudo dpkg-query -W --showformat='${Package}\n' |grep $1`
	if [ -z $PKG ]; then
		sudo aptitude install $1 -y
		debug_msg "安装软件包 $1"
	else
		debug_msg "软件包 $1 已安装"
	fi
}
install_pkg gfxboot-theme-ubuntu
echo $DEF_LANG >lang
mkdir $TMP_FOLD 2>/dev/null
cd $TMP_FOLD
#ls -l $MESSAGE #>/dev/null 2>&1
if [ -e $MESSAGE ]; then
	cat $MESSAGE |cpio -i
else
	echo "抱歉没发现要修改的$MESSAGE"
	exit
fi
echo $DEF_LANG >lang
if [ -e translations.$LANG_ID ]
then
     echo "发现${LANGUAGE}翻译文件!"
else
    echo "没有${LANGUAGE}的翻译文件,退出!"
    exit
fi
if grep -q  $LANG_ID languages
then
   echo "文件languages含有${LANGUAGE}的ID!"
else
    echo $LANG_ID > tmp.txt
    cat tmp.txt languages >languages1
    mv -f languages1 languages
    echo "文件languages含有${LANGUAGE}的ID!"
fi
cat *.tr translations.* /boot/grub/menu.lst >tmp.txt
echo $LANGUAGE>> tmp.txt 
set -x
$MKBLFONT -v -l 18 -p /usr/share/fonts/X11/misc \
	-c ISO-8859-15 -c ISO-8859-2 -c koi8-r \
	`$KEYMAPCHARS $KEYTABLES` \
	-t tmp.txt \
	-p $TTFPath \
	-f $TTFFont:prop=2:space_width=4:size=17:nobitmap=1:autohint=1 \
	16x16.fnt >16x16.fnt.log
set +x
rm -f tmp.txt
mv 16x16.fnt.log $START_DIR
echo "备份以前文件"
mv $MESSAGE $MESSAGE.bck
ls . |cpio -o > $MESSAGE
cd $START_DIR
rm -rf $TMP_FOLD
回复

回到 “启动和引导”