diff options
author | Alyssa Ross <hi@alyssa.is> | 2022-10-10 23:28:46 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-02-26 19:12:43 +0000 |
commit | bf36d81385314ba454125c9c6909a6d3cf70fca9 (patch) | |
tree | 8c08afd17d495e3b5925028f32e818b390160b2e | |
parent | bdbc835e57c1d287bfb7596b8cfaa61986451d30 (diff) | |
download | spectrum-bf36d81385314ba454125c9c6909a6d3cf70fca9.tar spectrum-bf36d81385314ba454125c9c6909a6d3cf70fca9.tar.gz spectrum-bf36d81385314ba454125c9c6909a6d3cf70fca9.tar.bz2 spectrum-bf36d81385314ba454125c9c6909a6d3cf70fca9.tar.lz spectrum-bf36d81385314ba454125c9c6909a6d3cf70fca9.tar.xz spectrum-bf36d81385314ba454125c9c6909a6d3cf70fca9.tar.zst spectrum-bf36d81385314ba454125c9c6909a6d3cf70fca9.zip |
img/app: add support for testing virtiofs
Signed-off-by: Alyssa Ross <hi@alyssa.is> Message-Id: <20221010232909.1953738-7-hi@alyssa.is>
-rw-r--r-- | .gitignore | 5 | ||||
-rw-r--r-- | img/app/Makefile | 16 | ||||
-rw-r--r-- | img/app/shell.nix | 6 | ||||
-rw-r--r-- | lib/common.mk | 4 |
4 files changed, 26 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore index a97f309..802df73 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,10 @@ # SPDX-License-Identifier: CC0-1.0 -# SPDX-FileCopyrightText: 2021 Alyssa Ross <hi@alyssa.is> +# SPDX-FileCopyrightText: 2021-2022 Alyssa Ross <hi@alyssa.is> /config.nix build/ result result-* + +# s6-ipcserver-socketbinder creates lockfiles for sockets. +*.sock.lock diff --git a/img/app/Makefile b/img/app/Makefile index 9649403..b697135 100644 --- a/img/app/Makefile +++ b/img/app/Makefile @@ -82,25 +82,35 @@ build/etc/s6-rc: $(VM_S6_RC_FILES) s6-rc-compile $@ $$dir; \ exit=$$?; rm -r $$dir; exit $$exit -run-qemu: build/host/appvm/blk/root.img +start-virtiofsd: + $(S6_IPCSERVER_SOCKETBINDER) -B virtiofsd.sock \ + $(BACKGROUND) $(VIRTIOFSD) --fd 0 --shared-dir . "" +.PHONY: start-virtiofsd + +run-qemu: build/host/appvm/blk/root.img start-virtiofsd $(QEMU_KVM) -m 128 -cpu host -machine q35,kernel=$(KERNEL) -vga none \ -drive file=build/host/appvm/blk/root.img,if=virtio,format=raw,readonly=on \ -drive file=$(RUN_IMG),if=virtio,format=raw,readonly=on \ -append "console=ttyS0 root=PARTLABEL=root" \ -netdev user,id=net0 \ -device virtio-net,netdev=net0,mac=0A:B3:EC:00:00:00 \ + -chardev socket,id=virtiofsd,path=virtiofsd.sock \ + -device vhost-user-fs-pci,chardev=virtiofsd,tag=virtiofs0 \ + -object memory-backend-memfd,id=mem,size=128M,share=on \ + -numa node,memdev=mem \ -chardev vc,id=virtiocon0 \ -device virtio-serial-pci \ -device virtconsole,chardev=virtiocon0 .PHONY: run-qemu -run-cloud-hypervisor: build/host/appvm/blk/root.img +run-cloud-hypervisor: build/host/appvm/blk/root.img start-virtiofsd $(CLOUD_HYPERVISOR) \ --api-socket path=vmm.sock \ - --memory size=128M \ + --memory size=128M,shared=on \ --disk path=build/host/appvm/blk/root.img,readonly=on \ path=$(RUN_IMG),readonly=on \ --net tap=tap0,mac=0A:B3:EC:00:00:00 \ + --fs tag=virtiofs0,socket=virtiofsd.sock \ --kernel $(KERNEL) \ --cmdline "console=ttyS0 root=PARTLABEL=root" \ --console tty \ diff --git a/img/app/shell.nix b/img/app/shell.nix index 9fe6031..6952a26 100644 --- a/img/app/shell.nix +++ b/img/app/shell.nix @@ -11,7 +11,11 @@ with config.pkgs; { nativeBuildInputs = nativeBuildInputs ++ [ - cloud-hypervisor jq qemu_kvm reuse + # Both QEMU and virtiofsd come with a virtiofsd executable, + # so we have to list virtiofsd first. + virtiofsd + + cloud-hypervisor execline jq qemu_kvm reuse s6 ]; KERNEL = "${passthru.kernel.dev}/vmlinux"; diff --git a/lib/common.mk b/lib/common.mk index efa04a0..61d5105 100644 --- a/lib/common.mk +++ b/lib/common.mk @@ -8,6 +8,8 @@ # QEMU_KVM = qemu-system-x86_64 -enable-kvm. QEMU_KVM = qemu-kvm +BACKGROUND = background +CLOUD_HYPERVISOR = cloud-hypervisor CLOUD_HYPERVISOR = cloud-hypervisor CPIO = cpio CPIOFLAGS = --reproducible -R +0:+0 -H newc @@ -15,10 +17,12 @@ MCOPY = mcopy MKFS_FAT = mkfs.fat MMD = mmd OBJCOPY = objcopy +S6_IPCSERVER_SOCKETBINDER = s6-ipcserver-socketbinder TAR = tar TAR2EXT4 = tar2ext4 TRUNCATE = truncate VERITYSETUP = veritysetup +VIRTIOFSD = virtiofsd .SUFFIXES: .ext4 .tar .tar.ext4: |