[轉]ubuntu LiveCD製作 …

Elta提示:拷貝鏡像中文件的時候,需要注意有一個隱藏文件夾也要拷貝。本文內容本人已經在kubuntu12.10下實驗成功。

最近看到論壇很多朋友抱怨: 每次重裝之後,都要重複安裝中文支持,配置系統等工作。如果能定製ubuntu的livecd,安裝之前把這些工作做了,就可以省下不少時間了。 當然最徹底的方法就是自己做一個ubuntu的livecd,這有法可依但是要解決很多細節問題,不適合新手。 

這可以通過定製ubuntu-livecd的iso來實現,爲什麼不選alternate,先看它們的區別: 
ubuntu-8.04-alternate-i386.iso VS ubuntu-8.04-livecd-i386.iso 
alternate裏面是一大堆的按順序排列的包,安裝時可以選擇desktop,server,然後根據選擇安裝不同的包。 
livecd裏面最大的文件是一個文件系統映像,即filesystem.squashfs,其實就是squashfs格式的壓縮包。 

下面以 ubuntu-8.04-desktop-i386.iso爲例: 

1。 取出iso裏面的所有內容 
代碼:
sudo mkdir  oldiso   newiso
sudo mount  ubuntu-8.04-desktop-i386.iso  oldiso  -o  loop 
sudo  cp  oldiso/*   newiso/     -rp
sudo  umount  oldiso 

這個時候,newiso裏面就是原來iso的全部內容。

2。 解壓filesystem.squashfs,它位於newiso/casper/filesystem.squashfs
代碼:
sudo unsquashfs newiso/casper/filesystem.squashfs

耐心等待,解壓出來是一個squashfs-root目錄,大小約是原來的3倍左右,新安裝的系統是不是差不多是這個大小呢?

3。開始定製系統
代碼:
sudo cp /etc/resolv.conf   squashfs-root/etc   
sudo  chroot  squashfs-root     

默認的shell可能是sh,輸入/bin/bash 就可以了, 這時候可以像在正常系統一樣,用apt-get等命令,當然沒有圖形界面。
有些程序需要proc,所以這裏先掛載上。
代碼:
mount none  /proc   -t proc

代碼:
 apt-get  update  
sudo apt-get  install  language-pack-gnome-zh  language-pack-zh   ttf-arphic-uming  ttf-wqy-zenhei  ## 安裝中文支持,和中文字體

.......
還有用apt-get 刪除不用的軟件,例如oo,遊戲等就不多說了,最後記得
代碼:
apt-get clean     ##刪除文件列表包
autoremove    ##刪除舊版本包
rm   /etc/resolv.conf    
umount  /proc 


搞定之後,按ctrl+d 退出系統!!! 

4.生成安裝軟件列表
代碼:
sudo chroot  squashfs-root  dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee newiso/casper/filesystem.manifest
sudo cp -v newiso/casper/filesystem.manifest{,-desktop}


4.5REMOVE定義不安裝的軟件,ubiquity就是安裝程序。
代碼:
REMOVE='ubiquity casper live-initramfs user-setup discover1 xresprobe os-prober libdebian-installer4'
for i in $REMOVE ; do  sudo sed -i "/${i}/d" image/casper/filesystem.manifest-desktop; done


5. 重新壓縮映像。
刪掉原來newiso/casper/filesystem.squashfs,還是先備份吧。。
代碼:
sudo mksquashfs  squashfs-root   newiso/casper/filesystem.squashfs   ##等待一段時間


6. 編輯diskdefines,這裏定義一些版本信息。
nano newiso/README.diskdefines
$ cat README.diskdefines 
#define DISKNAME Ubuntu 8.04.1 "Hardy Heron" - Release i386
#define TYPE binary
#define TYPEbinary 1
#define ARCH i386
#define ARCHi386 1
#define DISKNUM 1
#define DISKNUM1 1
#define TOTALNUM 0
#define TOTALNUM0 1

7. 生成各個文件的md5值.
代碼:
sudo -s
(cd newiso && find . -type f -print0 | xargs -0 md5sum > md5sum.txt)
exit


8. 重新制作iso
代碼:
cd newiso
sudo mkisofs -r -V "my ubuntu" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o "../myubuntu-804-livecd-iso" .
cd ../                   ### 這纔是最重要的


定製好的iso文件是:myubuntu-804-livecd-iso, 先用虛擬機器試試吧。。 kvm/qemu用以下命令:
代碼:
sudo  kvm -cdrom  myubuntu-804-livecd-iso  -localtime  -m 300   ##300是分配的內存



我還寫過一個帖子,把當前使用的ubuntu做成livecd/usb,上述步驟只是它的一個部分。從中可以看出製作基於ubuntu發行版的思路來。 
http://forum.ubuntu.org.cn/viewtopic.ph ... highlight= 

希望對朋友們有用,歡迎交流: [email protected]

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