1*bb4ee6a4SAndroid Build Coastguard Worker <# 2*bb4ee6a4SAndroid Build Coastguard Worker .Description 3*bb4ee6a4SAndroid Build Coastguard Worker Runs an ubuntu image. The image itself needs to be built on linux as per instructions at 4*bb4ee6a4SAndroid Build Coastguard Worker https://crosvm.dev/book/running_crosvm/example_usage.html#preparing-the-guest-os-image 5*bb4ee6a4SAndroid Build Coastguard Worker 6*bb4ee6a4SAndroid Build Coastguard Worker The console is a pipe at \\.\pipe\crosvm-debug that you can connect to using apps like 7*bb4ee6a4SAndroid Build Coastguard Worker putty. 8*bb4ee6a4SAndroid Build Coastguard Worker .PARAMETER IMAGE_DIR 9*bb4ee6a4SAndroid Build Coastguard Worker Directory where initrd, rootfs and vmlinuz are located. Defaults to user's tmp directory. 10*bb4ee6a4SAndroid Build Coastguard Worker .PARAMETER LOGS_DIR 11*bb4ee6a4SAndroid Build Coastguard Worker Directory where logs will be written to. Defaults to user's tmp directory. 12*bb4ee6a4SAndroid Build Coastguard Worker #> 13*bb4ee6a4SAndroid Build Coastguard Worker param ( 14*bb4ee6a4SAndroid Build Coastguard Worker [Parameter( 15*bb4ee6a4SAndroid Build Coastguard Worker Position = 0 16*bb4ee6a4SAndroid Build Coastguard Worker )] 17*bb4ee6a4SAndroid Build Coastguard Worker [string]$IMAGE_DIR = $Env:TEMP, ## 18*bb4ee6a4SAndroid Build Coastguard Worker [Parameter( 19*bb4ee6a4SAndroid Build Coastguard Worker Position = 1 20*bb4ee6a4SAndroid Build Coastguard Worker )] 21*bb4ee6a4SAndroid Build Coastguard Worker [string]$LOGS_DIR = $Env:TEMP ## 22*bb4ee6a4SAndroid Build Coastguard Worker ) 23*bb4ee6a4SAndroid Build Coastguard Worker 24*bb4ee6a4SAndroid Build Coastguard Worker $VMLINUZ = Join-Path $IMAGE_DIR "vmlinuz" 25*bb4ee6a4SAndroid Build Coastguard Worker $ROOTFS = Join-Path $IMAGE_DIR "rootfs" 26*bb4ee6a4SAndroid Build Coastguard Worker $INITRD = Join-Path $IMAGE_DIR "initrd" 27*bb4ee6a4SAndroid Build Coastguard Worker $SERIAL = "\\.\pipe\crosvm-debug" 28*bb4ee6a4SAndroid Build Coastguard Worker $LOGS_DIR = Join-Path $LOGS_DIR "\" 29*bb4ee6a4SAndroid Build Coastguard Worker 30*bb4ee6a4SAndroid Build Coastguard Worker $PATHS = $IMAGE_DIR, $VMLINUZ, $ROOTFS, $INITRD, $LOGS_DIR 31*bb4ee6a4SAndroid Build Coastguard Worker 32*bb4ee6a4SAndroid Build Coastguard Worker foreach ($path in $PATHS) { 33*bb4ee6a4SAndroid Build Coastguard Worker if (!(Test-Path $path)) { 34*bb4ee6a4SAndroid Build Coastguard Worker throw (New-Object System.IO.FileNotFoundException("Path not found: $path", $path)) 35*bb4ee6a4SAndroid Build Coastguard Worker } 36*bb4ee6a4SAndroid Build Coastguard Worker } 37*bb4ee6a4SAndroid Build Coastguard Worker 38*bb4ee6a4SAndroid Build Coastguard Worker cargo run --features "all-msvc64,whpx" -- ` 39*bb4ee6a4SAndroid Build Coastguard Worker --log-level INFO ` 40*bb4ee6a4SAndroid Build Coastguard Worker run-mp ` 41*bb4ee6a4SAndroid Build Coastguard Worker --logs-directory $LOGS_DIR ` 42*bb4ee6a4SAndroid Build Coastguard Worker --cpus 1 ` 43*bb4ee6a4SAndroid Build Coastguard Worker --mem 4096 ` 44*bb4ee6a4SAndroid Build Coastguard Worker --serial "hardware=serial,type=namedpipe,path=$SERIAL,num=1,console=true" ` 45*bb4ee6a4SAndroid Build Coastguard Worker --params "nopat clocksource=jiffies root=/dev/vda5 loglevel=7 console=/dev/ttyS1 console=/dev/ttyS0" ` 46*bb4ee6a4SAndroid Build Coastguard Worker --host-guid "dontcare" ` 47*bb4ee6a4SAndroid Build Coastguard Worker --rwdisk $ROOTFS ` 48*bb4ee6a4SAndroid Build Coastguard Worker --initrd $INITRD ` 49*bb4ee6a4SAndroid Build Coastguard Worker $VMLINUZ 50