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

Ubuntu各种衍生版本
头像
yaska
帖子: 1169
注册时间: 2007-10-28 21:35

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

#1

帖子 yaska » 2008-07-03 10:07

最近看到论坛很多朋友抱怨: 每次重装之后,都要重复安装中文支持,配置系统等工作。如果能定制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=

希望对朋友们有用,欢迎交流: zhongxin.huang@gmail.com
上次由 yaska 在 2008-08-06 12:51,总共编辑 12 次。
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

#2

帖子 HuntXu » 2008-07-03 10:11

似乎很久前见过了定制livecd的方法了...

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

现在人都懒得搜索了... :roll:
HUNT Unfortunately No Talent...
头像
greco
帖子: 2487
注册时间: 2007-04-06 10:24
来自: ~/Shanghai

#3

帖子 greco » 2008-07-03 10:13

:D
http://silenceisdefeat.com/~greco

代码: 全选

''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
头像
yaska
帖子: 1169
注册时间: 2007-10-28 21:35

#4

帖子 yaska » 2008-07-03 10:16

HuntXu 写了:似乎很久前见过了定制livecd的方法了...

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

现在人都懒得搜索了... :roll:
是啊。。 我就当总结一下吧,主要是看最近论坛这个话题蛮多。。
tlze
帖子: 61
注册时间: 2008-02-21 19:36

#5

帖子 tlze » 2008-07-03 11:39

学习,看是明白了,但不知做起来会怎么样,哈!
头像
yaska
帖子: 1169
注册时间: 2007-10-28 21:35

#6

帖子 yaska » 2008-07-03 12:00

tlze 写了:学习,看是明白了,但不知做起来会怎么样,哈!
要交作业的。 这个作业比较简单。。呵呵
头像
yaska
帖子: 1169
注册时间: 2007-10-28 21:35

#7

帖子 yaska » 2008-07-03 21:13

nobody try??
头像
hcym
帖子: 15634
注册时间: 2007-05-06 2:46

#8

帖子 hcym » 2008-07-03 21:26

总结的好

是要定制定制
头像
ptptptptptpt
帖子: 3711
注册时间: 2006-09-19 18:16

#9

帖子 ptptptptptpt » 2008-07-03 21:50

支持一下!虽然更感兴趣 把当前使用的ubuntu做成livecd/usb
头像
sevk
帖子: 2060
注册时间: 2007-05-08 16:26
系统: arch
来自: 火星内核某分子内某原子核内
联系:

#10

帖子 sevk » 2008-07-03 21:54

太强大了!!
笔记本 :
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387
头像
SecretZero
帖子: 1670
注册时间: 2007-08-30 5:39

#11

帖子 SecretZero » 2008-07-31 4:01

楼主,强,学习了 。

楼主,能不能把我现在用的ubuntu打包成Live CD?
深度,值得深入!
http://bbs.deepin.org/?u=348684

最新的综艺魔法相册
http://www.77studio.net/?fromuid=344
头像
流浪
帖子: 94
注册时间: 2008-01-04 13:00

#12

帖子 流浪 » 2008-08-06 12:31

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

谢谢楼主~~
从来白纸好写字!!!

_________________________________
DELL VOSTRO 1000

OS Ubuntu 8.04
rootme
帖子: 2
注册时间: 2009-10-09 19:22

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

#13

帖子 rootme » 2009-10-09 19:27

照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


请问怎么解决?谢谢!
honeyword
帖子: 41
注册时间: 2008-09-21 22:28

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

#14

帖子 honeyword » 2010-02-12 7:21

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”的所有者: 操作不允许
mayi
帖子: 196
注册时间: 2008-06-25 11:28

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

#15

帖子 mayi » 2010-02-12 9:11

收下了,好文章。
山不转,水转,山不移,我移。
回复