定製ubuntu13.10中文字符菜單

定製步驟:

注意:我是在linux系統下完成定製的,但是後面碰到了問題,最後解決了(linux下還是可以的,只是下面有一步麻煩一點點)。但是總結一下,最好還是在windows下做吧。


下載的ubuntu-13.10的鏡像文件然後從裏面提取的需要的文件(但是事實證明只需要下載一個isolinux包就可以了,因爲它就是一個小型的linux系統)。下面就說我是如何利用這個鏡像文件做出中文的字符菜單的。

1.從鏡像中提取文件

       從ubuntu13.10的鏡像文件中提取isolinux包,查看isolinux包的權限(要可讀可寫),因爲要進行修改。

有些系統不能提取鏡像文件,需要mount鏡像文件再把掛載的文件複製到另外一個文件夾。具體指令如下:

 mount -t iso9660 /home/zq/desktop/ubuntu-13.10-desktop-i386.iso /home/zq/custom_ubuntu/  

 mkdir custom_binux

 cd customcustom_binux_binux/
cp -R  custom_ubuntu/ *
umount /home/zq/custom_ubuntu/

        複製custom_binux/文件夾下的文件都只有只讀權限,這時就需要用chmod來修改權限,最簡單的方法如下:

chmod 777 custom_binux

         這樣一來,我們所做工作的源碼包就準備好了,只要在這裏做修改就好了。

2.認識isolinux裏的各文件

附上syslinux的網址,想要更深入瞭解isolinux的就看這裏:

http://www.syslinux.org/wiki/index.php/ISOLINUX

首先,最重要的文件是isolinux.cfg文件,單是修改它就可以達到實現中文字符菜單的效果。isolinux.cfg原版的內容如下:

# D-I config version 2.0
include menu.cfg
default vesamenu.c32
prompt 0
timeout 50
ui gfxboot bootlogo

下面解釋一下每一行的含義。

include menu.cfg:

    isolinux.cfg調用menu.cfg,menu.cfg又調用stdmenu.cfg,txt.cfg和gtk.cfg。

    stdmenu.cfg 裏面主要是字符界面下的背景圖片,標題顏色等等的設置,可根據自己的喜好修改。

    txt.cfg裏面是字符界面下的label設置,label後面定義的是標籤名,而menu label 後面才真正是字符界面上要顯示的標籤內容。我的目標是實現字符界面的中文菜單,顯然修改txt.cfg是找對地方了。但是ubuntu的字符界面是不支持中文編碼的,如果簡單將這裏的menu label寫成中文,你得到的只能是一行行的亂碼。在第3步中我將會介紹怎樣對它進行處理從而實現中文菜單的顯示。

    gtk.cfg是空的,不用管它。

default vesamenu.c32:  vesamenu.c32很重要,我們之所以進入字符菜單就是靠它。

prompt 0:  不向用戶提供輸入選擇。

timeout 50:  進入字符界面後若5妙內不做選擇,那麼系統將自動進入系統。

ui gfxboot bootlogo:bootlogo是一個cpio壓縮文件,它裏面是一個已經編譯好的init文件。這句是使界面進入圖形界面,圖形界面內顯示的內容是編譯在bootlogo裏面的,所以想要修改圖形界面似乎挺困難的。如果在isolinux.cfg中保留這一句,那麼系統將不會進入字符界面而是直接進入圖形界面。所以我們的改動中會刪除這一句。

3.使得字符界面支持中文字體

 下載hzpsf.zip文件。

在windows下:
hzpsf -e 英文字體 -z 中文字體 -c 啓動字體 -i 中文版的配置文件 -o 經過處理的配置文件
hzpsf -e GREEK.F16 -z chs16 -c myfont.psf -i isolinux_zh.cfg -o isolinux.cfg
上面指令另存成zh.bat文件

1、預先編寫中文菜單isolinux_zh.cfg,其中要有:
ui vesamenu.c32
font myfont.psf
注意這裏要把txt.cfg和stdmenu.cfg文件中的內容全部拷到這裏面,txt.cfg裏面的menu label要寫成中文。
2、將isolinux_zh.cfg,GREEK.F16,chs16,hzpsf.exe和zh.bat放在一個文件夾下。然後,運行(雙擊)zh.bat文件,產生isolinux.cfg和myfont.psf文件。
3、將產生的這isolinux.cfg和myfont.psf兩個文件複製進ISO裏面的isolinux目錄下。替換舊的.

我的isolinux.cfg內容如下:
注意:按照上面的方法做成鏡像後會產生亂碼,這就是我在一開始說的在linux下做定製的一點小麻煩,但是可以解決。hzpsf是在windows下運行的,windows下文件的編碼方式跟linux下不同,所以,上面生成isolinux.cfg和myfont.psf的步驟要做兩次才能使用這兩個文件,第一次利用isolinux_zh.cfg生成isolinux.cfg和myfont.psf,第二次把isolinux_zh.cfg和myfont.psf都刪了,再把isolinux.cfg重命名爲isolinux_zh.cfg,然後把此文件中相應的亂碼改爲中文,然後再生成的isolinux.cfg和myfont.psf就是正確的了,這樣確保了編碼方式的一致。)
# D-I config version 2.0
ui vesamenu.c32
font myfont.psf
prompt 0
timeout 50


MENU TITLE Binux
MENU BACKGROUND splash.png

menu color title    * #FFFFFFFF *
menu color border    * #990000FF #00000000 none
menu color sel        * #ffffffff #76a1d0ff *
menu color hotsel    1;7;37;40 #ffffffff #76a1d0ff *
menu color tabmsg    * #ffffffff #00000000 *
menu color help        37;40 #ffdddd00 #00000000 none
menu vshift 12
menu rows 10
menu helpmsgrow 15
# The command line must be at least one line from the bottom.
menu cmdlinerow 16
menu timeoutrow 16
menu tabmsgrow 18
menu tabmsg Press ENTER to boot or TAB to edit a menu entry
menu margin 10

default binux
label binux
  menu label ÊÔÓÃ Binux¶øĠṠḞĠṪḞ
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz  quiet splash --
label live-install
  menu label ḞĠṪḞ Binux
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.lz quiet splash --
label check
  menu label ỳìĠâÓĠÅÌÊÇṖñÓŴṀíÎó
  kernel /casper/vmlinuz.efi
  append  boot=casper integrity-check initrd=/casper/initrd.lz quiet splash --
label memtest
  menu label ĠâÊÔÄÚṀæ
  kernel /install/mt86plus
label hd
  menu label ṀÓṁÚÒṠÓĠÅÌÒýṁỳ
  localboot 0x80
label reboot
  menu label ÖØŴÂÆô¶ŸṁçÄÔ
  kernel reboot.c32

F1 zh_CN.hlp
F2 langlist



4.將custom_binux下經修改後的所有文件刻盤,在virtualbox中運行運行看效果
生成鏡像文件的指令爲mkisofs,注意這個指令的選項,在windows下和linux下選項不同,當時我由於不會用這個指令,一直生成不了正確的鏡像。在linux下生成鏡像的指令是這樣的:
sudo mkisofs -r -V test -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o linux.iso  /home...
其中test爲卷標名,隨便起。-o後的兩個分別時要生成鏡像的名字和源文件位置。

運行截圖如下(後面放):

 
 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章