MICROVM revision 1.1
11.1Simil# $NetBSD: MICROVM,v 1.1 2025/02/18 10:16:03 imil Exp $
21.1Simil#
31.1Simil# MICROVM kernel configuration, for use with Qemu microvm machine type
41.1Simil# or Firecracker.
51.1Simil# Stripped-down configuration with no PCI, use VirtIO over MMIO virtual
61.1Simil# bus instead. ACPI is disabled as Firecracker doesn't support it,
71.1Simil# use legacy MP tables instead.
81.1Simil#
91.1Simil# Exemple qemu usage on a Linux host to boot a NetBSD guest:
101.1Simil#
111.1Simil# qemu-system-x86_64							\
121.1Simil# 	-M microvm,x-option-roms=off,rtc=on,acpi=off,pic=off,accel=kvm	\
131.1Simil# 	-m 256 -cpu host -kernel ${KERNEL} 				\
141.1Simil# 	-append "root=ld0a console=com rw -z"				\
151.1Simil# 	-display none -device virtio-blk-device,drive=hd0		\
161.1Simil# 	-drive file=${IMG},format=raw,id=hd0				\
171.1Simil# 	-device virtio-net-device,netdev=net0 				\
181.1Simil# 	-netdev user,id=net0,ipv6=off,hostfwd=::2200-:22		\
191.1Simil# 	-global virtio-mmio.force-legacy=false -serial stdio
201.1Simil
211.1Similmachine i386 x86 xen
221.1Similinclude         "conf/std"      # MI standard options
231.1Similinclude         "arch/xen/conf/std.xenversion"
241.1Simil
251.1Similoptions         CPU_IN_CKSUM
261.1Similoptions         EXEC_ELF32      # exec ELF binaries
271.1Similoptions         EXEC_SCRIPT     # exec #! scripts
281.1Similoptions         MTRR
291.1Similoptions         MULTIPROCESSOR
301.1Simil
311.1Similoptions         CHILD_MAX=1024  # 160 is too few
321.1Similoptions         OPEN_MAX=1024   # 128 is too few
331.1Simil
341.1Similmainbus0 at root
351.1Similcpu* at mainbus?
361.1Similioapic* at mainbus? apid ?
371.1Simil
381.1Similoptions 	INCLUDE_CONFIG_FILE	# embed config file in kernel binary
391.1Similmaxusers	8		# estimated number of users
401.1Simil
411.1Similoptions 	INSECURE	# disable kernel security levels - X needs this
421.1Simil
431.1Similoptions 	RTC_OFFSET=0	# hardware clock is this many mins. west of GMT
441.1Simil
451.1Similoptions 	PIPE_SOCKETPAIR	# smaller, but slower pipe(2)
461.1Simil
471.1Simil# Xen PV support for PVH and HVM guests, needed for PVH boot
481.1Similoptions 	XENPVHVM
491.1Similoptions 	XEN
501.1Similhypervisor*	at mainbus?		# Xen hypervisor
511.1Similxenbus*	 	at hypervisor?		# Xen virtual bus
521.1Similxencons*	at hypervisor?		# Xen virtual console
531.1Simil
541.1Simil# Include NetBSD 10 compatibility
551.1Similoptions		COMPAT_100
561.1Simil#
571.1Simil# Because gcc omits the frame pointer for any -O level, the line below
581.1Simil# is needed to make backtraces in DDB work.
591.1Simil#
601.1Similmakeoptions	COPTS="-O2 -fno-omit-frame-pointer"
611.1Simil
621.1Simil# File systems
631.1Simil#include "conf/filesystems.config"
641.1Similfile-system FFS
651.1Similfile-system EXT2FS
661.1Similfile-system KERNFS
671.1Similfile-system MFS
681.1Similfile-system TMPFS
691.1Similfile-system PTYFS
701.1Similfile-system MSDOSFS
711.1Similfile-system PROCFS
721.1Simil
731.1Similoptions		DKWEDGE_AUTODISCOVER
741.1Similoptions		DKWEDGE_METHOD_GPT
751.1Simil# File system options
761.1Simil# ffs
771.1Similoptions 	FFS_NO_SNAPSHOT	# No FFS snapshot support
781.1Similoptions 	WAPBL		# File system journaling support
791.1Simil
801.1Simil# Networking options
811.1Simil#options 	GATEWAY		# packet forwarding
821.1Similoptions 	INET		# IP + ICMP + TCP + UDP
831.1Similoptions 	INET6		# IPV6
841.1Simil
851.1Simil# Kernel root file system and dump configuration.
861.1Similconfig		netbsd	root on ? type ?
871.1Simil
881.1Simil#
891.1Simil# Device configuration
901.1Simil#
911.1Simil
921.1Simil# ACPI will be used if present. If not it will fall back to MPBIOS
931.1Similoptions 	MPBIOS			# configure CPUs and APICs using MPBIOS
941.1Simil# Provide bug-for-bug compatibility with Linux in MP Table searching
951.1Simil# and parsing.  Firecracker relies on these bugs.
961.1Similoptions		MPTABLE_LINUX_BUG_COMPAT
971.1Simil
981.1Simil#pci*	at mainbus? bus ?
991.1Simil#acpi0	at mainbus0
1001.1Simil
1011.1Simil# ISA bus support
1021.1Similisa0	at mainbus?
1031.1Simil
1041.1Simil# ISA serial interfaces
1051.1Similcom0	at isa? port 0x3f8 irq 4	# Standard PC serial ports
1061.1Simil
1071.1Simil# Virtual bus for non-PCI devices
1081.1Similpv* at pvbus?
1091.1Simil
1101.1Simil## Virtio devices
1111.1Simil# Use MMIO by default
1121.1Similvirtio* at pv?
1131.1Simil#virtio* at acpi?
1141.1Simil#virtio* at pci? dev ? function ?	# Virtio PCI device
1151.1Simil#viomb*	at virtio?			# Virtio memory balloon device
1161.1Simil
1171.1Similld*	at virtio?			# Virtio disk device
1181.1Similvioif*	at virtio?			# Virtio network device
1191.1Similviornd* at virtio?			# Virtio entropy device
1201.1Similviocon* at virtio?
1211.1Simil
1221.1Similvio9p*	at virtio?			# Virtio 9P device
1231.1Simil#vioscsi* at virtio?
1241.1Simil#scsibus* at vioscsi?
1251.1Simil
1261.1Similpseudo-device	md			# memory disk device (ramdisk)
1271.1Simil#options 	MEMORY_DISK_HOOKS	# enable md specific hooks
1281.1Simil#options 	MEMORY_DISK_DYNAMIC	# enable dynamic resizing
1291.1Simil#
1301.1Similpseudo-device	vnd			# disk-like interface to files
1311.1Simil#options 	VND_COMPRESSION		# compressed vnd(4)
1321.1Simil
1331.1Simil## network pseudo-devices
1341.1Similpseudo-device	bpfilter		# Berkeley packet filter
1351.1Similpseudo-device	loop			# network loopback
1361.1Simil
1371.1Simil## miscellaneous pseudo-devices
1381.1Similpseudo-device	pty			# pseudo-terminals
1391.1Simil# userland interface to drivers, including autoconf and properties retrieval
1401.1Similpseudo-device	drvctl
1411.1Simil
1421.1Similfile-system	PUFFS
1431.1Similpseudo-device	putter
144