#!/bin/bash set -o errexit mode=$1 shift || mode="no_action" ROOT=../.. IMAGE=$( readlink -f $ROOT/minix_x86.img ) DISK=$( readlink -f $ROOT/minix_x86.disk ) RC=$( readlink -f $ROOT/minix_x86.rc ) HYPER=${HYPER:-} DISK_SIZE=${DISK_SIZE:-1024} DISK_MNT=${DISK_MNT:-/media/minix-disk} function rc_create { cat < /dev/null || true sudo mount -o loop $DISK $mnt } function disk_umount { echo "* Unmounting ${DISK}..." sudo umount $DISK } function disk_build { local size=$1 local tmp_mnt=$( mktemp -d /tmp/clientctl-XXXXX ) echo "* Building ${size} MB disk image..." dd if=/dev/zero of=$DISK bs=1M count=$size mkfs -t ext2 -i 4096 -b 4096 -F $DISK echo "* Setting up /ext/etc/rc file executed at startup..." rc_create > $RC disk_mount $tmp_mnt [ -d $tmp_mnt/etc ] || mkdir -p $tmp_mnt/etc rc_ext_default_create > $tmp_mnt/etc/rc disk_umount rm -rf $tmp_mnt } case "$mode" in 'buildimage') (cd $ROOT && CREATE_IMAGE_ONLY=1 releasetools/x86_hdimage.sh) ;; 'builddisk') rm -f $DISK disk_build $DISK_SIZE ;; 'mountdisk') disk_mount $DISK_MNT ;; 'umountdisk') disk_umount ;; 'run') if [ "$HYPER" == "" ]; then if which kvm2 > /dev/null; then HYPER=kvm elif [ -e /dev/kvm ]; then HYPER="qemu-system-i386 --enable-kvm" else HYPER=qemu-system-i386 fi fi opts="-hda $IMAGE" [ ! -f $DISK ] || opts="$opts -hdb $DISK" (cd ../../../obj.i386/destdir.i386/multiboot && $HYPER -nographic -kernel kernel -append "console=tty00 rootdevname=c0d0p1" -initrd "mod01_ds,mod02_rs,mod03_pm,mod04_sched,mod05_vfs,mod06_memory,mod07_tty,mod08_mfs,mod09_vm,mod10_pfs,mod11_init" $opts) ;; *) echo "Invalid action: $mode" exit 1 ;; esac