WIP:aryan/build #2
29
build.py
29
build.py
|
@ -1,16 +1,21 @@
|
||||||
from subprocess import Popen, PIPE
|
from subprocess import Popen, PIPE
|
||||||
import os
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
def vm_start(nographic=False):
|
||||||
|
home = Path.home()
|
||||||
user = os.getlogin()
|
user = os.getlogin()
|
||||||
image = f"/home/{user}/safe/debian.qcow2"
|
image_src = "var/lib/debian.qcow2"
|
||||||
|
vm_storage_location = f"/home/arvp/virtual_machines/{user}.qcow2"
|
||||||
|
image_dest = f"{home}/debian.qcow2"
|
||||||
|
|
||||||
initialize = [
|
initialize = [
|
||||||
"qemu-system-x86_64",
|
"qemu-system-x86_64",
|
||||||
"-enable-kvm",
|
"-enable-kvm",
|
||||||
"-m", "2G", # ram allocation
|
"-m", "2G", # ram allocation
|
||||||
"-nic", "user,hostfwd=tcp::5555-:22", #forward port 5555 in host to port 22 in vm
|
"-nic", "user,hostfwd=tcp::5555-:22", #forward port 5555 in host to port 22 in vm
|
||||||
"-drive", "file=%s,media=disk,if=virtio" % image,
|
"-drive", "file=%s,media=disk,if=virtio" % image_dest,
|
||||||
|
|
||||||
# "-nographic",
|
# "-nographic",
|
||||||
# "-serial", "mon:stdio",
|
# "-serial", "mon:stdio",
|
||||||
|
@ -19,6 +24,22 @@ initialize = [
|
||||||
"-display", "sdl",
|
"-display", "sdl",
|
||||||
|
|||||||
]
|
]
|
||||||
|
|
||||||
#Popen(["cp", "/home/chopper/safe/debian.qcow2", f"/home/{user}/nnnnndebian.qcow2"]) #copy the base image to a directory with everyones virtual machines.
|
if nographic==True:
|
||||||
|
initialize.append("-nographic")
|
||||||
|
initialize.append("-serial")
|
||||||
|
initialize.append("mon:stdio")
|
||||||
|
|
||||||
|
#copy the base image to a directory with everyones virtual machines. -n should not overwrite any existing vms.
|
||||||
|
#subprocess.run(["cp", "-n", image_src, vm_storage_location])
|
||||||
Popen(initialize)
|
Popen(initialize)
|
||||||
akemi
commented
You'll want some sort of error handling here. What if the vm fails to start? Check the returncode and such on a You'll want some sort of error handling here. What if the vm fails to start? Check the returncode and such on a `.communicate()`
|
|||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="ARVP Onboarding Virtual Machine Launcher! Don't use --nographic if you are in a tmux session. it might explode :3")
|
||||||
|
parser.add_argument(
|
||||||
|
"--nographic",
|
||||||
|
action="store_true",
|
||||||
|
help="Run QEMU in nographic mode (runs the VM embedded in your terminal instead of opening a new window)",)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
vm_start(nographic=args.nographic)
|
||||||
|
|
Loading…
Reference in a new issue
Say I enable
nographic
. It seems like this display arg will conflict. Instead, it'd be better for these to be the else branch on the conditional below