没有使用FreeBSD里ports里的Freesbie, 完全自己手工操作,资料参考自
http://freebie.miraclenet.co.th/server/fwCD/index.html
修正了原文的两处错误,一切实践过程都在Vmware里进行, 这样方便反复操作.
先安装一个最基本的FreeBSD 7, 然后安装ports, 跟着
在 /usr/ports/sysutils/cdrtools/
#make install clean
安装后会有mkisofs命令了., 然后reboot机器,再继续以下操作.
新建目录
#mkdir /usr/livecd
新建文件
#ee /usr/livecd/extfile
输入
/usr/livecd
/usr/ports
退出保存
#cd /usr/livecd
#tar -X /usr/livecd/extfile -c -p -v -f - / | tar xpf -
#mkdir /usr/livecd/usr/ports
修改livecd目录的内容
删除dev内容,
#rm /usr/livecd/dev/*
因为这些内容在系统启动时会根据devfs自动生成;
删除tmp,
rm -r /usr/livecd/tmp/
备份var
#mv /usr/livecd/var /usr/livecd/var.copy
#mkdir /usr/livecd/var
该var目录将挂载内存设备,制造可写入环境;
清除/usr/livecd/etc/fstab文件的所有内容,这样,当livecd启动加载完内核后,需要手工输入挂载根分区的位置.
方法是在fstab文件中加入一行:
/dev/acd0 / cd9660 r 0 0
去掉开机选项画面:#vi /livecd/boot/loader.rc,注释掉最后一行,并新增一行,写入
boot
制作livecd的写入环境
首先备份文件
#mkdir /usr/livecd/mkbsd
#cp /usr/livecd/etc/rc /usr/livecd/mkbsd/rc.copy
ee /usr/livecd/etc/rc
在export HOME PATH这行插多一行,
/sbin/mdmfs -s 2m md /tmp
/sbin/mdmfs -s 32m md /var
cp -R /var.copy/* /var
利用mfs可写的特征,可以根据自己情况改变参数,挂载的是内存设备, 2m和32m可以增大,看机器内存自定义.
跟着
制作ISO文件
#cd /usr/livecd
#mkisofs -l -R -no-emul-boot -b boot/cdboot -o /usr/livecd.iso /usr/livecd
这个按Freebsd最小化安装后制作出来的ISO文件大概278M左近, 至于怎样从Vmware虚拟机拿出来,可以用 winscp 登录freebsd然后copy出来,但笔者没有装ssh的服务,于是在本机装了个简单的ftp服务器, 然后在虚拟机里用fto命令上传出来, 192.168.0.10是我部机的IP, 在本机的Vmware主机的IP是192.168.0.9, 命令是
ftp 192.168.0.10
输入用户名和密码,然后
put /usr/livecd.iso d:\livecd.iso
quit
跟着就可以在vmware虚拟机挂上iso测试了.
278M左近,大概大了点吧,那可以精简一下内核.
cp -R -p /usr/livecd/boot/kernel /usr/livecd/boot/kernel2
cd /usr/livecd/boot/kernel
rm *
cd /usr/livecd/boot/kernel2
gzip -9 *
cp /usr/livecd/boot/kernel2/*acpi* /usr/livecd/boot/kernel
cp /usr/livecd/boot/kernel2/kernel* /usr/livecd/boot/kernel
rm -r /usr/livecd/boot/kernel2/
这样应该可以到200M左近了, 其实可以在减的., 例如删调以下的
rm /usr/livecd/usr/include
rm /usr/livecd/usr/local/include
这样可以减低10M左近吧.
精简又是一个话题,不说了, 不过最后我成功的精简到128M, 但在freebsdchina.org看见有人精简到12M,厉害啊.
以上是我的制作Freebsd livecd的过程,全部基于Freebsd 7.0操作, 记录下来,以后会有用.
[color="#02368d"] 利用Freesbie制作FreeBSD livecd (2008/1/20)