layout: post
title: Lubuntu16.4.3定制教程
keywords: lubuntu, livecd
category : linux
tags : [linux]
<center><h1>Lubuntu16.4.3定制教程</h1></center>
<center>遲思堂工作室 李遲(li@latelee.org)</center>
本文是對(duì)lubuntu-16.04.3-desktop-amd64.iso進(jìn)行定制文檔,最終輸出一個(gè)可以燒寫到U盤并能啟動(dòng)的ISO鏡像文件。本文要求讀者對(duì)linux有一定掌握程度,比如:知道用戶權(quán)限(root權(quán)限)、知道如何使用apt-get install安裝軟件,知道shell。本文注重的是制作的方法,另外有做好的定制腳本文件,具體參考工程倉庫內(nèi)文件。工程倉庫里的圖標(biāo)、配置文件顯示的字符串可能與本文有出入,最終以讀者自行判斷的為準(zhǔn)。
如無特殊說明:
本文提到的命令,都是用root執(zhí)行的。
本文所述“啟動(dòng)系統(tǒng)”、“重啟系統(tǒng)”、“ISO啟動(dòng)”等,都是指“啟動(dòng)iso,進(jìn)入livecd環(huán)境”。
本文假定讀者能自由切換sudo和root,并能自由切換“/”和“\”。
本文工程項(xiàng)目倉庫地址:https://github.com/cststudio/lubuntucd ,下文將其為“工程”或“工程倉庫”。
1、環(huán)境搭建
制作iso鏡像,需要使用一臺(tái)linux系統(tǒng),可以是物理機(jī),也可以是虛擬機(jī),只要保證安裝有相應(yīng)的工具即可。本文使用的系統(tǒng)是12核至強(qiáng)處理器,64GB內(nèi)存的ubuntu 16.04 64bit。CPU核心數(shù)越多,制作ISO鏡像越快(本文所用系統(tǒng)制作ISO耗時(shí)大約1分鐘左右)。
就制作過程而言,需要使用的工具安裝步驟如下:
sudo apt-get install squashfs-tools
sudo apt-get install mkisofs
sudo apt install xorriso
sudo apt-get install isolinux
說明:
squashfs-tools主要用于解壓、壓縮squash文件系統(tǒng)的(ISO光盤使用這種格式)。
mkisofs 和xorriso主要用于制定ISO鏡像文件。
isolinux主要用于生成isohdpfx.bin。安裝該工具后,在/usr/lib/ISOLINUX/下面會(huì)有isohdpfx.bin,這個(gè)文件是我們?cè)谥贫↖SO時(shí)使用到的,需要將其拷貝到指定目錄。該文件已經(jīng)整合到工程倉庫里了。
2、文件說明
制作過程需要使用大量命令,為了簡化其人工輸入的失誤,因此,在解壓ISO、制作ISO過程中,均使用腳本來實(shí)現(xiàn)。
本文工程使用的主要文件和目錄說明如下:
- 1_tar_iso.sh:解壓專用。用于將原始ISO(即從官網(wǎng)下載的鏡像)解壓,得到rootfs文件。
- 2_tar_splash.sh :解壓splash、bootlogo相關(guān)文件。
- 3_build_splash.sh::更新并重新制作splash、bootlogo相關(guān)文件。
- update.sh:更新ISO鏡像(即本文的定制部分將通過此腳本完成,當(dāng)然也可以手工一步步完成)。
- 4_build_iso.sh:制作ISO鏡像專用。用于將修改后rootfs打包、制作成新的ISO鏡像。
- work:工作目錄,包括自定義圖片、修改后的配置文件、語言文件、isohdpfx.bin文件,等等。
細(xì)節(jié)請(qǐng)自行查閱文件。
3、制作步驟
一般來說,制作過程分幾個(gè)階段:
- 下載鏡像文件lubuntu-16.04.3-desktop-amd64.iso,將這個(gè)鏡像文件和腳本文件(1_tar_iso.sh、2_tar_splash.sh等)放置同一個(gè)目錄。
- 解壓原始鏡像文件。此階段使用1_tar_iso.sh腳本進(jìn)行(注意:后面我們定制時(shí),是基于已經(jīng)解壓的iso文件,因此,這個(gè)階段就不再需要了)。執(zhí)行腳本:
./1_tar_iso.sh
- 自定義制作。此階段根據(jù)實(shí)際情況不同而不同。文后主要在此階段進(jìn)行說明、演示。
- 重新制作ISO鏡像。此階段使用4_build_iso.sh腳本進(jìn)行。執(zhí)行腳本:
./ 4_build_iso.sh
測(cè)試我們重新制定的ISO有2種方式。第一種是使用虛擬機(jī)vmware軟件,新建一個(gè)虛擬機(jī),然后使用新生成的iso,啟動(dòng)即可看到效果。這種方法在初期階段建議,因?yàn)楸容^快看到效果。第二種是使用燒寫工具將ISO燒寫到U盤,從U盤啟動(dòng),查看效果。燒寫工具因系統(tǒng)不同而不同,這里介紹的是在Linux系統(tǒng)中燒寫方式。
將U盤插入計(jì)算機(jī)的USB口,使用
ls /dev/sd*
查看。一般來說,只有一塊硬盤的計(jì)算機(jī),/dev/sda即為該硬盤的設(shè)備文件(盤符),而/dev/sdb就是U盤的設(shè)備文件。簡單記憶就是sda表示系統(tǒng)識(shí)別到的第一塊磁盤,sdb是第二塊,sdc為第三塊,等等。本文使用的系統(tǒng)有2塊硬盤,因此U盤的設(shè)備文件為/dev/sdc。燒寫命令如:
dd if=lubuntu-16.04.3-desktop-amd64.iso of=/dev/sdc
其中if表示要燒寫的鏡像文件,這里是lubuntu-16.04.3-desktop-amd64.iso,of表示要燒寫的U盤設(shè)備文件。
4、定制過程
為了行文簡便,本節(jié)定制過程,僅僅是描述要定制的流程,不重復(fù)涉及解壓iso、重新制定iso的過程,請(qǐng)參考第三章節(jié)。凡是演示有效果圖的,均是重新制作ISO,然后再啟動(dòng)ISO系統(tǒng)。
本文定制的鏡像、腳本,統(tǒng)一放到/home/latelee/iso目錄。ISO真正內(nèi)容位于squashfs-root目錄。該目錄由腳本固定,本文使用該目錄來描述,如果實(shí)際目錄不同,目錄名跟著變化即可。本節(jié)涉及路徑都在/home/latelee/iso目錄下面,比如
squashfs-root/usr/share/lubuntu/wallpapers
實(shí)際在系統(tǒng)的全路徑為:
/home/latelee/iso/squashfs-root/usr/share/lubuntu/wallpapers
為了編寫高效,有時(shí)會(huì)使用windows系統(tǒng),比如存放圖片、修改圖片等等,會(huì)使用“\”分隔符,在本文中,不區(qū)別對(duì)待“/”和“\”,在真正操作時(shí),請(qǐng)時(shí)刻記住在linux下是“/”的。
實(shí)踐小結(jié):
建議部分重要文件使用chroot進(jìn)入squashfs-root來編輯。
比如ISO光盤中的/usr/share/plymouth/themes/lubuntu-text/lubuntu-text.plymouth文件,是鏈接到/etc/alternatives/text.plymouth的。
如果在主機(jī)上查看/etc/alternatives/text.plymouth,該文件卻鏈接到/usr/share/plymouth/themes/xubuntu-text/xubuntu-text.plymouth。
因?yàn)楸疚氖鞘褂胾buntu來定制lubuntu,所以會(huì)出現(xiàn)這種情況。如果主機(jī)也是lubuntu,則不會(huì)這樣。但是,如果不小心改錯(cuò)了ISO里面的文件,還是會(huì)影響主機(jī)的使用的。
下圖是默認(rèn)的lubuntu桌面:

4.1 桌面背景圖片
4.1.1 背景圖片
目錄:squashfs-root \usr\share\lubuntu\wallpapers
默認(rèn)是圖片名稱:lubuntu-default-wallpaper.png
分辨率:2560X1600
【定制】:
將自己喜歡的圖片(最好保持分辨率),放到此目錄,并修改為lubuntu-default-wallpaper.png。原來的圖片可以刪除可重命名。
4.1.2 菜單的logo圖
目錄:squashfs-root \usr\share\lubuntu\images
默認(rèn)名稱:1604-lubuntu-logo.png
分辨率:56x24
【定制】:
將自己喜歡的圖片(最終保持分辨率),放到此目錄,并修改為1604-lubuntu-logo.png。原來的圖片可以刪除可重命名。
注:squashfs-root \usr\share\lubuntu\images 目錄下的1604-logout-banner.png是登出顯示的logo圖片。
定制效果如下圖所示:

4.2 系統(tǒng)關(guān)機(jī)顯示的圖標(biāo)
目錄:squashfs-root\usr\share\plymouth\themes\lubuntu-logo
文件:lubuntu_logo.png
分辨率:217X58
直接替換該文件即可。
4.3 開機(jī)文字和圖片
開機(jī)文字和圖片是livecd啟動(dòng)正式系統(tǒng)前進(jìn)行顯示的。內(nèi)容位于newiso目錄。
開機(jī)文字涉及目錄:newiso\isolinux
開機(jī)圖片涉及文件:newiso\casper\initrd.lz
修改過程十分復(fù)雜,已經(jīng)制作成腳本,參考2_tar_splash.sh和3_build_splash.sh。修改的圖片、文件放到work\splash目錄。下面介紹有關(guān)文件:
en.tr、txt.cfg、zh_CN.tr、zh_TW.tr:開機(jī)文字文件(.tr文件部分為二進(jìn)制,部分為正常字符串,筆者使用notepad++對(duì)正常字符串進(jìn)行修改),需要將修改后的文件放到newiso\isolinux目錄,同時(shí)也要重新制定該目錄的bootlogo文件。
splash.pcx:開機(jī)選擇安裝系統(tǒng)時(shí)顯示的圖片,pcx格式(用photoshop可修改、保存。注:相同分辨率,大小不同,開機(jī)圖片會(huì)顯示不正常,暫未知原因)。放到newiso\isolinux目錄,同時(shí)也要重新制定該目錄的bootlogo文件。
lubuntu_logo.png、progress_dot_on.png:系統(tǒng)啟動(dòng)過程顯示的圖片。需要重新制作,最后生成initrd.lz文件。
就本節(jié)實(shí)驗(yàn)而言,修改的地方有:
en.tr文件中,將
Install Lubuntu
改為
Install Lubuntu-KXS
將
Try Lubuntu without installing
改為
Try Lubuntu without installing-KXS
修改txt.cfg文件(menu label一行最后的“-KXS”為新加字符串):
default live
label live
menu label ^Try Lubuntu without installing-KXS
kernel /casper/vmlinuz.efi
append file=/cdrom/preseed/lubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash ---
label live-install
menu label ^Install Lubuntu-KXS
kernel /casper/vmlinuz.efi
append file=/cdrom/preseed/lubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.lz quiet splash ---
label check
zh_CN.tr文件中,將
試用 Lubuntu 而不安裝
改為
試用 Lubuntu 而不安裝-人生
將
安裝 Lubuntu
改為
安裝 Lubuntu-何處
zh_TW.tr文件中,將
在不需安裝的情況下試用 Lubuntu
改為
在不需安裝的情況下試用 Lubuntu-天涯
將
安裝 Lubuntu
改為
安裝 Lubuntu-行客
效果如下(紅框部分所示):
英文界面:

簡體中文界面:

繁體中文界面:

從圖中看到,繁體中文效果不佳,原因未知,個(gè)人猜測(cè)和文字長度或者編碼格式有關(guān)。
另外在測(cè)試中發(fā)現(xiàn),即使是簡體中文,如果字符串長度太長,也會(huì)顯示不正常。
4.4 修改終端效果
lubuntu使用的終端是lxterminal,其配置文件目錄為:
/usr/share/lxterminal/
配置文件為(如終端默認(rèn)字體、字體大?。?br>
/usr/share/lxterminal/lxterminal.conf
修改該文件即可對(duì)lxterminal進(jìn)行定制,修改示例:
[general]
fontname=Ubuntu Mono 11
selchars=-A-Za-z0-9,./?%&#:_
scrollback=100
修改的是fontname這一行。
說明:這是修改GUI的終端配置(字體選擇和字體大?。?。效果如下圖紅框所示。

說明:默認(rèn)為Monospace 10,現(xiàn)改為Monospace 11。
4.5 修改鼠標(biāo)樣式
使用chroot進(jìn)入squashfs-root目錄。
rm /etc/alternatives/x-cursor-theme
ln -s /usr/share/icons/DMZ-Black/cursor.theme /etc/alternatives/x-cursor-theme
此方法修改無效果,請(qǐng)參考下文。筆者認(rèn)為理論上應(yīng)該修改正確了,但卻不生效,原因待查。
4.6 修改桌面圖標(biāo)
lubuntu的桌面圖標(biāo)配置文件目錄是:squashfs-root/usr/share/applications/,配置文件以.desktop結(jié)尾。
默認(rèn)情況下啟動(dòng),桌面會(huì)有安裝系統(tǒng)的圖標(biāo)。下面修改圖標(biāo)的顯示文字。
修改文件:squashfs-root/usr/share/applications/ubiquity.desktop
將
安裝 RELEASE
改為
安裝我的!系統(tǒng)! RELEASE
也可以修改為其它想顯示的字符。重新制作ISO,啟動(dòng)ISO后,桌面出現(xiàn)效果如下:

說明:通過修改配置文件,可以定制桌面圖標(biāo)顯示的文字。
4.7 放置圖標(biāo)快捷到桌面
為了方便在桌面直接雙擊打開程序,需要放程序圖標(biāo)放到桌面上。
使用chroot進(jìn)入squashfs-root目錄。
創(chuàng)建/etc/skel/Desktop目錄,將需要顯示到桌面的圖標(biāo)文件拷貝到該目錄。下面將firefox和終端快捷方式放到桌面:
mkdir -p /etc/skel/Desktop
cd /etc/skel/Desktop/
cp /usr/share/applications/firefox.desktop .
cp /usr/share/applications/lxterminal.desktop .
chmod +x *
效果如下:

說明:此方式適用于默認(rèn)lubuntu用戶的情況。(注意和以下方式有區(qū)別,如果使用自添加用戶的話,則本節(jié)設(shè)置方法無效)
知識(shí)點(diǎn):
/etc/skel/是新加用戶時(shí),該用戶擁有的設(shè)置,系統(tǒng)啟動(dòng)時(shí),會(huì)創(chuàng)建lubuntu用戶,則這個(gè)目錄的內(nèi)容將會(huì)拷貝到lubuntu的home目錄。
4.8 新加home目錄和根目錄到桌面
默認(rèn)情況下,桌面是沒有home目錄和根目錄的圖標(biāo)的。
根據(jù)《放置圖標(biāo)快捷到桌面》一節(jié)的啟示,只要找到home目錄的圖標(biāo)配置文件,將其放到/etc/skel/Desktop/,就能在桌面顯示了。
lubuntu文件系統(tǒng)管理使用pcmanfm工具,其桌面配置文件為:
/usr/share/applications/pcmanfm.desktop
將該文件拷貝一份,重命名為pcmanfm_home.desktop(表示是home目錄),要修改的內(nèi)容如下(下面的內(nèi)容已修改):
Icon=system-file-manager # 在桌面上的圖案名稱(需要搜索目錄以確認(rèn)要添加的圖標(biāo)名)
Name=Home # 顯示的圖標(biāo)名(英文系統(tǒng)顯示圖標(biāo)名稱)
Name[zh_CN]=家目錄 # 中文系統(tǒng)圖標(biāo)名
Name[zh_TW]=家目錄 # 繁體系統(tǒng)圖標(biāo)名
Exec=pcmanfm %U # 要執(zhí)行的命名,注:%U表示本次登陸的用戶的home目錄
再重新拷貝一份,重命名為pcmanfm_rootfs.desktop(表示是根目錄),要修改的內(nèi)容如下(下面的內(nèi)容已修改):
Icon=system-file-manager
Name=File System
Name[zh_CN]=根目錄
Name[zh_TW]=根目錄
Exec=pcmanfm /
內(nèi)容注釋參考前面,不再贅述。
效果如下圖所示:

(注:左為中文,右為英文,可以看到兩者圖標(biāo)間距不同,猜測(cè)是字符編碼原因,也可能是筆者截圖導(dǎo)致的視覺誤差。)
4.9 新加鎖屏
lubuntu默認(rèn)使用lxlock作為鎖屏工具。這里使用另一種鎖屏方案:xlock。xlock官網(wǎng)為:http://www.sillycycle.com/xlockmore.html,源碼下載地址為:http://www.sillycycle.com/xlock/。
但是,筆者沒有編譯通過。限于時(shí)間,就直接使用livecd里面的xlock來實(shí)現(xiàn)。
實(shí)現(xiàn)方法:
1、將livecd的xlock和xlockless拷貝出來,再拷貝到/usr/bin目錄,并修改其權(quán)限為777。
2、添加桌面圖標(biāo)文件xlock.desktop(參考/usr/share/applications/lubuntu-screenlock.desktop文件進(jìn)行修改),內(nèi)容如下:
[Desktop Entry]
Icon=system-lock-screen
Exec=lxlockless
Type=Application
Categories=GTK;System;Utility;
Name=ScreenLock
Name[zh_CN]=鎖屏
Name[zh_TW]=鎖屏
注:Categories項(xiàng)的內(nèi)容決定于圖標(biāo)顯示在啟動(dòng)菜單的位置。Name為顯示的名字(不同國家語言,顯示的名字不同)
3、將xlock.desktop拷貝到/etc/skel/Desktop目錄
4、安裝缺少的工具:
apt-get install -y rxvt-unicode
5、由于xlock不是在本地編譯的,其使用的鏈接器文件為/lib/ld-linux-x86-64.so.2,而x64平臺(tái)的鏈接器為/lib64/ld-linux-x86-64.so.2,因此需要額外拷貝一份,命令如下:
cp /lib64/ld-linux-x86-64.so.2 /lib/
重啟制作ISO,啟動(dòng),在桌面上會(huì)看到鎖屏圖標(biāo),雙擊,然后輸入2次相同的密碼,就會(huì)鎖屏(此時(shí)屏幕是黑色的)。按任意鍵后,在出現(xiàn)的界面中輸入剛才的密碼,即能解鎖。效果圖如下:

4.10 啟動(dòng)菜單添加新圖標(biāo)
在桌面左下角啟動(dòng)菜單新加項(xiàng)目,不需要修改panel相關(guān)文件。以新加的鎖屏功能放到System Tools分類為例,在.desktop文件中關(guān)鍵的語句為:
Categories=GTK;System;Utility;
效果圖如下(左側(cè)中文,右側(cè)英文):

注意,菜單中顯示的圖標(biāo)上的文字,由.desktop文件的Name決定。
4.11 啟動(dòng)菜單添加新分類
以安裝的vim添加到編程分類為例進(jìn)行說明。
用apt-get install vim方式安裝vim后,會(huì)自動(dòng)在/usr/share/applications目錄下創(chuàng)建vim.desktop文件。
將其拷貝一份,重命名為myvim.desktop,修改Categories,由
Categories=Utility;TextEditor;
改為
Categories=Development;Programming;
為了與vim.desktop作區(qū)別,修改名稱,如下:
Name=MyVim
GenericName=My Text Editor
重新制作ISO,啟動(dòng)后,效果圖如下(左側(cè)英文,右側(cè)中文)

總結(jié):不管是新安裝的軟件還是系統(tǒng)已有的軟件,如果要顯示在桌面或菜單,都需要添加(或修改).desktop文件。放到桌面上,則要將.desktop文件拷貝到Desktop目錄,菜單分類則需要將Categories修改為合適的字段。至于顯示的名稱,則由該文件的Name字段確定。參考其它的.desktop文件,進(jìn)行學(xué)習(xí)了解。
4.12 添加用戶:普通用戶latelee
使用chroot進(jìn)入squashfs-root目錄。
adduser latelee (回車,然后輸入2次密碼,一路回車即可)
將用戶添加root權(quán)限:
addgroup -system admin
adduser latelee admin
命令說明:首先添加admin組,將latelee用戶添加到admin組。
注:添加用戶后,啟動(dòng)ISO時(shí),會(huì)提示輸入用戶名密碼,所以無法直接進(jìn)入系統(tǒng),是否需要此功能,三思而定。
登陸效果圖如下:

在此前提下,創(chuàng)建桌面快捷方式:
創(chuàng)建文件:/home/latelee/Desktop/lxterminal.desktop。Desktop目錄默認(rèn)沒有,需要自行創(chuàng)建。
內(nèi)容如下:
[Desktop Entry]
Type=Link
Name=LXTerminal
Icon=lxterminal
URL=/usr/share/applications/lxterminal.desktop
啟動(dòng)ISO,登陸后,桌面有圖標(biāo)出現(xiàn)。想要其它桌面圖標(biāo),操作同理。桌面“快捷方式”位于/usr/share/applications/目錄下。
說明:這個(gè)操作主要是在ISO光盤添加一個(gè)用戶,并以該用戶運(yùn)行系統(tǒng)。如果想要默認(rèn)的lubuntu用戶,則不需要新加用戶。
《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《TMPTMPTMPTMP
/etc/lightdm/lightdm-gtk-greeter.conf.d/30_lubuntu.conf
修改該文件,無效果。
[greeter]
logo=/usr/share/icons/lubuntu/places/64/start-here.svg
background=/usr/share/lubuntu/wallpapers/lubuntu-default-wallpaper.png
theme-name=Lubuntu-default
icon-theme-name=lubuntu
font-name=Ubuntu
xft-antialias=true
#xft-dpi=
xft-hintstyle=full
xft-rgba=rgb
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》TMPTMPTMPTMP
4.13 添加用戶:root用戶
添加root密碼:
# passwd root
TODO:經(jīng)嘗試,不生效。原因待查。
4.14 修改主題、鼠標(biāo)樣式
下面是一種折中的方法。最好的方案暫時(shí)未找到。
使用livecd啟動(dòng),開機(jī),用默認(rèn)的lubuntu用戶登陸,先修改好自己想要的主題、鼠標(biāo)樣式,設(shè)置好桌面上顯示的圖標(biāo),之后得到配置文件在/home/lubuntu/目錄(在.config和.icons目錄),將這個(gè)目錄做成壓縮包(lubunut.tar.bz2),然后拷貝到制作ISO鏡像的主機(jī)(建議用scp通過ssh來拷貝,快速)。
在主機(jī)上,將上面lubuntu目錄壓縮包(lubunut.tar.bz2)解壓出來(本示例是放到work/lubuntu目錄),拷貝到目錄squashfs-root/etc/skel/。下面是一個(gè)示例(注:下面命令的當(dāng)前目錄在iso,work目錄存放一些配置文件、圖片等,squashfs-root是iso文件系統(tǒng)所在目錄)。
拷貝主題、字體,等等:
cp work/lubuntu/.config/ squashfs-root/etc/skel/ -a
拷貝鼠標(biāo)樣式:
cp -a work/lubuntu/.icons/ squashfs-root/etc/skel/
拷貝桌面圖標(biāo):
cp -a work/lubuntu/Desktop/ squashfs-root/etc/skel/
注意,為了防止權(quán)限問題造成無法讀取文件,需要執(zhí)行以下命令更改權(quán)限:
chroot squashfs-root # 進(jìn)入chroot環(huán)境
chmod 777 squashfs-root/etc/skel/.* -R
exit #退出chroot環(huán)境。
最后,制作光盤ISO,啟動(dòng)新的ISO,即可看到修改后的效果。
總結(jié):
因?yàn)閟quashfs-root/etc/skel/存放的是默認(rèn)用戶lubuntu的配置文件,因此,只要將我們想要的效果配置文件拷貝到對(duì)應(yīng)的位置即可(如.config、.icons)。
知識(shí)點(diǎn):
work/lubuntu/.config/gtk-3.0/settings.ini:主題、字體大小、鼠標(biāo)樣式
work/lubuntu/.config/lxsession/Lubuntu/desktop.conf:桌面配置(主題、字體大小、鼠標(biāo)樣式)
work/lubuntu/.config/lxterminal/lxterminal.conf:終端配置
work/lubuntu/.icons/user-dirs.dirs:里面是home目錄的默認(rèn)目錄(video等)
work/lubuntu/.icons/default/index.theme:主題
(為什么主題配置要寫那么多文件,筆者也不懂>_>)
4.15 修改時(shí)區(qū)
livecd默認(rèn)是UTC時(shí)間,為了方便定制與實(shí)際時(shí)間對(duì)應(yīng)起來,需要修改默認(rèn)的時(shí)區(qū)。
使用chroot進(jìn)入squashfs-root目錄。將所需時(shí)區(qū)文件鏈接到/etc/localtime文件。下面示例是設(shè)置系統(tǒng)時(shí)間為東八區(qū)(上海):
rm /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
4.16 添加環(huán)境變量
使用chroot進(jìn)入squashfs-root目錄。
編輯文件/etc/bash.bashrc,在文件最后添加想要的環(huán)境變量或命令別名。比如默認(rèn)是沒有l(wèi)l命令的,則可以添加:
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
測(cè)試:即時(shí)生效:source /etc/bash.bashrc,然后輸入ll即可看到生效了。
說明:修改這個(gè)文件,主要是方便定制一些命令。如果沒有這方面的需要,則不用理會(huì)。
4.17 系統(tǒng)漢化
lubuntu默認(rèn)情況下已經(jīng)有部分界面漢化了,但不完整。系統(tǒng)的漢化需要對(duì)應(yīng)語言包的支持(需要哪種語言則安裝哪個(gè)語言支持包)。本節(jié)安裝的是簡體中文、繁體中文。語言包由世界各國志愿者維護(hù)(即每種語言,都需要人工進(jìn)行翻譯,放到mo或po文件里面)。
使用chroot進(jìn)入squashfs-root,安裝簡體中文語言支持包:
apt-get install -y language-pack-zh-hans language-pack-gnome-zh-hans
繁體中文支持包:
apt-get install -y language-pack-zh-hant language-pack-gnome-zh-hant
英文包(注:默認(rèn)已經(jīng)安裝了,所以會(huì)提示“升級(jí)”而不是安裝)
apt-get install -y language-pack-en language-pack-gnome-en
下面對(duì)比原版和定制版本的效果:

從圖中看到,有部分已經(jīng)進(jìn)行了漢化,但有部分依然沒有被漢化。根據(jù)網(wǎng)絡(luò)為數(shù)不多的資料猜測(cè),應(yīng)該是語言包并沒有全部翻譯造成的。如果要完全漢化,只能通過修改語言包文件達(dá)到目的,雖然4.18小節(jié)講述了語言文件的修改方法,但整體而言,語言包的翻譯是一個(gè)大工程,已超過本文范圍了,故不再深入講解。
4.18 語言文件修改
前面安裝的語言包,實(shí)際上將mo文件放到合適的位置。不同語言,“合適的位置”也不同。
簡體中文的mo文件位置:/usr/share/locale/zh_CN/LC_MESSAGES/
繁體中文:/usr/share/locale/zh_TW/LC_MESSAGES/
英文系統(tǒng):/usr/share/locale/en/LC_MESSAGES/(注:似乎英文是天然支持的,因此該目錄下的mo文件并不多。)
mo文件是二進(jìn)制文件,無法直接修改,需要將其轉(zhuǎn)換成po文件,修改po文件,再將其轉(zhuǎn)成mo,這樣才能完成更新的操作。
下面是文件系統(tǒng)管理器pcmanfm的語言文件為例說明。
找到/usr/share/locale/zh_CN/LC_MESSAGES/pcmanfm.mo,使用以下命令轉(zhuǎn)換po文件:
msgunfmt pcmanfm.mo -o pcmanfm.po
然后編輯pcmanfm.po文件,此處修改示例如下:
msgid "translator-credits"
msgstr "Wylmer Wang <wantinghard@gmail.com>\nLate Lee <li@latelee.org>"
msgid "using LibFM ver. %s\n"
msgstr "--我的--使用 LibFM 版本 %s\n"
然后再轉(zhuǎn)換成mo文件:
msgfmt pcmanfm.po -o pcmanfm.mo
將重新生成的pcmanfm.mo拷貝到原處,制作ISO,啟動(dòng),選擇簡體中文。得到的效果圖如下所示:

4.19 添加拼音、五筆輸入法
安裝fcitx拼音、五筆:
apt-get update # 更新源
apt-get install -y fcitx-pinyin fcitx-table-wubi fcitx-table-wbpy # 依次是拼音、五筆、五筆拼音
另外,網(wǎng)上有說法要添加以下源:
add-apt-repository ppa:fcitx-team/stable
經(jīng)測(cè)試,不添加也可以正常安裝。
輸入法選擇界面:

五筆輸入界面:

fcitx拼音、五筆在中文環(huán)境才能顯示出來,英文環(huán)境無法使用。
注:fcitx從源碼安裝十分麻煩,依賴庫有十多個(gè),詳細(xì)參考以下文章:
https://fcitx-im.org/wiki/Compile_from_source
4.20 刪除軟件安裝途徑
為防止源更新,需要?jiǎng)h除ISO安裝軟件的途徑。安裝軟件的途徑有:apt、dpkg、新立得(synpatic)、軟件中心。只要將其刪除掉,則在啟動(dòng)ISO時(shí)就無法再安裝軟件了。
使用chroot進(jìn)入squashfs-root目錄。
卸載synpatic:
apt-get autoremove -y synaptic
卸載軟件中心:
apt-get autoremove -y lubuntu-software-center
卸載gdebi:
apt-get autoremove -y gdebi gdebi-gtk
卸載軟件更新:
apt-get autoremove -y software-properties-gtk update-manager
刪除apt、dpkg:
rm -rf $(find /usr -name "*dpkg*") $(find /usr -name "*apt*")
rm -rf $(find /etc -name "*dpkg*") $(find /etc -name "*apt*")
命令解釋:刪除所有帶“dpkg”、“apt”字樣的文件。
注意,此操作具備一定危險(xiǎn),需要謹(jǐn)慎操作。如果不是在chroot環(huán)境,會(huì)將主機(jī)的dpkg和apt刪除掉。三思而定。
5、最終定制效果及ISO下載
定制效果圖如下:

</br>
本工程定制的ISO鏡像下載地址如下:
鏈接: https://pan.baidu.com/s/1jJ7bRNo 密碼: 5c1u
md5sum:4ac0996167214e0b541be7016be19220
關(guān)于本文任何問題或建議,歡迎反饋給我:li@latelee.org。
本教程花費(fèi)大量時(shí)間,如果覺得有幫助,歡迎捐贈(zèng)作者:

6、免責(zé)聲明
本文開源于此,旨在讓自己(或他人)更深入地研究lubuntu(以及l(fā)inux)系統(tǒng)內(nèi)部結(jié)構(gòu)及原理。lubuntu、ubuntu、linux的商標(biāo)(和版權(quán))歸屬各自所屬組織/公司,筆者無意亦不愿侵犯。
7、附
在lubuntu安裝不同國家(地區(qū))的語言包,則可顯示該國(地區(qū))文字,完整的語言支持包列表如下:
language-pack-af language-pack-gnome-ka language-pack-kde-pl
language-pack-af-base language-pack-gnome-ka-base language-pack-kde-pt
language-pack-am language-pack-gnome-kk language-pack-kde-ro
language-pack-am-base language-pack-gnome-kk-base language-pack-kde-ru
language-pack-an language-pack-gnome-km language-pack-kde-si
language-pack-an-base language-pack-gnome-km-base language-pack-kde-sk
language-pack-ar language-pack-gnome-kn language-pack-kde-sl
language-pack-ar-base language-pack-gnome-kn-base language-pack-kde-sr
language-pack-as language-pack-gnome-ko language-pack-kde-sv
language-pack-as-base language-pack-gnome-ko-base language-pack-kde-tg
language-pack-ast language-pack-gnome-ku language-pack-kde-th
language-pack-ast-base language-pack-gnome-ku-base language-pack-kde-tr
language-pack-az language-pack-gnome-lt language-pack-kde-ug
language-pack-az-base language-pack-gnome-lt-base language-pack-kde-uk
language-pack-be language-pack-gnome-lv language-pack-kde-vi
language-pack-be-base language-pack-gnome-lv-base language-pack-kde-zh-hans
language-pack-bg language-pack-gnome-mai language-pack-kde-zh-hant
language-pack-bg-base language-pack-gnome-mai-base language-pack-kk
language-pack-bn language-pack-gnome-mk language-pack-kk-base
language-pack-bn-base language-pack-gnome-mk-base language-pack-km
language-pack-bo language-pack-gnome-ml language-pack-km-base
language-pack-bo-base language-pack-gnome-ml-base language-pack-kn
language-pack-br language-pack-gnome-mn language-pack-kn-base
language-pack-br-base language-pack-gnome-mn-base language-pack-ko
language-pack-bs language-pack-gnome-mr language-pack-ko-base
language-pack-bs-base language-pack-gnome-mr-base language-pack-ku
language-pack-ca language-pack-gnome-ms language-pack-ku-base
language-pack-ca-base language-pack-gnome-ms-base language-pack-lt
language-pack-crh language-pack-gnome-my language-pack-lt-base
language-pack-crh-base language-pack-gnome-my-base language-pack-lv
language-pack-cs language-pack-gnome-nb language-pack-lv-base
language-pack-cs-base language-pack-gnome-nb-base language-pack-mai
language-pack-cy language-pack-gnome-nds language-pack-mai-base
language-pack-cy-base language-pack-gnome-nds-base language-pack-mk
language-pack-da language-pack-gnome-ne language-pack-mk-base
language-pack-da-base language-pack-gnome-ne-base language-pack-ml
language-pack-de language-pack-gnome-nl language-pack-ml-base
language-pack-de-base language-pack-gnome-nl-base language-pack-mn
language-pack-dz language-pack-gnome-nn language-pack-mn-base
language-pack-dz-base language-pack-gnome-nn-base language-pack-mr
language-pack-el language-pack-gnome-oc language-pack-mr-base
language-pack-el-base language-pack-gnome-oc-base language-pack-ms
language-pack-en language-pack-gnome-or language-pack-ms-base
language-pack-en-base language-pack-gnome-or-base language-pack-my
language-pack-eo language-pack-gnome-pa language-pack-my-base
language-pack-eo-base language-pack-gnome-pa-base language-pack-nb
language-pack-es language-pack-gnome-pl language-pack-nb-base
language-pack-es-base language-pack-gnome-pl-base language-pack-nds
language-pack-et language-pack-gnome-pt language-pack-nds-base
language-pack-et-base language-pack-gnome-pt-base language-pack-ne
language-pack-eu language-pack-gnome-ro language-pack-ne-base
language-pack-eu-base language-pack-gnome-ro-base language-pack-nl
language-pack-fa language-pack-gnome-ru language-pack-nl-base
language-pack-fa-base language-pack-gnome-ru-base language-pack-nn
language-pack-fi language-pack-gnome-si language-pack-nn-base
language-pack-fi-base language-pack-gnome-si-base language-pack-oc
language-pack-fr language-pack-gnome-sk language-pack-oc-base
language-pack-fr-base language-pack-gnome-sk-base language-pack-or
language-pack-ga language-pack-gnome-sl language-pack-or-base
language-pack-ga-base language-pack-gnome-sl-base language-pack-pa
language-pack-gd language-pack-gnome-sq language-pack-pa-base
language-pack-gd-base language-pack-gnome-sq-base language-pack-pl
language-pack-gl language-pack-gnome-sr language-pack-pl-base
language-pack-gl-base language-pack-gnome-sr-base language-pack-pt
language-pack-gnome-af language-pack-gnome-sv language-pack-pt-base
language-pack-gnome-af-base language-pack-gnome-sv-base language-pack-ro
language-pack-gnome-am language-pack-gnome-ta language-pack-ro-base
language-pack-gnome-am-base language-pack-gnome-ta-base language-pack-ru
language-pack-gnome-an language-pack-gnome-te language-pack-ru-base
language-pack-gnome-an-base language-pack-gnome-te-base language-pack-si
language-pack-gnome-ar language-pack-gnome-tg language-pack-si-base
language-pack-gnome-ar-base language-pack-gnome-tg-base language-pack-sk
language-pack-gnome-as language-pack-gnome-th language-pack-sk-base
language-pack-gnome-as-base language-pack-gnome-th-base language-pack-sl
language-pack-gnome-ast language-pack-gnome-tr language-pack-sl-base
language-pack-gnome-ast-base language-pack-gnome-tr-base language-pack-sq
language-pack-gnome-az language-pack-gnome-ug language-pack-sq-base
language-pack-gnome-az-base language-pack-gnome-ug-base language-pack-sr
language-pack-gnome-be language-pack-gnome-uk language-pack-sr-base
language-pack-gnome-be-base language-pack-gnome-uk-base language-pack-sv
language-pack-gnome-bg language-pack-gnome-uz language-pack-sv-base
language-pack-gnome-bg-base language-pack-gnome-uz-base language-pack-ta
language-pack-gnome-bn language-pack-gnome-vi language-pack-ta-base
language-pack-gnome-bn-base language-pack-gnome-vi-base language-pack-te
language-pack-gnome-bo language-pack-gnome-xh language-pack-te-base
language-pack-gnome-bo-base language-pack-gnome-xh-base language-pack-tg
language-pack-gnome-br language-pack-gnome-zh-hans language-pack-tg-base
language-pack-gnome-br-base language-pack-gnome-zh-hans-base language-pack-th
language-pack-gnome-bs language-pack-gnome-zh-hant language-pack-th-base
language-pack-gnome-bs-base language-pack-gnome-zh-hant-base language-pack-touch-ast
language-pack-gnome-ca language-pack-gu language-pack-touch-bg
language-pack-gnome-ca-base language-pack-gu-base language-pack-touch-bs
language-pack-gnome-crh language-pack-he language-pack-touch-ca
language-pack-gnome-crh-base language-pack-he-base language-pack-touch-cs
language-pack-gnome-cs language-pack-hi language-pack-touch-da
language-pack-gnome-cs-base language-pack-hi-base language-pack-touch-de
language-pack-gnome-cy language-pack-hr language-pack-touch-el
language-pack-gnome-cy-base language-pack-hr-base language-pack-touch-en
language-pack-gnome-da language-pack-hu language-pack-touch-es
language-pack-gnome-da-base language-pack-hu-base language-pack-touch-eu
language-pack-gnome-de language-pack-ia language-pack-touch-fi
language-pack-gnome-de-base language-pack-ia-base language-pack-touch-fr
language-pack-gnome-dz language-pack-id language-pack-touch-gd
language-pack-gnome-dz-base language-pack-id-base language-pack-touch-gl
language-pack-gnome-el language-pack-is language-pack-touch-he
language-pack-gnome-el-base language-pack-is-base language-pack-touch-hr
language-pack-gnome-en language-pack-it language-pack-touch-hu
language-pack-gnome-en-base language-pack-it-base language-pack-touch-id
language-pack-gnome-eo language-pack-ja language-pack-touch-it
language-pack-gnome-eo-base language-pack-ja-base language-pack-touch-ja
language-pack-gnome-es language-pack-ka language-pack-touch-ko
language-pack-gnome-es-base language-pack-ka-base language-pack-touch-lt
language-pack-gnome-et language-pack-kde-ar language-pack-touch-lv
language-pack-gnome-et-base language-pack-kde-bg language-pack-touch-ms
language-pack-gnome-eu language-pack-kde-bs language-pack-touch-nb
language-pack-gnome-eu-base language-pack-kde-ca language-pack-touch-nl
language-pack-gnome-fa language-pack-kde-cs language-pack-touch-oc
language-pack-gnome-fa-base language-pack-kde-da language-pack-touch-pa
language-pack-gnome-fi language-pack-kde-de language-pack-touch-pl
language-pack-gnome-fi-base language-pack-kde-el language-pack-touch-pt
language-pack-gnome-fr language-pack-kde-en language-pack-touch-ro
language-pack-gnome-fr-base language-pack-kde-es language-pack-touch-ru
language-pack-gnome-ga language-pack-kde-et language-pack-touch-sk
language-pack-gnome-ga-base language-pack-kde-eu language-pack-touch-sl
language-pack-gnome-gd language-pack-kde-fa language-pack-touch-sr
language-pack-gnome-gd-base language-pack-kde-fi language-pack-touch-sv
language-pack-gnome-gl language-pack-kde-fr language-pack-touch-tr
language-pack-gnome-gl-base language-pack-kde-ga language-pack-touch-ug
language-pack-gnome-gu language-pack-kde-gl language-pack-touch-uk
language-pack-gnome-gu-base language-pack-kde-he language-pack-touch-zh-hans
language-pack-gnome-he language-pack-kde-hi language-pack-touch-zh-hant
language-pack-gnome-he-base language-pack-kde-hr language-pack-tr
language-pack-gnome-hi language-pack-kde-hu language-pack-tr-base
language-pack-gnome-hi-base language-pack-kde-ia language-pack-ug
language-pack-gnome-hr language-pack-kde-is language-pack-ug-base
language-pack-gnome-hr-base language-pack-kde-it language-pack-uk
language-pack-gnome-hu language-pack-kde-ja language-pack-uk-base
language-pack-gnome-hu-base language-pack-kde-kk language-pack-uz
language-pack-gnome-ia language-pack-kde-km language-pack-uz-base
language-pack-gnome-ia-base language-pack-kde-ko language-pack-vi
language-pack-gnome-id language-pack-kde-lt language-pack-vi-base
language-pack-gnome-id-base language-pack-kde-lv language-pack-xh
language-pack-gnome-is language-pack-kde-mr language-pack-xh-base
language-pack-gnome-is-base language-pack-kde-nb language-pack-zh-hans
language-pack-gnome-it language-pack-kde-nds language-pack-zh-hans-base
language-pack-gnome-it-base language-pack-kde-nl language-pack-zh-hant
language-pack-gnome-ja language-pack-kde-nn language-pack-zh-hant-base
language-pack-gnome-ja-base language-pack-kde-pa