查看文章 |
动机:制作live CD,无非是便于制作系统的安装盘,至于是什么系统,就看公司开发的是什么产品了:) 过程简单描述:在主机A上安装FreeBSD系统,并安装一些软件;根据主机A的系统环境,制作live CD的ISO文件;用这个ISO文件,可以制成光盘;在主机B上运行这张光盘,启动光盘上的系统后,运行脚本命令,将系统COPY到主机B上;主机B有了和主机A一样的运行环境(也可以不一样,看脚本怎么写了)。 实验环境:虚拟机 实现步骤: 1.在主机A上安装新的FreeBSD系统 不赘述,随需要定制,但是必须要安装mkisofs,可以在PORTS中找到。 2.拷贝live CD文件系统 在根目录下,建立目录livecd,将文件系统拷贝到livecd目录下。显然,不能拷贝自身到livecd,需要在livecd目录下建立一个文本文件,里面记录不要拷贝的文件(目录)。如下: #vi /livecd/exclued_files ------------------------------------------------------------------- /livecd ------------------------------------------------------------------- 执行命令#tar -X /livecd/exclude_files -cf - -C / /livecd | tar xpf - -C /livecd 3.修改livecd目录的内容 删除dev内容,#rm /livecd/dev/*,因为这些内容在系统启动时会根据devfs自动生成; 备份var,#mv /livecd/var /livecd/var.copy , #mkdir /livecd/var,该var目录将挂载内存设备,制造可写入环境; 清除fstab内容,#> /livecd/etc/fstab,这样,当livecd启动加载完内核后,需要手工输入挂载根分区的位置,简便的方法是在fstab中加入一行:“/dev/acd0 / cd9660 r 0 0”(不含引号); 去掉开机选项画面:#vi /livecd/boot/loader.rc,注释掉最后一行,并新增一行:“boot”(不含引号)。 4.制作livecd的写入环境 首先备份文件#cp /livecd/etc/rc /livecd/mkbsd/rc.copy,mkbsd目录保存livecd的备份文件和安装时的执行脚本。 #vi /livecd/etc/rc-->在export HOME PATH后面加上几句话,利用mfs可写的特征,可以根据自己情况改变参数,挂载的是内存设备。 --------------------------------------------------------------------------------- /sbin/mdmfs -s 2m md /tmp /sbin/mdmfs -s 32m md /var cp -R /var.copy/* /var --------------------------------------------------------------------------------- 到现在为止,livecd做成的光盘基本可以启动了,以下部分是为了将livecd内容拷贝到主机B上做的工作。 5.制作磁盘分区的脚本 比如,我打算这样分区:#cat /mkbsd/savedlabel ----------------------------------------------------------------------------------- # /dev/da0s1: ----------------------------------------------------------------------------------- 以上这个文件用于分区使用,那么相应产生的fstab文件就应该是这样的,#cat /mkbsd/fstab.copy ----------------------------------------------------------------------------------- # Device Mountpoint FStype Options Dump Pass# 安装系统时需要把这个文件拷贝成fstab。 现在说一下分区脚本的内容,#cat /mkbsd/fdsk.sh ----------------------------------------------------------------------------------- #!/bin/sh ----------------------------------------------------------------------------------- 以上是假设磁盘类型是SCSI,如果是IDE的磁盘,就应该将da0换成ad0了。 6.拷贝文件系统的脚本 #cat /mkbsd/copyfs.sh ---------------------------------------------------------------------------------- #!/bin/sh copyfs() ---------------------------------------------------------------------------------- 以上脚本内容很简单,无非是将磁盘的分区挂载到运行光盘的MNT分区上,然后将光盘上的文件系统分别拷贝到各个分区上,最后在将准备好的var.copy和fstab.copy等文件覆盖过来。就这么简单。/mkbsd/excludetar文件的内容如下: ---------------------------------------------------------------------------------- /mkbsd ---------------------------------------------------------------------------------- 7.制作ISO文件 现在回到主机A上的文件系统上来, #cd /livecd #mkisofs -R -no-emul-boot -b boot/cdboot -o /home/livecd.iso 这样,光盘的ISO文件就做好了,保存在了/home下。 8.使用livecd 在主机B上,插入livecd光盘,系统启动后会执行光盘上的文件系统,这与一般的livecd没什么区别。进入mkbsd目录,依次执行fdsk.sh,copyfs.sh脚本后,取出光盘,重新启动主机B,这样就会看到一个新FreeBSD系统装好了。 9.结尾 时间较久,凭记忆写的,可能缺少点啥,也可能顺序上有些问题。不过大概就这些关键步骤。网上也有些类似文章,不过最早参考一篇国外的文章Building a CD Bootable Firewall(zz)。也有人说可能ps等命令不好用,解决办法是#rm /dev/null 。 |