有自己制作发行版光盘的想法吗?如果有,那就跟我一起做吧!
这次,我们做一个比较基本的Live系统,除了基本系统基本什么都没有的系统,因为写教程吧,我要尽量简洁,以便突出主要的步骤,但在必要的地方,我会给提示可以做哪些后续的工作,以此来打造属于你自己的发行光盘。
首先,你要找到FreeBSD的光盘或启动U盘,实在找不到,起码要到网上去下载两个文件:base.txz,kernel.txz,amd64版本最好再带上lib32.txz,这三个文件已经包含在FreeBSD发行光盘或U盘中了——当然,名称里含有bootonly的那几个文件除外。至于FreeBSD的版本,可以是i386,也可以是amd64,其他的系统没做测试,但原理应该都一样,区别应该在启动代码的部分,本文以下的步骤以amd64版的iso disk1为例。
有了这三个文件,就可以开始干活了,大致的工作流程为:
解压txz文件->在/mnt中构建一个完整的系统->必要的文件调整->makefs压制光盘映像
1、挂载FreeBSD的发行光盘到/media,注意光盘名,用的是cd0,有的系统是acd0:
mount -t cd9660 /dev/cd0 /media
2、进入/media,找到那三个文件,解压到/mnt中去,在/mnt中就有了一个完整的系统目录文件:
cd /media/usr/freebsd-dist // 进入发行版光盘,找到压缩文件
tar -xzvpf base.txz -C /mnt
//解压 base,注意加了p参数,保证权限,同时用了-C参数,把文件都解压到/mnt下
tar -xzvpf kernel.txz
//解压默认的内核
tar -xzvpf lib32.txz
//解压lib32兼容库
3、建一个基础的fstab,否则无法正确启动。对于sata的光驱,这儿应该写acd0:
vi /mnt/etc/fstab:
/dev/cd0 / ufs ro 1 1
4、做其他的工作,比如:安装pkg包,做系统精减,甚至压缩文件系统,还有做一些系统的优化工作……当然都是以/mnt为根目录来做的。
5、打包映像:
makefs -t cd9660 -o rockridge,bootimage=i386\;/boot/cdboot,no-emul-boot,label=MyBSD /root/my.iso /mnt
上面的命令细节可以参照makefs的手册,提醒注意的是bootimage后面有个反斜杠,它的作用是转义后面的分号,因为分号是cd9660的一个参数,不转义的话就成了shell的含义了。
6、挂载到虚拟机里面测试,这个工作就不再详细说了,发现问题再回来找原因吧。
怎么样,做光盘还是比较容易的吧,其实在boot/loader.conf可以配上启动的图片,感觉会更炫一些。做U盘映像要稍微麻烦一些,但步骤基本相似。
该贴由hui.chen转至本版2014-11-28 15:27:10