aboutsummaryrefslogtreecommitdiff
path: root/vm/archlinux/armv7/run.sh
diff options
context:
space:
mode:
authorbozo.kopic <bozo@kopic.xyz>2023-01-22 17:42:02 +0100
committerbozo.kopic <bozo@kopic.xyz>2023-01-22 17:42:02 +0100
commit7f6d37650d228f4765fc8b9a0bde2feaaaee4927 (patch)
tree247f5575d2bd2db8db9723d353d830dc68fcbb6d /vm/archlinux/armv7/run.sh
parent438409775af7a475fb1db1256994bab2040d99e1 (diff)
.
Diffstat (limited to 'vm/archlinux/armv7/run.sh')
-rwxr-xr-xvm/archlinux/armv7/run.sh49
1 files changed, 49 insertions, 0 deletions
diff --git a/vm/archlinux/armv7/run.sh b/vm/archlinux/armv7/run.sh
new file mode 100755
index 0000000..c53adb7
--- /dev/null
+++ b/vm/archlinux/armv7/run.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+set -e
+
+cd $(dirname -- "$0")
+
+ROOT_URL=http://os.archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz
+IMG_PATH=archlinuxarm.img
+KERNEL_PATH=boot/zImage
+INITRAMFS_PATH=boot/initramfs-linux.img
+
+ROOT_PATH=$(basename $ROOT_URL)
+
+if [ ! -f $ROOT_PATH ]; then
+ curl -L -o $ROOT_PATH $ROOT_URL
+fi
+
+if [ ! \( \( -f $KERNEL_PATH \) -a \
+ \( -f $INITRAMFS_PATH \) \) ]; then
+ bsdtar -xf $ROOT_PATH $KERNEL_PATH $INITRAMFS_PATH
+fi
+
+if [ ! -f $IMG_PATH ]; then
+ truncate -s 2G $IMG_PATH
+ mkfs.ext4 -q $IMG_PATH
+ mkdir -p mnt
+ doas mount -o loop $IMG_PATH mnt
+ doas bsdtar -xpf $ROOT_PATH -C mnt
+ doas umount mnt
+ rmdir mnt
+fi
+
+exec qemu-system-arm \
+ -machine virt \
+ -cpu cortex-a15 \
+ -m 2G \
+ -kernel $KERNEL_PATH \
+ -initrd $INITRAMFS_PATH \
+ -append "root=/dev/sda rw" \
+ -drive if=none,file=$IMG_PATH,format=raw,id=drive0 \
+ -netdev user,id=netdev0 \
+ -device virtio-scsi-pci,id=scsi \
+ -device virtio-blk-pci,drive=drive0 \
+ -device virtio-net-pci,netdev=netdev0 \
+ -nographic \
+ "$@"
+
+
+