#!/bin/execlineb -WS2 # SPDX-License-Identifier: EUPL-1.2+ # SPDX-FileCopyrightText: 2023-2024 Alyssa Ross cd $2 elglob -w0 names * forx -po0 -E name { $names } backtick -E id { backtick -E dir { mktemp -d /run/vm/by-id/XXXXXX } basename -- $dir } if { useradd -P /run -Urd / -s /bin/nologin gpu-${id} } if { useradd -P /run -Urd / -s /bin/nologin -G tty,vmm vmm-${id} } if { useradd -P /run -Urd / -s /bin/nologin xdp-spectrum-${id} } if { mkdir /run/vsock/${id} } if { chown vmm-${id} /run/vm/by-id/${id} /run/vsock/${id} } if { ln -s -- /run/vm/by-id/${id} /run/vm/by-name/${1}.${name} } if { ln -s -- ${2}/${name} /run/vm/by-id/${id}/config } if { ln -s -- /run/service/vmm/instance/${id} /run/vm/by-id/${id}/service } if { create-vm-dependencies $id } if { case $# { 3 { s6-envuidgid fs s6-applyuidgid -Uzu 0 nsenter --preserve-credentials -S0 --mount=/run/vm/by-id/${id}/ns/mnt --user=/run/vm/by-id/${id}/ns/user if { mkdir -p -- ${3}/${name} } mount --bind -- ${3}/${name} /run/fs/${id}/disk } } } s6-instance-create -- /run/service/vmm $id