Shemum/shemum

134 lines
2.7 KiB
Text
Raw Permalink Normal View History

2024-09-25 21:03:33 +00:00
#!/usr/bin/env sh
#
# Author: Adrian Erik Hoemann
# Date: 9.18.2024
# Debug mode
# Default: true
DEBUG=true
# Debug mode check
if [ $DEBUG ]; then
set +x
fi
2024-09-25 21:03:33 +00:00
# Arguments
OPTION=$1
OS_NAME=$2
# Defining paths
ROOT_PATH="$HOME/Machines"
2024-09-25 21:03:33 +00:00
ISO_PATH="$ROOT_PATH/$OS_NAME/$OS_NAME.iso"
IMG_PATH="$ROOT_PATH/$OS_NAME/$OS_NAME.img"
2024-11-04 12:55:47 +00:00
# Sources default values
#. ".env"
2024-10-08 10:56:46 +00:00
# Sources virtual machine specific values
#. "$ROOT_PATH/$OS_NAME/.env"
2024-09-25 21:03:33 +00:00
2024-10-31 11:41:40 +00:00
# Functions
# Defines install image source
source() {
while read LINE; do
if [ $LINE == $OS_NAME* ]; then
$OS_NAME=$LINE
fi
done < .sources
}
check() {
if [ -z $OS_NAME ]; then
error "Operating system is not defined"
fi
if [ -z $INSTALL_IMG ]; then
info "$OS_NAME source not set, please update your .sources file"
fi
}
error() {
printf "$@" >&2
exit 1
}
warn() {
printf "$@" >&2
}
info() {
printf "$@" >&1
}
2024-10-31 11:41:40 +00:00
# Virtual machine removal
remove() {
2024-10-31 11:41:40 +00:00
rm -r $ROOT_PATH/$OS_NAME
}
# Virtual machine start without a console
start() {
2024-10-31 11:43:13 +00:00
qemu-system-x86_64 -boot c \
-display none \
-drive file=$IMG_PATH,format=raw \
-m $RAM -smp $CPU
}
2024-10-31 11:41:40 +00:00
# Virtual machine start with a console
console() {
qemu-system-x86_64 -boot c \
-display curses \
-drive file=$IMG_PATH,format=raw \
-m $RAM -smp $CPU
}
2024-10-31 12:01:37 +00:00
# Virtual machine initialization with a console
init() {
def_os_source
2024-10-31 11:56:44 +00:00
mkdir -p "$ROOT_PATH/$OS_NAME"
qemu-img create $IMG_PATH $DISK_SIZE
if [ ! -f $ISO_PATH ] && [ ! -z $INSTALL_IMG ]; then
2024-11-04 13:02:29 +00:00
info "Fetching $OSNAME installer at: $INSTALL_IMG"
2024-10-31 11:56:44 +00:00
curl -o $ISO_PATH $INSTALL_IMG
elif [ ! -z $INSTALL_IMG ]; then
2024-11-04 13:02:29 +00:00
info "Current INSTALL_IMG for $OS_NAME: $ISO_PATH"
else
2024-11-04 13:02:29 +00:00
error "Install image path is missing"
2024-10-31 11:56:44 +00:00
fi
qemu-system-x86_64 -boot d \
-display curses \
-drive file=$ISO_PATH,media=cdrom \
-drive file=$IMG_PATH,format=raw \
-m $RAM -smp $CPU
}
2024-10-31 12:01:37 +00:00
# Display usage
usage() {
2024-10-31 12:01:37 +00:00
printf "Usage: shemum [init] <virtual machine name> <disk size>"
printf " init initialize a virtual machine"
printf " start start a QEMU virtual machine without console output"
printf " console start a QEMU virtual machine with console output"
printf " remove remove virtual machine directory and all it's contents"
}
2024-09-25 21:03:33 +00:00
# Options
case $OPTION in
"init")
2024-11-04 13:02:29 +00:00
init
2024-09-25 21:03:33 +00:00
;;
"console")
2024-11-04 13:02:29 +00:00
console
2024-09-25 21:03:33 +00:00
;;
"start")
2024-11-04 13:02:29 +00:00
start
2024-09-25 21:03:33 +00:00
;;
2024-10-08 10:56:46 +00:00
"remove")
2024-11-04 13:02:29 +00:00
remove
2024-10-08 10:56:46 +00:00
;;
2024-09-25 21:03:33 +00:00
*)
2024-11-04 13:02:29 +00:00
usage
2024-09-25 21:03:33 +00:00
esac