Skip to content

Instantly share code, notes, and snippets.

@isinyaaa
Created May 1, 2023 14:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save isinyaaa/43ad90e5ef582e0a4f2db6dece96c039 to your computer and use it in GitHub Desktop.
Save isinyaaa/43ad90e5ef582e0a4f2db6dece96c039 to your computer and use it in GitHub Desktop.
Script to manage (particularly old) Minix 3 VMs using VirtualBox
#!/usr/bin/env bash
set -e
FILE="$(readlink -f "$0")"
VM_NAME=${2:-minix-312}
MOUNTPOINT=${3:-$HOME/minix}
while [[ $# -gt 0 ]]; do
case "$1" in
run)
# qemu-system-x86_64\
# -rtc base=utc\
# -nic user,model=virtio,hostfwd=tcp::2222-:22\
# -cpu host -m 1G -enable-kvm\
# -drive file=$VM_PATH/minix/minix.img,format=raw,if=virtio\
# -nographic
vboxmanage startvm "$VM_NAME" --type=headless
exit 0
;;
xrun)
vboxmanage startvm "$VM_NAME"
exit 0
;;
manage)
sudo modprobe -v nbd
sudo qemu-nbd -c /dev/nbd0 "$HOME/VirtualBox VMs/$VM_NAME/$VM_NAME.vdi"
sleep 1
sudo mount -o loop -t minix /dev/nbd0p7 "$MOUNTPOINT"
exit 0
;;
unmanage)
sudo umount "$MOUNTPOINT"
sudo qemu-nbd -d /dev/nbd0
sudo modprobe -rv nbd
exit 0
;;
update)
$FILE stop "$VM_NAME" || echo 'machine not running'
$FILE manage "$VM_NAME" "$MOUNTPOINT"
rsync -avzh --progress "$HOME/repos/contrib/minix/" "$MOUNTPOINT/gitsrc"
sleep 1
$FILE unmanage "$VM_NAME" "$MOUNTPOINT"
exit 0
;;
stop)
vboxmanage controlvm "$VM_NAME" poweroff
exit 0
;;
restart)
vboxmanage controlvm "$VM_NAME" reset
exit 0
;;
# mkova)
# (
# set -x
# cd $VM_PATH/minix
# rm -f minix.vmdk
# qemu-img convert -f raw -O vmdk minix-nonet.img minix-disk001.vmdk
# tar cf minix.ova minix{-disk001.vmdk,.ovf}
# )
# shift
# ;;
*)
echo "Usage: $0 {run|xrun|manage|unmanage|stop|restart}"
exit 1
;;
esac
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment