2013-04-09

How to customize Ubuntu 12.04 desktop i386 LTS? (Forbuntu 12.04.2.13)

利用Ubuntu 12.04.2 desktop i386 來做1个台灣版的Linux,就簡單共號做Forbuntu 12.04.2.13Formosa GNU/Linux based on Ubuntu 12.04.2 subversion 13)。

共iso檔案裝踮USB flash,直接開機,免安裝就會當做一寡簡單的代誌,親像上網、看影片、查資料…。

2个bash script 就會當自動做。



(1)customize:主script。

echo ">> mount iso image"
mkdir mnt
sudo mount -o loop ubuntu-12.04.2-desktop-i386.iso mnt

echo ">> extract iso to 'extract-cd' (except the squashfs)"
sudo rm -rf extract-cd
mkdir extract-cd
sudo rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd

echo ">> extract squashfs to 'edit'"
sudo rm -rf edit
sudo unsquashfs mnt/casper/filesystem.squashfs
sudo mv squashfs-root edit

sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > filesystem.manifest.org.txt


echo ">> prepare network connection"
sudo cp /etc/resolv.conf edit/etc/
sudo cp /etc/hosts edit/etc/

echo ">> mount dev"
sudo mount --bind /dev/ edit/dev

echo ">> prepare step 2 script"
sudo cp step2adjust edit/

echo ">> prepare tlime"
sudo cp tlime.db edit/usr/share/ibus-table/tables
sudo cp tlime.png edit/usr/share/ibus-table/icons

echo ">> enter the virtual system to adjust"
sudo chroot edit "./step2adjust"

echo ">> rm step 2 script"
sudo rm edit/step2adjust

echo ">> umount dev"
sudo umount edit/dev

echo ">> clean network connection"
sudo rm edit/etc/hosts
sudo rm edit/etc/resolv.conf

echo ">> setup manifest file"
sudo chmod a+w extract-cd/casper/filesystem.manifest
sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop

echo ">> generate new squashfs"
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs

echo ">> update filesystem.size"
sudo chmod a+w extract-cd/casper/filesystem.size
printf $(sudo du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size

echo ">> set image name"
sudo sed -i 's/Ubuntu/Forbuntu/' extract-cd/README.diskdefines

echo ">> calculate md5 sums"
cd extract-cd
sudo rm md5sum.txt
find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt

echo ">> generate new iso image"
sudo mkisofs -D -r -V "FORBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../forbuntu-12.04.2.`date +"%FT%T"`.iso .

cd ..
sudo umount mnt
rmdir mnt


(2)step2adjust:佇chroot 內底調整系統。

echo ">> setup kernel devices"
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts

echo ">> setup HOME, LC_ALL"
export HOME=/root
export LC_ALL=C

echo ">> generate dbus machine-id"
dbus-uuidgen --ensure
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl

echo ">> expand repository"
add-apt-repository "deb http://archive.ubuntu.com/ubuntu/ precise main universe restricted multiverse"
#for flash
apt-add-repository "deb http://archive.canonical.com/ precise partner"
apt-get update

echo ">> purge unnecessary packages"
apt-get -y purge firefox-locale-zh-hans
apt-get -y purge language-pack-gnome-zh-hans language-pack-gnome-zh-hans-base
apt-get -y purge language-pack-zh-hans language-pack-zh-hans-base

echo ">> install Chinese base"
apt-get -y install language-pack-zh-hant language-pack-zh-hant-base
#apt-get -y install language-support-fonts-zh-hant language-support-input-zh-hant

echo ">> install Taiwanese base"
apt-get -y install language-pack-nan language-pack-nan-base

echo ">> upgrade..."
apt-get -y upgrade

echo ">> set locale"
rm /var/lib/locales/supported.d/es /var/lib/locales/supported.d/zh-hans
#rm /usr/lib/locale/locale-archive
#locale-gen zh_TW.UTF-8 nan_TW.UTF-8@latin
locale-gen --purge
update-locale LANG=zh_TW.UTF-8 LANGUAGE=zh_TW

echo ">> adjust timezone"
echo "Asia/Taipei" | sudo tee /etc/timezone
sudo dpkg-reconfigure --frontend noninteractive tzdata

echo ">> install input methods"
apt-get -y install ibus-chewing ibus-table-cangjie5
#sed -i "s/ibus_null_engine/chewing,cangjie5/" /usr/share/gconf/schemas/ibus.schemas
#sed -i "s/Alt\+Shift_L/Alt\+Shift_L,Control\+Shift_L/" /usr/share/gconf/schemas/ibus.schemas
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type list --list-type=string \
 --set /desktop/ibus/general/preload_engines [tlime,chewing,cangjie5]
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type list --list-type=string \
 --set /desktop/ibus/general/hotkey/next_engine [Alt+Shift_L,Control+Shift_L]
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type list --list-type=string \
 --set /desktop/ibus/general/hotkey/next_engine_in_menu [Alt+Shift_L,Control+Shift_L]


echo ">> adjust gnome"
apt-get -y install language-pack-gnome-zh-hant language-pack-gnome-zh-hant-base
apt-get -y install language-pack-gnome-nan language-pack-gnome-nan-base

echo ">> adjust firefox"
apt-get -y install firefox-locale-zh-hant

echo ">> enhance media player"
apt-get -y install gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly
wget -P /var/cache/apt/archives/ http://packages.medibuntu.org/pool/free/libd/libdvdcss/libdvdcss2_1.2.12-0.0medibuntu1_i386.deb
dpkg -i /var/cache/apt/archives/libdvdcss2_1.2.12-0.0medibuntu1_i386.deb

echo ">> install flash player"
#apt-get -y install browser-plugin-gnash browser-plugin-lightspark
apt-get -y install adobe-flashplugin adobe-flash-properties-gtk

echo ">> adjust libreoffice"
apt-get -y install libreoffice-help-zh-tw libreoffice-l10n-zh-tw

echo ">> adjust thunderbird"
apt-get -y install thunderbird-locale-zh-tw

SCHEMASDIR="/usr/share/glib-2.0/schemas"

echo ">> adjust totem"
#gsettings set org.gnome.totem autoload-subtitles true
echo "[org.gnome.totem]
autoload-subtitles=true
" >> ${SCHEMASDIR}/forbuntu.gschema.override

echo ">> adjust desktop background"
#gsettings set org.gnome.desktop.background picture-uri file:///usr/share/backgrounds/Early_Blossom_by_Dh0r.jpg
sed -i "s/warty-final-ubuntu.png/Early_Blossom_by_Dh0r.jpg/" ${SCHEMASDIR}/10_gsettings-desktop-schemas.gschema.override


echo ">> generate new schemas"
rm -f ${SCHEMASDIR}/gschemas.compiled
glib-compile-schemas ${SCHEMASDIR}

echo ">> clean it"
apt-get autoremove --purge
apt-get clean
rm -rf /tmp/* ~/.bash_history

echo ">> remove dbus machine-id"
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl

umount /proc || umount -lf /proc
umount /sys
umount /dev/pts

echo ">> back from virtual system"

參考資料:
(a)LiveCDCustomization
(b)[教學] Ubuntu 12.04的調校 [論壇 - Ubuntu 文件資源]

沒有留言:

張貼留言