param( [string]$OutDir = ".local/tmp/tc-out", [int]$Port = 18080, [ValidateSet("user", "bridge", "iso")] [string]$Mode = "user", [string]$Bridge = "br0" ) $qemu = Get-Command qemu-system-x86_64 -ErrorAction SilentlyContinue if (-not $qemu) { $qemu = "C:\Program Files\qemu\qemu-system-x86_64.exe" } else { $qemu = $qemu.Source } $argsList = @("-m", "512M", "-smp", "2", "-nographic") if ($Mode -eq "iso") { $argsList += @("-drive", "file=$OutDir\tinycore-sqlite-wasm.iso,format=raw,if=virtio") $argsList += @("-netdev", "user,id=net0,hostfwd=tcp:127.0.0.1:$Port-:8080") } elseif ($Mode -eq "bridge") { $argsList += @("-kernel", "$OutDir\vmlinuz64", "-initrd", "$OutDir\tinycore-sqlite-wasm.gz", "-append", "console=ttyS0,115200 loglevel=3") $argsList += @("-netdev", "bridge,id=net0,br=$Bridge") } else { $argsList += @("-kernel", "$OutDir\vmlinuz64", "-initrd", "$OutDir\tinycore-sqlite-wasm.gz", "-append", "console=ttyS0,115200 loglevel=3") $argsList += @("-netdev", "user,id=net0,hostfwd=tcp:127.0.0.1:$Port-:8080") } $argsList += @("-device", "virtio-net-pci,netdev=net0") & $qemu @argsList