Oct 19

转自:http://blog.csdn.net/vah101/article/details/6117563

最近突发奇想,打算定制一个Ubuntu 10.10桌面最小系统,并且将其制成LiveCD。以下是我的制作过程。

1.首先要下载ubuntu-10.10-alternate-i386.iso和ubuntu-10.10-desktop-i386.iso镜像,之所以要用2个镜像是因为需要通过ubuntu-10.10-alternate-i386.iso来安装命令行系统,再在命令行的基础上安装X11环境和GNOME环境,而ubuntu-10.10-desktop-i386.iso则是用来制作LiveCD。alternate版和desktop版的区别在http://www.linuxdiyf.com/bbs/thread-64198-1-1.html有详细的介绍,主要就是安装原理的不同desktop版相当于一个LiveCD,安装时就是从光盘将Ubuntu系统“恢复”到硬盘,而alternate版才是真正意义上的安装程序,并且可以只安装命令行系统。

2.用ubuntu-10.10-alternate-i386.iso引导开机,选择好语言后,按F4选择安装模式为“安装命令行系统”,再按“安装Ubuntu”,就可以开始了。

3.安装完,重启后执行 $sudo apt-get update 更新源下载文件,再执行

$sudo apt-get install openssh-server

安装ssh server,

4.下载并安装X-window环境,执行

$sudo apt-get install x-window-system-core

5.再就要安装显卡驱动了,由于我用的VMWare虚拟机的显卡驱动已经被Ubuntu集成了,所以这一步可以跳过

6.安装GNOME桌面环境

$sudo apt-get install gnome-core

安装gnome-core需要的包较多,可能会下载比较长的时间

7.安装Compiz窗口管理器

$sudo apt-get install compiz

按道理这个不需要装的,但是不安装的话,ubuntu新开窗口不能移动,缩放。

8.安装输入法管理器与小企鹅输入法

$sudo apt-get install im-switch
$sudo apt-get install fcitx

某些情况下可能,在安装了fcitx输入法以后可能会出现和SCIM并存的问题,只要用im-switch把默认输入法改成fcitx就可以了:

$sudo im-switch -a fcitx
$im-switch -a fcitx

9.设置英语界面中文输入环境,如果不需要输入汉字的话,8、9两步可以省略

$sudo vim.tiny /etc/environmont

添加:

LC_CTYPE=zh_CN.UTF-8

10.安装中文字体(如果执行了第8步,这一步可以省略)

$sudo apt-get install ttf-arphic-uming

11.现在运行$sudo startx就可以进入Ubuntu的图形界面了。第一次进入界面,会看到”OAFILD:Gnome_FastUserSwitch Applet”的出错窗口,这实际上是一个快速切换用户的功能包,要解决的话,要执行

$sudo apt-get install indicator-applet-session

12.再安装gdm这样下次重启就能直接进入GNOME界面了,

$sudo apt-get install gdm

也可以把startx写到/etc/rc.d/local下

13.执行$sudo apt-get clean,再执行df -h可以看到装完整个系统用了大约1.2G的空间。

安装系统到此可以告一段落了,下面就可以开始制作LiveCD了。前文已经说过,ubuntu-10.10-desktop-i386.iso实际上就是一个现成的LiveCD,我们只要利用它的结构,就可以方便快捷的生成自己的最小系统LiveCD了。这里主要做的事情是首先将已安装操作系统上的文件备份成一个squashfs归档文件,然后将ubuntu-10.10-desktop-i386.iso里的内容拷贝出来,用新的squashfs文件替换掉里面已有的文件,再调整一些配置,然后将其生成新的ISO文件,再将其刻录成CD或者制成USB引导盘,这个过程就算大功告成了。

1.将当前操作系统备份成squashfs归档文件,有很多工具,其中最简便的就数国内某大牛写的Live Ubuntu Backup V2.2了,尤其是它还支持中文提示,在http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=206287 可以看到使用说明。这是一个shell脚本写成的Ubuntu备份工具,直接运行即可。

将lub拷贝到/home下,$sudo chmod 777 /home/lub 然后执行$sudo /home/lub -b,然后按e或c来选择是英文提示,还是中文提示。第一次执行时,可能会提示需要安装lupin-casper和squashfs-tools,其中lupin-casper可以忽略,而squashfs-tools必须安装,运行$sudo apt-get install squashfs-tools即可。

之后再次运行$sudo /home/lub -b,依提示运行,就能在用户文件夹下生成一个backup-2011.01.05的目录了,其中有的backup-2011.01.05.squashfs文件就是我们想要的。

2.再将ubuntu-10.10-desktop-i386.iso拷贝到用户目录下,比如/home/jxg/下,

创建一个目录,用来挂载ubuntu-10.10-desktop-i386.iso

$sudo mkdir /home/jxg/mnt ,

将ISO挂载到/home/jxg/mnt下

$sudo mount -o loop /home/jxg/ubuntu-10.10-desktop-i386.iso /home/jxg/mnt

创建一个livecd的工作目录

$sudo mkdri /home/jxg/livecd

将mnt目录下casper/filesystem.squashfs以外的内容,同步的livecd工作目录上

$sudo rsync --exclude=/home/jxg/mnt/casper/filesystem.squashfs -a /home/jxg/mnt/ /home/jxg/livecd

下面,我们要对/home/jxg/livecd/casper/目录下的filesystem.squashfs、filesystem.manifest、filesystem.manifest-desktop这三个文件进行操作,由于它们只有读权限,所以先执行

$sudo chmod o+w /home/jxg/livecd/casper/filesystem.*

将刚才lub生成的那个backup-2011.01.05.squashfs文件,拷贝成/home/jxg/livecd/casper/filesystem.squashfs

执行:

$sudo cp /home/jxg/backup-2011.01.05/backup2011.01.05.squashfs /home/jxg/livecd/casper/filesystem.squashfs

此外,还要更新/home/jxg/livecd/casper/目录下的filesystem.manifest和filesystem.manifest-desktop,这两个文件实际上是LiveCD系统内所装包的列表,通过以下方式更新

$sudo dpkg -l | grep ii | awk '{print $2,$3}' > /home/jxg/livecd/casper/filesystem.manifest
$sudo dpkg -l | grep ii | awk '{print $2,$3}' > /home/jxg/livecd/casper/filesystem.manifest-desktop

实际上filesystem.manifest-desktop和filesystem.manifest是有所不同的,主要是少了ubiquity casper live-initramfs user-setup discover1 xresprobe os-prober libdebian-installer4这几个包,这里我将其忽略了。

3.退回的LiveCD的工作目录 /home/jxg/livecd 下,执行

$cd /home/jxg/livecd
$sudo rm md5sum.txt
$find -type f -print0 | sudo xargs -0 md5sum | grep -v ./isolinux/ | grep -v ./md5sum.txt | sudo tee md5sum.txt

更新原有的md5sum

4.将工作目录下的内容打包成ISO
安装ISO打包工具

$sudo apt-get install mkisofs

将livecd内的内容打成ISO包,执行

$sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-jxg-test.iso .

这个一定要在工作目录的跟下执行,并且命令最后的 . 一定不要忘记。命令完成后,就可以在上一级的目录下发现ubuntu-jxg-test.iso文件了,大小为407MB

总结,实际上我的制作过程中,对包的选择比较粗放,很多包比如 indicator-applet-session 、 gdm 、fcitx包都可以不装,并且对linux的内核也没有裁剪,限于时间所限,目前只能做到这一步了,其实还有Ubuntu精简还有很大的潜力。我使用LXDE替代GNOME制作了一个LiveCD包,只有350多M,过程参见 基于LXDE的Ubuntu桌面最小系统LiveCD

参考文档:
最小化定制Ubuntu
http://keqi360.blog.163.com/blog/static/636039142009221112144993/
制作自己的Ubuntu安装盘
http://upc.gg.blog.163.com/blog/static/297984982010930644120/
从零开始构建Ubuntu LiveCD
http://shenqiubufu.blog.163.com/blog/static/1627924942010814101024134/
Live Ubuntu Backup V2.2,备份你的 ubuntu 为可启动的 squashfs 文件
http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=206287

Leave a Reply