FreeBSD系统下创建DVD.iso安装光盘


    准备刻一张FreeBSD-7.0-RELEASE的DVD,网上很多介绍都是在Windows下使用什么iso提取工具的,貌似很麻烦。参考了一些FreeBSD高手的实现,我写了一个简单的脚本,主要功能是从3张disc*.iso创建出一个dvd.iso
    1,准备工作:
    工作目录 work/ 和 3张disc*.iso, 比如
    work/7.0-RELEASE-i386-disc1.iso
    work/7.0-RELEASE-i386-disc2.iso
    work/7.0-RELEASE-i386-disc3.iso
    2,用以下代码创建脚本文件,比如 mkdvd.sh,放在work目录下。用root用户执行,将在work目录下产生一个7.0-RELEASE-i386-dvd.iso的文件。
    

    #!/bin/sh
    
     disc1=`ls | grep "disc1.iso"`
     disc2=`ls | grep "disc2.iso"`
     disc3=`ls | grep "disc3.iso"`
    
     dvd=`echo $disc1 | sed "s/disc1/dvd/"`
    
     ## Prepare temporary dir to store dvd files
     if test -e tmp && test -d tmp
     then
         rm -fr tmp
     fi
     mkdir tmp
    
     ## Extract contents of each disc*.iso to temporary dir
     for disc in $disc3 $disc2 $disc1
     do
         mdconfig -a -f $disc -u 66
         if test -e /dev/md66
         then
         echo Extract $disc ...
         mount -t cd9660 /dev/md66 /mnt
         tar -cf - -C /mnt . | tar -xf - -C tmp/
         umount /mnt
         mdconfig -d -u 66
         else
         echo Can not create memory disk.
         exit -1
         fi
     done
    
     ## Merge index to point to the first disc
     echo Merge index ...
     cd tmp
     cat INDEX | sed "s/||2/||1/g" > index
     cat index | sed "s/||3/||1/g" > INDEX
     cat INDEX | sed "s/|3/|1/g" > index
     mv index INDEX
     cd ..
    
     ## Make dvd iso file
     echo Make $dvd ...
     mkisofs -R -no-emul-boot -b boot/cdboot -o $dvd tmp
     rm -fr tmp
    
     exit 0