歡迎您光臨本站 註冊首頁

自己動手製作Knoppix中文版

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
  版本: v0.22-2003-09-29

  作者: 冷罡華 (Hiweed,海微)

  主頁: http://www.hiweed.com

  email: hiweed at 163 dot com




  版本沿革:


  • v0.22-2003-09-29 細化關於cloop的描述

  • v0.2-2003-09-28 添加關於cloop的描述,並修改了大量細節

  • v0.1-2003-09-27 首次發表




一、簡介


下文將介紹如何定製一張中文版的Knoppix.主要步驟:


  • 準備足夠的硬碟空間和交換分區

  • 將Knoppix光碟上的那個大大的壓縮文件KNOPPIX拷貝出來,並解壓縮

  • 根據自己的需要,添加/刪除軟體

  • 添加中文顯示和輸入支持

  • 重新壓縮KNOPPIX

  • 製作光碟鏡像iso文件


二、準備工作




1) 準備軟體

  從www.knopper.net/knoppix 獲得最新光碟影像文件,本文使用的是KNOPPIX_V3.3-2003-09-24-EN.iso.

2) 準備硬體(建立硬碟分區)

  由於要建立壓縮的文件系統(compressed file system),需要空間較大的交換分區(swap space),最少1GB空閑RAM Swap (比如256M內存和750M的swap) ,推薦建立2G的swap分區.(創建壓縮文件系統時要用到.如果交換分區太小,會報錯);3 GB 空閑的Linux分區(ext2/3, xfs等都可以).





三、操作步驟:


1) 打開一個shell,使用 su 命令獲得root用戶的許可權.下面所有命令都是在這個root shell 裡面運行的;

2) 配置您的Internet連接(稍後要用到) ;

3) 確定用來工作的分區.在本例中,是hdb2.該分區至少要有3G空間;

4) 載入該分區:

mount -o rw /dev/hdb2 /mnt/hdb2 (如果不照做,你可能會在chroot環境工作時遇到麻煩) ;

5) 創建一個用來工作的目錄:

mkdir /mnt/hdb2/working (把所有文件放在這裡,用完可以方便地刪除) ;

6) 如果你沒有1 GB 內存, (cat /proc/meminfo (物理內存 swap)) 那麼您需要一個swapfile:
cd /mnt/hdb2/working ; dd if=/dev/zero of=swapfile bs=1M count=750 ; mkswap swapfile ; swapon swapfile

7) 創建 2 個目錄,一個用於存放我們的新CD(NewCD),一個用於存放現有CD的內容(OLD):
mkdir /mnt/hdb2/working/NewCD; mkdir /mnt/hdb2/working/OLD

8) mkdir /mnt/hdb2/working/OLD/KNOPPIX

9) 您可以不用光碟啟動,而直接mount下載得到的iso文件,然後把光碟上/KNOPPIX/KNOPPIX文件複製出來:


  • mkdir /mnt/iso

  • mount -o loop -t iso9660 KNOPPIX_V3.3-2003-09-24-EN.iso /mnt/iso

  • cp /mnt/iso/KNOPPIX/KNOPPIX /mnt/hdb2/working

  • 再Mount壓縮的KNOPPIX文件:


    • insmod cloop file=/mnt/hdb2/working/KNOPPIX 如果這一步出錯,請看本文結尾處對cloop的描述.

    • mkdir /mnt/KNOPPIX

    • mount -o ro /dev/cloop /mnt/KNOPPIX


  • 複製knoppix源文件到您的工作目錄(這可能得花點時間)


    • mkdir /mnt/hdb2/working/OLD/KNOPPIX

    • cp -Rupv /mnt/KNOPPIX/* /mnt/hdb2/working/OLD/KNOPPIX/


  • 卸載 /mnt/KNOPPIX


  • umount /dev/cloop
  • 卸載iso文件,刪除/mnt/hdb2/working/KNOPPIX


  • umount /mnt/iso

    rm -f /mnt/hdb2/working/KNOPPIX

10) mkdir /mnt/hdb2/working/NewCD/KNOPPIX



11) cp /cdrom/index.html /mnt/hdb2/working/NewCD/

12) 現在,複製 /cdrom/KNOPPIX/ 下面的所有內容到 /mnt/hdb2/working/NewCD/KNOPPIX/ ,除了那個接近700 Mb 的名字叫做KNOPPIX的文件.( cd /cdrom/KNOPPIX; find . -size -10000k -type f -exec cp -p --parents {} /mnt/hdb2/working/NewCD/KNOPPIX/ ; )

13) 現在您可以 "chroot" 到剛才複製的 KNOPPIX 中去: chroot /mnt/hdb2/working/OLD/KNOPPIX

14) 現在您已經處於chrooted環境中. "/" 實際上是 "/mnt/hdb2/working/OLD/KNOPPIX" ;

15) 要使用Internet,您需要載入proc文件系統: mount -t proc /proc proc ,然後編輯 /etc/resolv.conf 添加您的nameserver;

16) 如果您需服務微軟的工作組(通過samba),那麼smb.conf也要修改 (通常,MSHOME是XP家庭版,WORKGROUP是Win9x);

17) 檢查您的chrooted環境的Internet連接: ping google.com

18) 更新您的軟體包列表: apt-get update

19) 現在您可以開始修改軟體包,自己決定刪除哪些,安裝哪些;


  • 在安裝或刪除軟體之前,您可以看一下目前已經安裝了哪些軟體:

    dpkg-query -l

  • 也可以讓這個列表以軟體包的大小排序:

    dpkg-query -W --showformat='${Installed-Size} ${Package}n' | sort -n

  • 要刪除一個軟體包 (以及所有依賴於它的軟體包),可以這樣:

    apt-get remove <要刪除的包的名字>

    我刪除了這些:

    apt-get remove selflinux kde-i18n-{tr,pl,cs,ja,nl,ru,it,da,es,de,fr}

    其中,selflinux 是一套德文的Linux文檔,kde-i18n-* 是其他國家的kde本地化文件.這些文件佔用大約200M硬碟空間.



  • 檢查「孤兒」軟體包,這樣:

    deborphan

    要想通過刪除那些孤兒(多殘忍!)騰出更多空間,可以這樣:(警告,系統不會提示 yes/no ,當您在這條命令後面敲完回車,那些軟體就沒了):

    deborphan | xargs apt-get -y remove

    如果您覺得上面這條命令不太保險,想在不改變系統的情況下看看會發生什麼,只要加一個 -s 參數 (您可以在所有的 apt-get命令中使用這個參數,這是個好習慣):

    deborphan | xargs apt-get -s -y remove

  • 現在,如果您要安裝軟體,用命令:

    apt-get install <要安裝的軟體名稱>

    當然您最好事先設置離自己最近的apt源(把原來的/etc/apt/sources.list備份一下,完成後再恢復),我用的是:

    deb http://www.zentek-international.com/mirrors/debian/debian main non-free contrib



    另外,apt-get可以使用代理伺服器,修改 /etc/apt/apt.conf,添加一行:

    Acquire::http::proxy "http://yourproxy:yourport/"; (注意面必須用「;」結束)

    我就安裝了兩個軟體包:

    apt-get update

    apt-get install kde-i18n-zhcn fcitx

  • 什麼,不知道要安裝哪些軟體?用下面的命令. 當列表出現,您可以仔細看看(超過13000行!):

    apt-cache search .* | sort | less

  • 如果刪除和添加軟體的工作完成了,清理現場的好方法是:

    COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P

    當然,Debian的APT系統將下載的包做了cache,您可能想用下面的命令清除這些文件:

    apt-get clean

  • 用戶設置在 /etc/skel




20) 中文化定製(這一節內容較集中,單獨拿出來在後面寫);

21) 卸載 /proc -- 非常重要!


  • 更新文件列表庫:

    updatedb

  • 更新菜單:

    update-menus

  • 刪除無用文件:

    rm /etc/*-

    rm /var/mail/*

  • 刪除根目錄下的 .bash_history, .viminfo, .rr_moved等文件和目錄:

    rm -Rf /.bash_history /.rr_moved /.viminfo

  • 卸載(unmount)proc(不能忽略):

    umount /proc


22) 按 CTRL D 退出chrooted環境.


注意:


1) 如果您想自動運行一些程序,可以在 /etc/rc5.d/ 目錄下創建腳本(這寫腳本在 X 啟動前被運行).

2) /etc/init.d/knoppix-autoconfig 裡面的有趣東東:


  • X的背景圖片是 /cdrom/KNOPPIX/background.gif


  • 和floppyconfig類似,有一個cdromconfig會運行cdrom/KNOPPIX/knoppix.sh



3) /etc/init.d/xsession 裡面的有趣東東:

  它也設置背景為 /usr/local/lib/knoppix.gif

4) 現在,開始創建 ISO 文件:


  • 我們已經完成定製,要準備刻盤了!


  • 現在我們將製作KNOPPIX這個大文件,這是個cloop的壓縮ISO9660文件系統:


    • cd /mnt/hdb2/working

    • mkisofs -R -U -V "Hiweed.com iso9660 filesystem" -P "Hiwix www.hiweed.com" -hide-rr-moved -cache-inodes -no-bak -pad OLD/KNOPPIX | nice -5 /usr/bin/create_compressed_fs - 65536 > NewCD/KNOPPIX/KNOPPIX




    • 其中,"www.hiweed.com" 和 "Hiweed.com filesystem" 您可以自己改. 可能會有錯誤報告說和ISO標準不一致,您可以忽略它.





5) 如果一切順利,現在就開始製作光碟鏡像了:


  • cd /mnt/hdb2/working/NewCD


  • rm -f KNOPPIX/md5sums; find -type f -not -name md5sums -not -name boot.cat -exec md5sum {} ; >> KNOPPIX/md5sums (這將更新新ISO的md5值,便於以後檢查)


  • mkisofs -pad -l -r -J -v -V "KNOPPIX" -b KNOPPIX/boot.img -c KNOPPIX/boot.cat -hide-rr-moved -o /mnt/hdb2/working/knoppix.iso /mnt/hdb2/working/NewCD (把生成的ISO放在 /mnt/hdb2/working/knoppix.iso)


  • 完成!



技巧:


1) 如果您要查找已安裝的大軟體包,請使用該命令:

dpkg-awk "Status: .* installed$" -- Package Installed-Size| awk '{print $2}' | egrep -v '^$' | xargs -n2 echo | perl -pe 's/(S )s(S )/$2 $1/' | sort -rg

  這將以降序顯示.

  下面的命令至少比上面的快10倍,你不用dpkg-awk 或者 awk 或者 perl:

dpkg-query -W --showformat='${Installed-Size} ${Package}n' | sort -n






四、中文化定製


  注意:以下所有步驟均在在chrooted environment下進行.



1) 安裝中文字體

安裝simsun.ttf 字體:


  • mkdir /usr/X11R6/lib/X11/fonts/ttf

  • cp /selfpkg/simsun.ttf /usr/X11R6/lib/X11/fonts/ttf

  • cd /usr/X11R6/lib/X11/fonts/ttf

  • ttmkfdir > fonts.dir

  • cp fonts.dir fonts.scale


2) 修改XF86Config文件


    vi /etc/X11/XF86Config-4.in

    在Section "Files"段加入:

    FontPath "/usr/X11R6/lib/X11/fonts/ttf"


    在Section "Module"段加入:

    Load "xtt"

    加#號註釋掉freetype:

    #Load "freetype"




3) 安裝OpenOffice中文支持


    cd /opt/openoffice/share/fonts/truetype

    建立字體文件軟鏈接

    ln -s /usr/X11R6/lib/X11/fonts/ttf/simsun.ttf simsun.ttf

    把usr/lib/openoffice/share/fonts/truetype里的fonts.dir文件改名,並把/usr/X11R6/lib/X11/fonts/ttf/fonts.dir拷貝到此目錄:

    mv fonts.dir oofonts.dir

    cp /usr/X11R6/lib/X11/fonts/ttf/fonts.dir fonts.dir

    合併字體文件:

    cat oofonts.dir >> fonts.dir

    修改字體文件,打開fonts.dir,會發現fonts.dir文件變成了兩部分,第一部分即原fonts.dir文件的內容,第二部分為原openoffice字體的內容,現刪除openoffice字體的內容的數字部分(就是那個數字1),並把第一行改成本文件的行數(如總共8行,則將第一行的數字改成8).製作一個fonts_dir.global文件,並刪除原openoffice的字體文件.

    cp -f fonts.dir fonts_dir.global

    rm -f oofonts.dir




4) 設置中文環境變數


    修改/etc/bashrc和/etc/profile加入如下幾行:

    LC_ALL=zh_CN.GB2312

    LANG=zh_CN.GB2312

    LC_CTYPE=zh_CN.GB2312

    XMODIFIERS="@im=fcitx"

    XIM=fcitx

    XIM_PROGRAM=fcitx

    export LC_ALL LANG LC_CTYPE XMODIFIERS XIM XIM_PROGRAM




5) 配置啟動參數


    修改/etc/init.d/knoppix-autoconfig文件,找到簡體中文所在的段(155行):

    #cn) 註釋掉此行,改為 *) 即設為默認中文啟動

    *)

    # Simplified Chinese version

    COUNTRY="cn"

    LANG="zh_CN.GB2312"

    #LANGUAGE="gb2312.1980-0"



    LANGUAGE="zh_CN.GB2312"

    KEYTABLE="us"

    XKEYBOARD="us"

    KDEKEYBOARD="us"

    CHARSET="gb2312.1980-0"

    # Additional KDE Keyboards

    KDEKEYBOARDS="us,de,fr"

    XIM=fcitx

    XIM_PROGRAM=fcitx

    XMODIFIERS="@im=fcitx"



    找到美國英語所在的段(354行),將*) 改為 us),即去掉英語的默認啟動.




6) 修改字體顯示參數


    6.1) 修改/etc/skel/.kderc文件


      將下面的行設定為simsun.ttf字體,建議字體大小為10像素:

      [General]

      activeFont=simsun,10,-1,5,75,0,0,0,0,0

      fixed=simsun,10,-1,5,50,0,0,0,1,0

      font=simsun,10,-1,5,50,0,0,0,0,0

      menuFont=simsun,10,-1,5,50,0,0,0,0,0

      taskbarFont=simsun,10,-1,5,50,0,0,0,0,0

      toolBarFont=simsun,10,-1,5,50,0,0,0,0,0




    6.2) 修改/etc/skel/.kde/share/config/kdeglobals文件


      [General] (第29行)

      fixed= simsun,10,-1,5,50,0,0,0,1,0

      font=simsun,10,-1,5,50,0,0,0,0,0

      menuFont=simsun,10,-1,5,50,0,0,0,0,0

      taskbarFont=simsun,13,-1,5,50,0,0,0,0,0

      toolBarFont=simsun,10,-1,5,50,0,0,0,0,0

      [Locale] (第174行)

      Charset=iso8859-15

      Country=cn

      Language=zh_CN.GB2312

      [WM] (第281行)

      activeFont= simsun,10,-1,5,75,0,0,0,0,0




    6.3) 修改/etc/skel/.kde/share/config/kdesktoprc


      [FMSettings] (第34行)

      StandardFont= simsun,10,-1,5,50,0,0,0,0,0




    6.4) 修改/etc/skel/.kde/share/config/konsolerc


      為保證konsole正確顯示英文字體,把Lucidatypewriter字體改成Console字體:

      [Desktop Entry]

      defaultfont=Console,10,-1,5,50,0,0,0,1,0

      font=8





五、高級定製


  請參考本文結尾提供的鏈接.



六、特別說明


1) 關於fcitx輸入法的特別說明



  要啟動fctix,請在X的Console裡面輸入:fcitx& .

  fcitx基本上不需要手工配置,不過系統字體對它很重要.

  如果你在啟動fcitx時系統報告字體錯誤,類似於:「無法載入字體 -*-fixed-medium-r-normal--16-*-*-*-*-*-*-*,-*-simsun-medium-r-normal--16-*-*-*-*-*-zh_CN.GB2312-*」 等等,請把 ~/.gWuBi/profile中的「顯示字體=*」修改一下.怎麼修改呢?用命令 xlsfonts | grep gb 來查看你的系統中註冊了哪些gb碼的字體,然後把字體名寫上就可以了,比如「顯示字體=song ti」.

  關於輸入法的問題,推薦一個好去處:http://www.linuxsir.com/bbs/showthread.php?s=&threadid=37665

2) 關於cloop的特別說明

  Cloop是COMPRESSED LOOPBACK DEVICE (cloop.o)的簡稱, 是一個第三方內核模塊(官方內核中沒有包含它),它提供文件系統無關的、透明壓縮的、只讀的塊設備.Cloop是Knoppix的重要組成部分.

  如果您在運行insmod cloop命令時出錯,有可能您的交換分區太小,也有可能您根本沒有安裝cloop模塊.

  Cloop的源代碼可以在http://developer.linuxtag.net/knoppix/sources/下載到.下載后,用您的內核來編譯出一個cloop.o模塊:


  • cd /tmp

  • wget http://developer.linuxtag.net/knoppix/sources/cloop_1.02-1.tar.gz

  • tar xzf cloop_1.02-1.tar.gz

  • cd cloop_1.02-1

  • make KERNEL_DIR=/usr/src/linux

  • mkdir -p /lib/modules/misc && cp cloop.o /lib/modules/misc/

  • depmod -a

  • mknod /dev/cloop b 240 0


  如果還是不行,那麼您恐怕只能刻一張光碟了……



七、參考文獻


  製作一張支持中文的Knoppix CD

  KNOPPIX 使用和定製指南



[火星人 ] 自己動手製作Knoppix中文版已經有933次圍觀

http://coctec.com/docs/linux/show-post-57545.html