Ubuntu定制live cd | 迟思堂工作室
A-A+

Ubuntu定制live cd

2014-10-21 13:40 GNU/Linux系统 暂无评论 阅读 7,853 次

最近在捣鼓系统的制作和安装(从写的文章也可以隐约看出)。之前研究了一下debootstrap,后面又发现live cd其实也是可以自己定制的。本文就简单记录一下自己的学习笔记。

在制作过程中,要用到和squash文件系统有关的压缩和解压工具,因而需要安装:

sudo apt-get install squashfs-tools

本文使用的镜像是ubuntu目前最新版本:ubuntu-14.04.1-desktop-i386.iso

定制过程十分简单:解压iso->解压iso光盘的squash根文件系统->用chroot切换系统->自定义软件(删除或添加)->压缩成squash文件->重新制作iso光盘文件。

1、解压iso文件。

pwd /home/latelee/iso mkdir foo newiso sudo mount ubuntu-14.04.1-desktop-i386.iso foo/ -o loop cp -v  -a  foo/* newiso/ sudo umount foo/

这一步要注意看foo下的.disk目录有没有拷贝成功,我就是因此没有拷贝这个隐藏的目录而失败了很多次后才发现的。

2、解压filesystem.squashfs文件

cd newiso sudo unsquashfs casper/filesystem.squashfs (复制到上一层,不再占用newiso空间了) mv squashfs-root ../ cd ..

3、切换新系统

(拷贝主机的DNS配置到新的目录,因为要连外网) cp /etc/resolv.conf   squashfs-root/etc (使用chroot进入新的系统) chroot  squashfs-root mount none  /proc -t  proc

进入新的系统后输入命令遇到错误:

Fatal Python error: Failed to open /dev/urandom

解决十分简单,创建该文件即可:

mknod /dev/urandom c 1 9

4、自制定
在新的系统中,可以自行添加软件,比如像gcc等,ubuntu默认是没有安装的,可以自己时行安装。而像office这类比较大的软件,不需要的,可以删除。我曾经乱删一些自认为不必要的文件,结果发现做出来的live cd启动不了,后来不敢随便删除了。

(退出新系统,回到原来的主机系统) exit pwd /home/latelee/iso

5、重新配置,压缩新的根文件系统
这一点主要是做什么,我也没研究很深,ubuntu官网有教程的,直接抄。

chmod +w newiso/casper/filesystem.manifest sudo chroot squashfs-root dpkg-query -W --showformat='${Package} ${Version}\n' > newiso/casper/filesystem.manifest sudo cp newiso/casper/filesystem.manifest newiso/casper/filesystem.manifest-desktop sudo sed -i '/ubiquity/d' newiso/casper/filesystem.manifest-desktop sudo sed -i '/casper/d' newiso/casper/filesystem.manifest-desktop sudo rm newiso/casper/filesystem.squashfs sudo mksquashfs squashfs-root newiso/casper/filesystem.squashfs printf $(sudo du -sx --block-size=1 squashfs-root | cut -f1) > newiso/casper/filesystem.size (注:最好用cat newiso/casper/filesystem.size查看一下大小) cd newiso sudo rm md5sum.txt find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt

6、重新制作iso光盘

sudo mkisofs -D -r -V "My ubuntu-14.04.1" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-14.04.1-desktop-i386-custom.iso . cd ..

参考:
https://help.ubuntu.com/community/LiveCDCustomization
https://hev.cc/5.html
http://forum.ubuntu.org.cn/viewtopic.php?f=161&t=134333

注:
本文所述命令、目录,懂其意思即可,不一定要局限于所有路径的做法(如最后几步,我实际上是用脚本来完成的)。

李迟,于2014年10月21日中午,发表前好几天已写好文章



如果本文对阁下有帮助,不妨赞助笔者以输出更多好文章,谢谢!
donate



标签:

给我留言