UBUNTU 9.10 livecd 客製化心得筆記。 - Linux

Agatha avatar
By Agatha
at 2010-02-14T14:00

Table of Contents

是的,我成功完成了客製化,我還把筆記寫好。

由於這是我的筆記,寫得不好請海涵。(字有點多,對不起)

經過我的測試,在squashfs檔案系統下的livecd都可以用這套流程個人化。

透過這個流程,我已經成功將 backtrack 4 中文化,順便加入翻譯軟體。

請大家多多指教。謝謝。

沒有比較好讀的網誌版

http://www.wretch.cc/blog/dioca/11849415

remaster筆記
先前作業
安裝重製必須套件
sudo aptitude install squashfs-tools genisoimage virtualbox

squashfs-tools 用來解開 squashfs 檔案系統的套件
genisoimage 用來建立 光碟ISO檔的套件
virtualbox 用來測試 光碟是否可以開機的套件 可以用 qemu代替,但效果不好。

下載原始光碟壓縮檔 檔案像是:UBUNTUXXXXXXX.iso
將下列5個腳本與光碟映像檔放在同一個子目錄中。
分別執行(用ROOT身份)
如果是第一次,請從0ubuntu_custom.sh開始會比較簡單。(附錄最後)

由此開始,全部手動。

建立系統來源
mkdir /media/tmp
mount -o loop /映像檔/ /media/tmp


建立重建區
mkdir rebuild ; cd rebuild ;
將重建腳本放在這裡。
cp ~/bin/*.sh .
建立重建檔案
建立 目標區 檔案系統
rsync --exclude=casper/filesystem.squashfs -a /media/tmp/ extract-cd
建立修改來源區檔案系統。
unsquashfs -dest edit /media/tmp/casper/filesystem.squashfs

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~初期建立完成

執行進入系統腳本
1go_in.sh
#/~~~~~~~~~~~~1go_in.sh_start~~~~~~~~~~~~~~/
#!/bin/sh
#這是在原系統進入子系統用。
#複製網路相關聯結的設定檔。
cp /etc/resolv.conf edit/etc/
cp /etc/hosts edit/etc/
echo "[*] 網路相關複製完成"
#加入套件庫的檔案,如果要修正套件庫的話要改。
cp -f /etc/apt/sources.list edit/etc/apt
cp -a /etc/apt/sources.list.d edit/etc/apt/
cp /etc/fstab edit/etc/
cp /etc/mtab edit/etc/

echo "[*] 套件庫來源複製完成"
#自行安裝進入套件。
cp 2early_seting.sh edit/usr/local/bin/
cp 3getout_chroot_seting.sh edit/usr/local/bin/
chmod +x edit/usr/local/bin/2early_seting.sh
chmod +x edit/usr/local/bin/3getout_chroot_seting.sh
echo "[*] 快速掛載腳本複製完成"
#掛載本機設備檔。
mount --bind /dev edit/dev
#進入子系統
echo "##############################################################"
echo "[*] 進入編輯子系統狀態. "
echo "##############################################################"
echo "[*] 進入完成後,請輸入當你完成套件升級後請先輸入2early_seting.sh"
echo "##############################################################"
echo "[*] 當完成套件設定後,請執行 3getout_chroot_seting.sh,最後再輸入
\"exit\" "
echo "[*] 本腳本 不會 自動執行映像檔製作,請自行輸入4remake.sh。"
chroot edit
#以下為離開子系統後。
#卸載主系統設備聯結
umount edit/dev
#刪除快速進入套件。
rm -rf edit/etc/resolv.conf
rm -rf edit/etc/hosts
rm -rf edit/etc/fstab
rm -rf edit/etc/mtab
rm -rf edit/usr/local/bin/2early_seting.sh
rm -rf edit/usr/local/bin/3getout_chroot_seting.sh
echo "執行 sh 4remake.sh"

#/~~~~~~~~~~~~1go_in.sh_end~~~~~~~~~~~~~~/

進入修正 子系統後執行 2early_seting.sh

#/~~~~~~~~~~~~2early_seting.sh_start~~~~~~~~~~~~~~/

#!/bin/sh
#這是為了進入後導入的腳本
#掛載主要檔案群與設定家目錄
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
#啟動套件庫控制軟體。
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl ; /etc/init.d/dbus start
locale-gen en_US.UTF-8 zh_TW.UTF-8

#/~~~~~~~~~~~~2early_seting.sh_end~~~~~~~~~~~~~~/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~個人化修正開始。
修正時區設定 選定etc/utc
dpkg-reconfigure tzdata

套件庫重整
apt-get update

加入額外的套件庫金鑰
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com [套件庫ID]

刪除不要的套件。
找出大的套件來刪。
dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less
apt-get remove --purge

加入中文套件
apt-get install language-pack-gnome-zh-hant language-support-zh-hant
language-pack-zh-hant
加入大五支援
echo zh_TW.BIG5 BIG5 >> /var/lib/locales/supported.d/zh-hant
locale-gen


安裝flash 或是其他套件
dpkg -i install_flash_player_10_linux.deb
goolge-chrome
madedit
修正flash 的中文錯誤
vi /etc/fonts/conf.avail/69-language-selector-zh-tw.conf

安裝星際譯王
apt-get install stardict
安裝字典檔,解壓縮後放在
usr/share/stardict/dic/
tar -xjvf stardict*.bz2 -C usr/share/stardict/dic/

移除IBUS 安裝gcin 修正中文輸入選項
修改預設輸入法
cd /etc/alternatives
ln -snf /etc/X11/xinit/xinput.d/gcin xinput-zh_TW

修改多媒體播放器:
apt-get remove --purge totem-gstreamer ; apt-get install totem-xine

壓縮檔案支援
apt-get install unrar p7zip-full

iso檔案編輯
apt-get install isomaster

apt-get install filezilla nmap sniffit wireshark

刪掉預設桌面的說明
rm /etc/skel/*
刪掉多餘的介紹檔
rm /usr/share/example-content
刪除桌面的檔案
在/etc/profile 後面加上這段:
if [ -d ~/Desktop ] ; then
rm -rf ~/Desktop/*
fi


刪掉不必要的桌面檔,
rm /usr/share/background/*
將需要的桌面放到這裡

修正預設的面板與桌面設定
/usr/share/gconf/defaults
修正桌面背景設定:修正第1行的桌面圖片檔位置
vi /usr/share/gconf/defaults/16_ubuntu-wallpapers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~個人化修正結束。
套件準備好後,準備離開:
離開腳本:

#/~~~~~~~~~~~~3getout_chroot_seting.sh_start~~~~~~~~~~~~~~/

#!/bin/sh
#這是為了離開重製系統的快速腳本。
#刪除不必要檔案。
rm -rf /tmp/*
rm -rf ~/.bash_history
rm /var/lib/dbus/machine-id
rm /sbin/initctl
#關閉套件庫封鎖
dpkg-divert --rename --remove /sbin/initctl
#卸載必要檔案群。
umount /proc
umount /sys
umount /dev/pts

#/~~~~~~~~~~~~3getout_chroot_seting.sh_end~~~~~~~~~~~~~~/

輸入exit 以離開修正系統

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~後期壓縮準


修正SYSLINUX開機設定
vi dest/isolinux/text.cfg

將從硬碟開機選項拿掉

加入開機預設語言設定:
echo "zh_TW" > dest/isolinux/lang


開始重製
sh 4remake.sh

#/~~~~~~~~~~4remake.sh_start~~~~~~~~~~~/

#!/bin/sh
#umount source/dev
echo "old data is clean"
chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' >
extract-cd/casper/filesystem.manifest
echo "new filesystem page list is done"
cp extract-cd/casper/filesystem.manifest
extract-cd/casper/filesystem.manifest-desktop
sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop
rm extract-cd/casper/filesystem.squashfs
echo "old main file is deleted"
mksquashfs edit extract-cd/casper/filesystem.squashfs
cd extract-cd
rm -rf md5sum.txt
find -type f -print0 | xargs -0 md5sum | grep -v isolinux/boot.cat | tee
md5sum.txt
#mkisofs -r -V "UBUNTU_9.10" -cache-inodes -J -l -b isolinux/isolinux.bin -c
isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o
../UBUNTU_9.10_custom.iso .
mkisofs -D -r -V "UBUNTU_9.10" -cache-inodes -J -l -b isolinux/isolinux.bin
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o
../UBUNTU_9.10_custom.iso .
cd ..

#/~~~~~~~~~~4remake.sh_~~~~~~~~~~~~~~/

最後再用virtualbox測試。

附錄

#!/bin/bash

isoname=$1

clear
echo "##############################################################"
echo "[*] UBUNTU rebuild customisation script"
echo "[*] Setting up the build environment..."

#services="inetutils-inetd tinyproxy iodined knockd openvpn atftpd ntop nstxd
nstxcd apache2 sendmail atd dhcp3-server winbind miredo miredo-server pcscd
wicd wacom cups bluetooth binfmt-support mysql"

mkdir -p mnt
mount -o loop $isoname mnt/
mkdir -p extract-cd
rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd
mkdir -p squashfs
mount -t squashfs -o loop mnt/casper/filesystem.squashfs squashfs
mkdir -p edit
echo "[*] Copying over files, please wait ... "

cp -a squashfs/* edit/

cp /etc/resolv.conf edit/etc/
cp /etc/hosts edit/etc/
cp /etc/fstab edit/etc/
cp /etc/mtab edit/etc/
cp -f /etc/apt/sources.list edit/etc/apt
cp -a /etc/apt/sources.list.d edit/etc/apt/
cp 2early_seting.sh edit/usr/local/bin/
cp 3getout_chroot_seting.sh edit/usr/local/bin/
chmod +x edit/usr/local/bin/2early_seting.sh
chmod +x edit/usr/local/bin/3getout_chroot_seting.sh


mount --bind /dev/ edit/dev
#mount -t proc /proc edit/proc
#mount -t sysfs /sys edit/sys
#mount -t devpts /dev/pts edit/dev/pts

echo "##############################################################"
echo "[*] 進入編輯子系統狀態. "
echo "##############################################################"
echo "[*] 現在你可以修改你的LIVE CD. 這裡我建議 最多的修改指令 為下:"
echo "[*] apt-get update && apt-get upgrade & apt-get clean"
echo "##############################################################"
echo "[*] 如果你想要更多的修改或是升級,比如像是核心升級。那請就此打住,"
echo "[*] 換成使用 1go_in.sh, 2early_seting.sh 3getout_chroot_seting.sh"
echo "[*] 最後使用4remake.sh 進行映像檔製作。"
echo "[*] 在現在的設定下,請不要使用aptitude進行全部升級。"
echo "##############################################################"
echo "[*] 進入完成後,請輸入當你完成套件升級後請先輸入2early_seting.sh"
echo "##############################################################"
echo "[*] 當完成套件設定後,請執行 3getout_chroot_seting.sh,最後再輸入
\"exit\" "
echo "[*] 本腳本會自動執行映像檔製作。"
chroot edit

echo "[*] 離開編輯環境,, 刪除及卸載暫時檔案"

rm -rf edit/etc/mtab
rm -rf edit/etc/fstab
rm -rf edit/etc/resolv.conf
rm -rf edit/etc/hosts
rm -rf edit/tmp/*
rm -rf edit/var/crash/*
rm -rf edit/usr/local/bin/2early_seting.sh
rm -rf edit/usr/local/bin/3getout_chroot_seting.sh


#umount edit/dev/pts
#umount edit/sys
umount edit/dev
#umount edit/proc
umount squashfs
umount mnt
rmdir squashfs
rmdir mnt
mkdir -p old_iso
mv $1 old_iso/

chmod +w extract-cd/casper/filesystem.manifest

echo "[*] 建立 manifest"
chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' >
extract-cd/casper/filesystem.manifest

#for service in $services;do
#chroot edit update-rc.d -f $service remove
#done

#REMOVE='ubiquity casper live-initramfs user-setup discover xresprobe
os-prober libdebian-installer4'
#for i in $REMOVE
#do
#sed -i "/${i}/d" extract-cd/casper/filesystem.manifest-desktop
#done

cp extract-cd/casper/filesystem.manifest
extract-cd/casper/filesystem.manifest-desktop

sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop


rm -rf extract-cd/casper/filesystem.squashfs
echo "[*] 建立 squashfs image..."

mksquashfs edit extract-cd/casper/filesystem.squashfs

rm extract-cd/md5sum.txt

#(cd extract-cd && find . -type f -print0 | xargs -0 md5sum > md5sum.txt)

cd extract-cd

find -type f -print0 | xargs -0 md5sum | grep -v isolinux/boot.cat | tee
md5sum.txt

echo "[*] 製作 iso ..."

mkisofs -D -r -V "UBUNTU_9.10_" -cache-inodes -J -l -b isolinux/isolinux.bin
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o
../UBUNTU_9.10_custom.iso .

cd ..

echo "[*] 現在,你的 UBUNTU 9.10 已經完成在 $(pwd)/UBUNTU_9_10_custom.iso"
echo "##############################################################"


核心升級(修正)
在子系統裏面進行完全更新,輸入aptitude upgrace
在子系統外將核心從 /boot/當中移出。(不是你自己的核心,是子系統的,照著本說明做
,會在 edit/boot/)
cp edit/boot/vmlinuz-2.6.31-16-generic extract-cd/casper/vmlinuz
cp edit/boot/initrd.img-2.6.31-16-generic extract-cd/casper/initrd.gz

修正核心initrd.gz 成 initrd.lz(不是改檔名就好)

cd extract-cd/casper
sudo mv initrd.lz inird.lz.orig
gzip -dc initrd.gz | sudo lzma -7 > initrd.lz
cd ~/live

最後再把多餘的檔案刪除。
sudo rm -f inird.lz.orig initrd.gz



外加的套件庫。
deb http://ppa.launchpad.net/network-manager/trunk/ubuntu karmic main
deb http://dl.google.com/linux/deb/ stable main
deb-src http://ppa.launchpad.net/tualatrix/ubuntu hardy main
deb http://ppa.launchpad.net/gezakovacs/ppa/ubuntu karmic main
deb-src http://ppa.launchpad.net/gezakovacs/ppa/ubuntu karmic main

--
▽ 你好~~再見!!
| /
(˙ω˙) 聽說這是人才!

--
Tags: Linux

All Comments

Ingrid avatar
By Ingrid
at 2010-02-17T22:32
推一下 不過字好小啊(汗)
Tom avatar
By Tom
at 2010-02-18T01:25
推!!
Doris avatar
By Doris
at 2010-02-21T17:51
推~~
Kelly avatar
By Kelly
at 2010-02-25T16:43
推 感謝您的分享 OTZ
John avatar
By John
at 2010-02-25T19:05
Lydia avatar
By Lydia
at 2010-02-27T17:29
雖然看不懂 不過直覺是很不得了的東西 推
Hedy avatar
By Hedy
at 2010-02-28T07:37
雖然看不懂 不過直覺是很不得了的東西 推+1
Callum avatar
By Callum
at 2010-03-01T07:21
不錯

Fedora 12 的Fx為什麼還是 3.5.x ?

Kama avatar
By Kama
at 2010-02-14T11:02
Fx 的官方 3.6 不是出來很久了嗎? 為什麼 Fedora 12 的內建 Fx 還是維持在 3.5.x ?? yum update 也沒有3.6可用?? 我有在 rpm search 找到 remi 的3.6版本 並且成功安裝使用中 請問這個 remi 是什麼呢??? 為什麼 Fedora 還不把 ...

無光碟機 無usb開機如何安裝ubuntu

Noah avatar
By Noah
at 2010-02-14T02:21
想請問各位板上先進要如何安裝ubuntu到無光碟機又無法usb開機的筆電 現有材料: 1. ubuntu9.1光碟片 2. acer舊筆電 (無光碟機 無法usb開機 無系統) 3. usb外接式光碟機 4. 桌機 xp系統 ===================== 原本想用外接光碟機安裝 但是筆電開 ...

Eeepc 701使用視訊

David avatar
By David
at 2010-02-13T18:50
※ [本文轉錄自 Notebook 看板] 作者: beingtp () 看板: Notebook 標題: [問題] Eeepc 701使用視訊 時間: Sat Feb 13 15:57:46 2010 請問最古老的那一版701 4G視訊版的 該怎麼在amsn底下使用視訊鏡頭 因為他都抓不到視訊鏡頭 ...

請問如何監控硬碟的io ?

Candice avatar
By Candice
at 2010-02-12T18:47
※ 引述《iwhiori (玉米)》之銘言: : try it,iostat. : http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html : iostat - Average CPU Load, Disk Activity ...

請問如何監控硬碟的io ?

Iris avatar
By Iris
at 2010-02-12T16:20
try it,iostat. http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html iostat - Average CPU Load, Disk Activity The command iostat report ...