From 7f6d37650d228f4765fc8b9a0bde2feaaaee4927 Mon Sep 17 00:00:00 2001 From: "bozo.kopic" Date: Sun, 22 Jan 2023 17:42:02 +0100 Subject: . --- vm/alpine/run.sh | 25 ++++++++++ vm/archlinux/armv7/run.sh | 49 ++++++++++++++++++++ vm/debian/armv7/run.sh | 49 ++++++++++++++++++++ vm/openbsd/run.sh | 25 ++++++++++ vm/vm-win11 | 115 ---------------------------------------------- vm/win11/run.sh | 115 ++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 263 insertions(+), 115 deletions(-) create mode 100755 vm/alpine/run.sh create mode 100755 vm/archlinux/armv7/run.sh create mode 100755 vm/debian/armv7/run.sh create mode 100755 vm/openbsd/run.sh delete mode 100755 vm/vm-win11 create mode 100755 vm/win11/run.sh (limited to 'vm') diff --git a/vm/alpine/run.sh b/vm/alpine/run.sh new file mode 100755 index 0000000..8681b9d --- /dev/null +++ b/vm/alpine/run.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e + +cd $(dirname -- "$0") + +if [ ! -f alpine.iso ]; then + curl -L -o alpine.iso https://dl-cdn.alpinelinux.org/alpine/v3.14/releases/x86_64/alpine-virt-3.14.1-x86_64.iso +fi + +if [ ! -f alpine.qcow2 ]; then + qemu-img create -f qcow2 alpine.qcow2 20G +fi + +exec qemu-system-x86_64 \ + -enable-kvm \ + -cpu host \ + -hda alpine.qcow2 \ + -cdrom alpine.iso \ + -m 2G \ + -device e1000,netdev=net0 \ + -netdev user,id=net0 \ + -usb \ + -device usb-tablet \ + "$@" 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 \ + "$@" + + + diff --git a/vm/debian/armv7/run.sh b/vm/debian/armv7/run.sh new file mode 100755 index 0000000..33f3ff3 --- /dev/null +++ b/vm/debian/armv7/run.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +set -e + +cd $(dirname -- "$0") + +ISO_URL=https://cdimage.debian.org/debian-cd/current/armhf/iso-cd/debian-11.6.0-armhf-netinst.iso +KERNEL_URL=http://ftp.us.debian.org/debian/dists/stable/main/installer-armhf/current/images/cdrom/vmlinuz +INITRD_URL=http://ftp.us.debian.org/debian/dists/stable/main/installer-armhf/current/images/cdrom/initrd.gz + +ISO_PATH=$(basename $ISO_URL) +KERNEL_PATH=$(basename $KERNEL_URL) +INITRD_PATH=$(basename $INITRD_URL) + +IMG_PATH=debian.qcow2 + +if [ ! -f $ISO_PATH ]; then + curl -L -o $ISO_PATH $ISO_URL +fi + +if [ ! -f $KERNEL_PATH ]; then + curl -L -o $KERNEL_PATH $KERNEL_URL +fi + +if [ ! -f $INITRD_PATH ]; then + curl -L -o $INITRD_PATH $INITRD_URL +fi + +if [ ! -f $IMG_PATH ]; then + qemu-img create -f qcow2 $IMG_PATH 20G +fi + +exec qemu-system-arm \ + -machine virt \ + -cpu cortex-a15 \ + -smp 4 \ + -m 2G \ + -kernel $KERNEL_PATH \ + -initrd $INITRD_PATH \ + -append "console=ttyAMA0" \ + -drive if=none,file=$ISO_PATH,media=cdrom,id=drive0 \ + -drive if=none,file=$IMG_PATH,media=disk,id=drive1 \ + -netdev user,id=netdev0 \ + -device virtio-scsi-device \ + -device scsi-cd,drive=drive0 \ + -device scsi-hd,drive=drive1 \ + -device virtio-net-device,netdev=netdev0 \ + -nographic \ + "$@" diff --git a/vm/openbsd/run.sh b/vm/openbsd/run.sh new file mode 100755 index 0000000..ac5d7a9 --- /dev/null +++ b/vm/openbsd/run.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e + +cd $(dirname -- "$0") + +if [ ! -f openbsd.iso ]; then + curl -L -o openbsd.iso https://cdn.openbsd.org/pub/OpenBSD/6.9/i386/cd69.iso +fi + +if [ ! -f openbsd.qcow2 ]; then + qemu-img create -f qcow2 openbsd.qcow2 20G +fi + +exec qemu-system-x86_64 \ + -enable-kvm \ + -cpu host \ + -hda openbsd.qcow2 \ + -cdrom openbsd.iso \ + -m 2G \ + -device e1000,netdev=net0 \ + -netdev user,id=net0 \ + -usb \ + -device usb-tablet \ + "$@" diff --git a/vm/vm-win11 b/vm/vm-win11 deleted file mode 100755 index 195bbed..0000000 --- a/vm/vm-win11 +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/sh - -set -e - - -WIN11_ZIP_URL="https://aka.ms/windev_VM_virtualbox" - -ROOT_PATH=$(cd; pwd)/vm/win11 -WIN11_ZIP_PATH=$ROOT_PATH/win11.zip -WIN11_IMG_PATH=$ROOT_PATH/win11.qcow2 -TMP_PATH=$ROOT_PATH/tmp -OVMF_PATH=$ROOT_PATH/OVMF.fd -TPM_PATH=$ROOT_PATH/tpm -INIT_ISO_PATH=$ROOT_PATH/init.iso -SHARE_PATH=$ROOT_PATH/share # \\10.0.2.4\qemu - - -SAVE= -while getopts s flag; do - case $flag in - s) SAVE=1;; - ?) ;; - esac -done - - -mkdir -p $ROOT_PATH $SHARE_PATH - -if [ ! -f $WIN11_ZIP_PATH ]; then - wget --show-progress -q -c -O $WIN11_ZIP_PATH $WIN11_ZIP_URL -fi - -if [ ! -f $WIN11_IMG_PATH ]; then - rm -rf $TMP_PATH - mkdir -p $TMP_PATH - unzip -p $WIN11_ZIP_PATH *.ova | tar -x -C $TMP_PATH - qemu-img convert -p -c -f vmdk -O qcow2 $TMP_PATH/*.vmdk $WIN11_IMG_PATH - rm -rf $TMP_PATH -fi - -if [ ! -f $OVMF_PATH ]; then - cp /usr/share/edk2-ovmf/x64/OVMF.fd $OVMF_PATH -fi - -if [ ! -f $INIT_ISO_PATH ]; then - rm -rf $TMP_PATH - mkdir -p $TMP_PATH - cat > $TMP_PATH/init.bat << EOF -powershell -executionpolicy bypass d:\\_init.ps1 -EOF - cat > $TMP_PATH/_init.ps1 << EOF -Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False -Set-MpPreference -DisableRealtimeMonitoring \$true -Set-Service -Name wuauserv -StartupType Disabled - -\$wc = New-Object System.Net.WebClient -\$wc.DownloadFile("https://www.python.org/ftp/python/3.8.9/python-3.8.9-amd64.exe", - "c:\\\\Users\\\\User\\\\Downloads\\\\python-3.8.9-amd64.exe") -\$wc.DownloadFile("https://www.python.org/ftp/python/3.9.8/python-3.9.8-amd64.exe", - "c:\\\\Users\\\\User\\\\Downloads\\\\python-3.9.8-amd64.exe") -\$wc.DownloadFile("https://repo.msys2.org/distrib/x86_64/msys2-x86_64-20210228.exe", - "c:\\\\Users\\\\User\\\\Downloads\\\\msys2-x86_64-20210228.exe") -\$wc.DownloadFile("https://nodejs.org/dist/v14.16.1/node-v14.16.1-x64.msi", - "c:\\\\Users\\\\User\\\\Downloads\\\\node-v14.16.1-x64.msi") -\$wc.DownloadFile("https://yarnpkg.com/latest.msi", - "c:\\\\Users\\\\User\\\\Downloads\\\\yarn.msi") - -\$env:Path = "C:\\Python39;C:\\Python39\\Scripts;C:\\msys64\\mingw64\\bin;C:\\msys64\\usr\\bin;" + \$env:Path -\$env:Path += ";C:\\nodejs;C:\\Yarn\\bin" -[Environment]::SetEnvironmentVariable( - "Path", \$env:Path, [System.EnvironmentVariableTarget]::Machine) - -cmd /C "c:\\Users\\User\\Downloads\\python-3.8.9-amd64.exe InstallAllUsers=1 TargetDir=c:\\Python38 /passive" -cmd /C "c:\\Users\\User\\Downloads\\python-3.9.8-amd64.exe InstallAllUsers=1 TargetDir=c:\\Python39 /passive" -cmd /C "c:\\Users\\User\\Downloads\\node-v14.16.1-x64.msi INSTALLDIR=C:\\nodejs /passive" -cmd /C "c:\\Users\\User\\Downloads\\yarn.msi INSTALLDIR=c:\\Yarn /passive" - -cmd /C "c:\\Users\\User\\Downloads\\msys2-x86_64-20210228.exe install -c --root c:\\msys64" -cmd.exe /C "pacman -Syu --noconfirm" -cmd.exe /C "pacman -Syu --noconfirm" -cmd.exe /C "pacman -Syu --noconfirm base-devel git mingw-w64-x86_64-toolchain socat" -EOF - mkisofs -J -l -R -V "init" -iso-level 4 -o $INIT_ISO_PATH $TMP_PATH - rm -rf $TMP_PATH -fi - -if [ ! -z $SAVE ]; then - TMP_IMG_PATH=$WIN11_IMG_PATH -else - TMP_IMG_PATH=$WIN11_IMG_PATH.tmp - rm -f $TMP_IMG_PATH - qemu-img create -q -F qcow2 -f qcow2 -b $WIN11_IMG_PATH $TMP_IMG_PATH -fi - -mkdir -p $TPM_PATH -swtpm socket \ - --tpm2 \ - --tpmstate dir=$TPM_PATH \ - --ctrl type=unixio,path=$TPM_PATH/socket & -exec qemu-system-x86_64 \ - -enable-kvm \ - -machine q35 \ - -device intel-iommu \ - -drive file=$OVMF_PATH,if=pflash,format=raw \ - -drive file=$TMP_IMG_PATH,media=disk \ - -drive file=$INIT_ISO_PATH,media=cdrom \ - -chardev socket,id=chrtpm,path=$TPM_PATH/socket \ - -tpmdev emulator,id=tpm0,chardev=chrtpm \ - -device tpm-tis,tpmdev=tpm0 \ - -m 4G \ - -device e1000,netdev=net0 \ - -netdev user,id=net0,smb=$SHARE_PATH \ - -usb \ - -device usb-tablet \ - -rtc base=localtime diff --git a/vm/win11/run.sh b/vm/win11/run.sh new file mode 100755 index 0000000..195bbed --- /dev/null +++ b/vm/win11/run.sh @@ -0,0 +1,115 @@ +#!/bin/sh + +set -e + + +WIN11_ZIP_URL="https://aka.ms/windev_VM_virtualbox" + +ROOT_PATH=$(cd; pwd)/vm/win11 +WIN11_ZIP_PATH=$ROOT_PATH/win11.zip +WIN11_IMG_PATH=$ROOT_PATH/win11.qcow2 +TMP_PATH=$ROOT_PATH/tmp +OVMF_PATH=$ROOT_PATH/OVMF.fd +TPM_PATH=$ROOT_PATH/tpm +INIT_ISO_PATH=$ROOT_PATH/init.iso +SHARE_PATH=$ROOT_PATH/share # \\10.0.2.4\qemu + + +SAVE= +while getopts s flag; do + case $flag in + s) SAVE=1;; + ?) ;; + esac +done + + +mkdir -p $ROOT_PATH $SHARE_PATH + +if [ ! -f $WIN11_ZIP_PATH ]; then + wget --show-progress -q -c -O $WIN11_ZIP_PATH $WIN11_ZIP_URL +fi + +if [ ! -f $WIN11_IMG_PATH ]; then + rm -rf $TMP_PATH + mkdir -p $TMP_PATH + unzip -p $WIN11_ZIP_PATH *.ova | tar -x -C $TMP_PATH + qemu-img convert -p -c -f vmdk -O qcow2 $TMP_PATH/*.vmdk $WIN11_IMG_PATH + rm -rf $TMP_PATH +fi + +if [ ! -f $OVMF_PATH ]; then + cp /usr/share/edk2-ovmf/x64/OVMF.fd $OVMF_PATH +fi + +if [ ! -f $INIT_ISO_PATH ]; then + rm -rf $TMP_PATH + mkdir -p $TMP_PATH + cat > $TMP_PATH/init.bat << EOF +powershell -executionpolicy bypass d:\\_init.ps1 +EOF + cat > $TMP_PATH/_init.ps1 << EOF +Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False +Set-MpPreference -DisableRealtimeMonitoring \$true +Set-Service -Name wuauserv -StartupType Disabled + +\$wc = New-Object System.Net.WebClient +\$wc.DownloadFile("https://www.python.org/ftp/python/3.8.9/python-3.8.9-amd64.exe", + "c:\\\\Users\\\\User\\\\Downloads\\\\python-3.8.9-amd64.exe") +\$wc.DownloadFile("https://www.python.org/ftp/python/3.9.8/python-3.9.8-amd64.exe", + "c:\\\\Users\\\\User\\\\Downloads\\\\python-3.9.8-amd64.exe") +\$wc.DownloadFile("https://repo.msys2.org/distrib/x86_64/msys2-x86_64-20210228.exe", + "c:\\\\Users\\\\User\\\\Downloads\\\\msys2-x86_64-20210228.exe") +\$wc.DownloadFile("https://nodejs.org/dist/v14.16.1/node-v14.16.1-x64.msi", + "c:\\\\Users\\\\User\\\\Downloads\\\\node-v14.16.1-x64.msi") +\$wc.DownloadFile("https://yarnpkg.com/latest.msi", + "c:\\\\Users\\\\User\\\\Downloads\\\\yarn.msi") + +\$env:Path = "C:\\Python39;C:\\Python39\\Scripts;C:\\msys64\\mingw64\\bin;C:\\msys64\\usr\\bin;" + \$env:Path +\$env:Path += ";C:\\nodejs;C:\\Yarn\\bin" +[Environment]::SetEnvironmentVariable( + "Path", \$env:Path, [System.EnvironmentVariableTarget]::Machine) + +cmd /C "c:\\Users\\User\\Downloads\\python-3.8.9-amd64.exe InstallAllUsers=1 TargetDir=c:\\Python38 /passive" +cmd /C "c:\\Users\\User\\Downloads\\python-3.9.8-amd64.exe InstallAllUsers=1 TargetDir=c:\\Python39 /passive" +cmd /C "c:\\Users\\User\\Downloads\\node-v14.16.1-x64.msi INSTALLDIR=C:\\nodejs /passive" +cmd /C "c:\\Users\\User\\Downloads\\yarn.msi INSTALLDIR=c:\\Yarn /passive" + +cmd /C "c:\\Users\\User\\Downloads\\msys2-x86_64-20210228.exe install -c --root c:\\msys64" +cmd.exe /C "pacman -Syu --noconfirm" +cmd.exe /C "pacman -Syu --noconfirm" +cmd.exe /C "pacman -Syu --noconfirm base-devel git mingw-w64-x86_64-toolchain socat" +EOF + mkisofs -J -l -R -V "init" -iso-level 4 -o $INIT_ISO_PATH $TMP_PATH + rm -rf $TMP_PATH +fi + +if [ ! -z $SAVE ]; then + TMP_IMG_PATH=$WIN11_IMG_PATH +else + TMP_IMG_PATH=$WIN11_IMG_PATH.tmp + rm -f $TMP_IMG_PATH + qemu-img create -q -F qcow2 -f qcow2 -b $WIN11_IMG_PATH $TMP_IMG_PATH +fi + +mkdir -p $TPM_PATH +swtpm socket \ + --tpm2 \ + --tpmstate dir=$TPM_PATH \ + --ctrl type=unixio,path=$TPM_PATH/socket & +exec qemu-system-x86_64 \ + -enable-kvm \ + -machine q35 \ + -device intel-iommu \ + -drive file=$OVMF_PATH,if=pflash,format=raw \ + -drive file=$TMP_IMG_PATH,media=disk \ + -drive file=$INIT_ISO_PATH,media=cdrom \ + -chardev socket,id=chrtpm,path=$TPM_PATH/socket \ + -tpmdev emulator,id=tpm0,chardev=chrtpm \ + -device tpm-tis,tpmdev=tpm0 \ + -m 4G \ + -device e1000,netdev=net0 \ + -netdev user,id=net0,smb=$SHARE_PATH \ + -usb \ + -device usb-tablet \ + -rtc base=localtime -- cgit v1.2.3-70-g09d2