#!/bin/bash set -e # TODO add ssh host key generation to avoid rc script creating too many function usage { echo "${0##*/} " exit 1 } [[ -z $2 ]] && usage guest=$1 vdisk=$2 [[ ! -f network.conf ]] && echo network.conf missing && exit 1 source network.conf [[ -z $kernel ]] && echo \$kernel not defined -- tune network.conf first && exit 1 [[ -z $sets ]] && echo \$sets not defined -- tune network.conf first && exit 1 [[ ! -f $kernel ]] && echo $kernel not found && exit 1 [[ ! -f $sets/base.tar.xz ]] && echo $sets/base.tar.xz not found && exit 1 [[ -n `xl li | grep $guest` ]] && echo $guest is already running && exti 1 [[ -n `mount | grep lala` ]] && echo lala/ already mounted && exit 1 [[ -n `losetup --all` ]] && echo loop device exists && exit 1 echo echo VDISK SETUP echo mkfs.ext2 -O^dir_index,^ext_attr $vdisk echo -n mounting ... mkdir -p lala/ mount -t ext2 $vdisk lala/ && echo done echo echo SYSTEM SETUP echo for set in base comp etc man misc modules text; do echo -n extracting $set ... tar xJph --numeric-owner -f $sets/$set.tar.xz -C lala/ && echo done # tar xzph done; unset set # debug tests #ls -lkF lala/sbin/fsck_ext2fs # NOT 75064 --> 71136 --> 75672 OWD=`pwd` echo -n making device files ... cd lala/dev/ #grep ' -F netbsd' MAKEDEV #grep ' -R"' MAKEDEV #grep ' -r"' MAKEDEV #grep ' -g ' MAKEDEV sed -r 's/ -F netbsd//; s/ -R"/"/; s/ -r"/"/; s/ -g [^ ]+ -u [^ ]+//; ' MAKEDEV > MAKEDEV.linux #diff grep exists non-zero #diff -bu MAKEDEV MAKEDEV.linux #grep ' -F netbsd' MAKEDEV.linux #grep ' -R"' MAKEDEV.linux #grep ' -r"' MAKEDEV.linux #grep ' -g ' MAKEDEV.linux chmod +x MAKEDEV.linux ./MAKEDEV.linux all 2>/dev/null ./MAKEDEV.linux opty && echo done cd $OWD/ unset OWD # no executable bit required on netbsd mv lala/etc/rc.local lala/etc/rc.local.dist cat > lala/etc/rc.local < /.makedev_done && echo done echo -n MAKEDEV opty ... ./MAKEDEV opty && echo done cd / echo OWNERSHIPS FIXED E.G. ls -lkF /dev/cgd0 ls -lkF /dev/altq/altq fi EOF mv -i lala/etc/passwd lala/etc/passwd.dist sed '1s@/bin/sh@/bin/ksh@' lala/etc/passwd.dist > lala/etc/passwd #diff -u lala/etc/passwd.dist lala/etc/passwd mv -i lala/etc/master.passwd lala/etc/master.passwd.dist sed '1s@/bin/sh@/bin/ksh@' lala/etc/master.passwd.dist > lala/etc/master.passwd #diff -u lala/etc/master.passwd.dist lala/etc/master.passwd echo -n writing fstab ... cat > lala/etc/fstab < lala/etc/rc.conf < lala/etc/myname && echo done echo -n $netif ... echo inet $cidr up > lala/etc/ifconfig.$netif && echo done echo -n hosts ... cat > lala/etc/hosts < lala/etc/mygate && echo done echo -n hosts/gw ... cat >> lala/etc/hosts <<-EOF && echo done $gw gw EOF else echo no gateway fi rm -f lala/etc/resolv.conf for ip in $dns; do echo -n nameserver $ip ... cat >> lala/etc/resolv.conf < lala/root/.ssh/authorized_keys < lala/etc/ssh/sshd_config cat >> lala/etc/ssh/sshd_config <> lala/etc/rc.conf && echo done echo echo XEN DOMU SETUP echo echo -n un-mounting ... umount lala/ && echo done rmdir lala/ echo -n guest skeleton ... cat > $guest <