Elta提示:拷貝鏡像中文件的時候,需要注意有一個隱藏文件夾也要拷貝。本文內容本人已經在kubuntu12.10下實驗成功。
這可以通過定製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
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
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 ## 安裝中文支持,和中文字體
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
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}
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
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
(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 ../ ### 這纔是最重要的
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]