├── .gitignore ├── LICENSE ├── README.md ├── aarch64 ├── install.sh └── run.sh └── x86_64 ├── install.sh └── run.sh /.gitignore: -------------------------------------------------------------------------------- 1 | *.iso 2 | *.qcow2 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2025 Alexey Kutepov 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Wisp 2 | 3 | Wisp is a set of simple scripts for setting up small QEMU-based Virtual Machines. (Because I'm an old boomer who hates Docker. (don't @ me)) 4 | 5 | # Quick Start 6 | 7 | ```console 8 | $ ./$ARCH/install.sh arch-btw-$ARCH.iso urmom.qcow2 9 | $ ./$ARCH/run.sh urmom.qcow2 10022 10 | $ ssh user@localhost -p10022 11 | ``` 12 | 13 | So far `$ARCH`-s we support are: 14 | - [x86_64](./x86_64/) 15 | - [aarch64](./aarch64/) 16 | -------------------------------------------------------------------------------- /aarch64/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -xe 4 | 5 | ISO_PATH="$1" 6 | QCOW2_IMAGE="$2" 7 | 8 | # TODO: check if the user didn't provide enough arguments 9 | 10 | qemu-img create -f qcow2 "$QCOW2_IMAGE" 20G 11 | qemu-system-aarch64 \ 12 | -cpu cortex-a53 -smp cores=4 \ 13 | -nographic \ 14 | -M virt -m 4096 \ 15 | -bios /usr/share/qemu/edk2-aarch64-code.fd \ 16 | -drive format=qcow2,file="$QCOW2_IMAGE" \ 17 | -device ramfb \ 18 | -cdrom "$ISO_PATH" \ 19 | -nic user,model=virtio \ 20 | -rtc base=utc,clock=host 21 | -------------------------------------------------------------------------------- /aarch64/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -xe 4 | 5 | QCOW2_IMAGE="$1" 6 | SSH_PORT="$2" 7 | 8 | # TODO: check if the user didn't provide enough arguments 9 | 10 | qemu-system-aarch64 \ 11 | -cpu cortex-a53 -smp cores=4 \ 12 | -nographic \ 13 | -M virt -m 4096 \ 14 | -bios /usr/share/qemu/edk2-aarch64-code.fd \ 15 | -drive format=qcow2,file="$QCOW2_IMAGE" \ 16 | -device ramfb \ 17 | -device e1000,netdev=net0 \ 18 | -netdev user,id=net0,hostfwd=tcp::"$SSH_PORT"-:22 \ 19 | -rtc base=utc,clock=host 20 | -------------------------------------------------------------------------------- /x86_64/install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -xe 4 | 5 | ISO_PATH="$1" 6 | QCOW2_IMAGE="$2" 7 | 8 | # TODO: check if the user didn't provide enough arguments 9 | 10 | qemu-img create -f qcow2 "$QCOW2_IMAGE" 20G 11 | qemu-system-x86_64 -enable-kvm \ 12 | -m 4096 \ 13 | -cdrom "$ISO_PATH" \ 14 | -hda "$QCOW2_IMAGE" \ 15 | -boot d 16 | -------------------------------------------------------------------------------- /x86_64/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -xe 4 | 5 | QCOW2_IMAGE="$1" 6 | SSH_PORT="$2" 7 | 8 | # TODO: check if the user didn't provide enough arguments 9 | 10 | qemu-system-x86_64 -enable-kvm \ 11 | -m 4096 \ 12 | -hda "$QCOW2_IMAGE" \ 13 | -netdev user,id=net0,hostfwd=tcp::"$SSH_PORT"-:22 \ 14 | -device e1000,netdev=net0 \ 15 | -nographic 16 | --------------------------------------------------------------------------------