### Prepare our environment
umount /tmp
echo "/dev/md0 / ufs rw 0 0" > /etc/fstab
echo "tmpfs /tmp tmpfs rw 0 0" >> /etc/fstab
mount /tmp
cd /tmp
fetch ftp://ftp.free.fr/mirrors/ftp.freebsd.org/ISO-IMAGES-amd64/8.3/FreeBSD-8.3-RELEASE-amd64-disc1.iso
mkdir /cdrom
mdconfig -at vnode -u 9 -f FreeBSD-8.3-RELEASE-amd64-disc1.iso
mount -t cd9660 /dev/md9 /cdrom


### Remove any existing partitions
gpart delete -i 6 ada0
gpart delete -i 5 ada0
gpart delete -i 4 ada0
gpart delete -i 3 ada0
gpart delete -i 2 ada0
gpart delete -i 1 ada0
gpart destroy ada0
dd if=/dev/zero of=/dev/ada0 bs=512 count=10
gpart delete -i 6 da1
gpart delete -i 5 da1
gpart delete -i 4 da1
gpart delete -i 3 da1
gpart delete -i 2 da1
gpart delete -i 1 da1
gpart destroy da1
dd if=/dev/zero of=/dev/da1 bs=512 count=10


### Create new partitions
gpart create -s GPT ada0
gpart add -s 64k -t freebsd-boot -l boot ada0
gpart add -s 6g -t freebsd-ufs -l root ada0
gpart add -s 6g -t freebsd-swap -l swap ada0
gpart add -s 16g -t freebsd-ufs -l usr ada0
gpart add -s 32g -t freebsd-ufs -l var ada0
gpart add -t freebsd-zfs -l zfs-da0 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0

gpart create -s GPT da1
gpart add -s 64k -t freebsd-boot -l boot-da1 da1
gpart add -s 6g -t freebsd-ufs -l ufs-root-da1 da1
gpart add -s 6g -t freebsd-swap -l swap-da1 da1
gpart add -s 16g -t freebsd-ufs -l ufs-usr-da1 da1
gpart add -s 32g -t freebsd-ufs -l ufs-var-da1 da1
gpart add -t freebsd-zfs -l zfs-da1 da1
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 da1




### Create our RAID
gmirror label mirror-root /dev/gpt/ufs-root-da0
gmirror label mirror-usr /dev/gpt/ufs-usr-da0
gmirror label mirror-var /dev/gpt/ufs-var-da0
gmirror label mirror-swap /dev/gpt/swap-da0

#### Insert companion disk
gmirror insert mirror-root /dev/gpt/ufs-root-da1
gmirror insert mirror-usr /dev/gpt/ufs-usr-da1
gmirror insert mirror-var /dev/gpt/ufs-var-da1
gmirror insert mirror-swap /dev/gpt/swap-da1




### Format filesystems
newfs -U /dev/mirror/mirror-root
newfs -U /dev/mirror/mirror-usr
newfs -U /dev/mirror/mirror-var


### Mount them
mount /dev/mirror/mirror-root /mnt
mkdir /mnt/usr /mnt/var
mount /dev/mirror/mirror-usr /mnt/usr
mount /dev/mirror/mirror-var /mnt/var


### Install OS
cat /cdrom/8.2-RC3/base/base.?? | tar --unlink -xpzf - -C /mnt
cat /cdrom/8.2-RC3/manpages/manpages.?? | tar --unlink -xpzf - -C /mnt
cat /cdrom/8.2-RC3/src/sbin.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/scddl.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/scontrib.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/scrypto.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/setc.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/sgames.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/sgnu.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/sinclude.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/skrb5.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/slib.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/slibexec.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/srelease.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/srescue.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/ssbin.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/ssecure.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/sshare.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/ssys.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/stools.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/subin.?? | tar --unlink -xpzf - -C /mnt/usr/src
cat /cdrom/8.2-RC3/src/susbin.?? | tar --unlink -xpzf - -C /mnt/usr/src
tar --unlink -xpzf /cdrom/8.2-RC3/ports/ports.tgz -C /mnt/usr


### Prepare our configuration files
# Loader
echo 'geom_label_load="YES"' > /mnt/boot/loader.conf
echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf
# fstab
echo '# dev mountpoint fstype options dump pass' > /mnt/etc/fstab
echo '/dev/mirror/mirror-root / ufs rw,noatime 1 1' >> /mnt/etc/fstab
echo '/dev/mirror/mirror-usr /usr ufs rw,noatime 2 2' >> /mnt/etc/fstab
echo '/dev/mirror/mirror-var /var ufs rw,noatime 2 2' >> /mnt/etc/fstab
echo '/dev/mirror/mirror-swap none swap sw 0 0' >> /mnt/etc/fstab
# rc.conf
echo 'keymap="fr.iso.acc"' > /mnt/etc/rc.conf
echo 'hostname="mybsd"' >> /mnt/etc/rc.conf
echo 'ifconfig_bce0="88.190.13.60/24 up"' >> /mnt/etc/rc.conf
echo 'defaultrouter="88.190.13.1"' >> /mnt/etc/rc.conf
echo 'sshd_enable="YES"' >> /mnt/etc/rc.conf
# resolv.conf
echo 'nameserver 88.191.254.60' > /mnt/etc/resolv.conf
# sshd
echo 'PermitRootLogin yes' >> /mnt/etc/ssh/sshd_config
# localtime
cp /mnt/usr/share/zoneinfo/Europe/Paris /mnt/etc/localtime

# Copy our SSH key
mkdir /mnt/root/.ssh
echo 'ssh-rsa yourpublickeyhere' > /mnt/root/.ssh/authorized_keys


### Install kernel, copied from our MFS image
cd /tmp
cp *.ko kernel.gz linker.hints /mnt/boot/kernel/
gunzip /mnt/boot/kernel/kernel.gz