Create DVD.iso Installation CD under FreeBSD System

Time:2019-7-4

Preparing to carve a DVD of FreeBSD-7.0-RELEASE, it seems troublesome to introduce what ISO extraction tools are used in Windows. Referring to the implementations of some FreeBSD masters, I wrote a simple script. The main function is to create a dvd. ISO from three disc*. iso.

1. Preparations:
Work directory / and three disc *. iso, such as
work/7.0-RELEASE-i386-disc1.iso
work/7.0-RELEASE-i386-disc2.iso
work/7.0-RELEASE-i386-disc3.iso

2. Create script files with the following code, such as mkdvd.sh, in the work directory. Executed by root users, a 7.0-RELEASE-i386-dvd.iso file will be generated in the work directory.

#!/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