aboutsummaryrefslogtreecommitdiff
path: root/vm/archlinux/armv7/run.sh
blob: c53adb7d3e4881ea99cef9691d72cad702ce2381 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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 \
    "$@"