分页: 1 / 3

[经验分享]定制ubuntu-livecd的iso

发表于 : 2008-07-03 10:07
yaska
最近看到论坛很多朋友抱怨: 每次重装之后,都要重复安装中文支持,配置系统等工作。如果能定制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发行版的思路来。
viewtopic.php?t=124114&highlight=

希望对朋友们有用,欢迎交流: [email protected]

发表于 : 2008-07-03 10:11
HuntXu
似乎很久前见过了定制livecd的方法了...

好像官网上也给过方法...

现在人都懒得搜索了... :roll:

发表于 : 2008-07-03 10:13
greco
:D

发表于 : 2008-07-03 10:16
yaska
HuntXu 写了:似乎很久前见过了定制livecd的方法了...

好像官网上也给过方法...

现在人都懒得搜索了... :roll:
是啊。。 我就当总结一下吧,主要是看最近论坛这个话题蛮多。。

发表于 : 2008-07-03 11:39
tlze
学习,看是明白了,但不知做起来会怎么样,哈!

发表于 : 2008-07-03 12:00
yaska
tlze 写了:学习,看是明白了,但不知做起来会怎么样,哈!
要交作业的。 这个作业比较简单。。呵呵

发表于 : 2008-07-03 21:13
yaska
nobody try??

发表于 : 2008-07-03 21:26
hcym
总结的好

是要定制定制

发表于 : 2008-07-03 21:50
ptptptptptpt
支持一下!虽然更感兴趣 把当前使用的ubuntu做成livecd/usb

发表于 : 2008-07-03 21:54
sevk
太强大了!!

发表于 : 2008-07-31 4:01
SecretZero
楼主,强,学习了 。

楼主,能不能把我现在用的ubuntu打包成Live CD?

发表于 : 2008-08-06 12:31
流浪
前两天menu.lst出错,进不去了,用了下载的live CD 改了menu.lst,可我的是ATI显卡,live CD里没驱动,启动起来是花屏的,看着很难受,当时就想能不能改下,把ATI驱动和一些更新做进去,现在看来,可以把自己的系统做成Live CD了。

谢谢楼主~~

Re: [经验分享]定制ubuntu-livecd的iso

发表于 : 2009-10-09 19:27
rootme
照LZ的步骤作了一遍,在拿虚拟测试的时候,进度条走了一下,然后就进入initramfs的界面了,并没有进入图形界面。
我以为是filesystem.squashfs的问题,我随后又直接用了UBUNTU光盘中的filesystem.squashfs来生成iso
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" .
对ISO中间的文件直接重新作了一遍ISO,结果还是同样的问题,还是进入busybox


请问怎么解决?谢谢!

Re: [经验分享]定制ubuntu-livecd的iso

发表于 : 2010-02-12 7:21
honeyword
lz 遇到以下问题 怎么办?
我是想安装在移动硬盘里面的,因为我这个破电脑硬盘小,解压不下。

cp: 无法保留“newiso/pool/main/u/ubiquity/oem-config-gtk_2.0.8_all.deb”的所有者: 操作不允许
cp: 无法保留“newiso/pool/main/u/ubiquity”的所有者: 操作不允许
cp: 无法保留“newiso/pool/main/u”的所有者: 操作不允许
cp: 无法保留“newiso/pool/main”的所有者: 操作不允许
cp: 无法保留“newiso/pool/restricted/b/bcmwl/bcmwl-kernel-source_5.10.91.9+bdcom-0ubuntu4_i386.deb”的所有者: 操作不允许
cp: 无法保留“newiso/pool/restricted/b/bcmwl”的所有者: 操作不允许
cp: 无法保留“newiso/pool/restricted/b”的所有者: 操作不允许
cp: 无法保留“newiso/pool/restricted/s/sl-modem/sl-modem-daemon_2.9.11~20080817-3ubuntu3_i386.deb”的所有者: 操作不允许
cp: 无法保留“newiso/pool/restricted/s/sl-modem”的所有者: 操作不允许
cp: 无法保留“newiso/pool/restricted/s”的所有者: 操作不允许
cp: 无法保留“newiso/pool/restricted”的所有者: 操作不允许
cp: 无法保留“newiso/pool”的所有者: 操作不允许
cp: 无法保留“newiso/preseed/cli.seed”的所有者: 操作不允许
cp: 无法保留“newiso/preseed/ltsp.seed”的所有者: 操作不允许
cp: 无法保留“newiso/preseed/ubuntu.seed”的所有者: 操作不允许
cp: 无法保留“newiso/preseed”的所有者: 操作不允许
cp: 无法保留“newiso/README.diskdefines”的所有者: 操作不允许
cp: 无法创建符号链接 “newiso/ubuntu”: 操作不允许
cp: 无法保留“newiso/wubi.exe”的所有者: 操作不允许

Re: [经验分享]定制ubuntu-livecd的iso

发表于 : 2010-02-12 9:11
mayi
收下了,好文章。