xref: /netbsd-src/sys/arch/amd64/conf/MICROVM (revision 07cde61b0954e7b067cfcdae2986752feb525c64)
1# $NetBSD: MICROVM,v 1.1 2025/01/15 13:16:22 imil Exp $
2#
3# MICROVM kernel configuration, for use with Qemu microvm machine type
4# or Firecracker.
5# Stripped-down configuration with no PCI, use VirtIO over MMIO virtual
6# bus instead. ACPI is disabled as Firecracker doesn't support it,
7# use legacy MP tables instead.
8#
9# Exemple qemu usage on a Linux host to boot a NetBSD guest:
10#
11# qemu-system-x86_64							\
12# 	-M microvm,x-option-roms=off,rtc=on,acpi=off,pic=off,accel=kvm	\
13# 	-m 256 -cpu host -kernel ${KERNEL} 				\
14# 	-append "root=ld0a console=com rw -z"				\
15# 	-display none -device virtio-blk-device,drive=hd0		\
16# 	-drive file=${IMG},format=raw,id=hd0				\
17# 	-device virtio-net-device,netdev=net0 				\
18# 	-netdev user,id=net0,ipv6=off,hostfwd=::2200-:22		\
19# 	-global virtio-mmio.force-legacy=false -serial stdio
20
21machine amd64 x86 xen
22include         "conf/std"      # MI standard options
23include         "arch/xen/conf/std.xenversion"
24
25options         CPU_IN_CKSUM
26options         EXEC_ELF64      # exec ELF binaries
27options         EXEC_SCRIPT     # exec #! scripts
28options         MTRR
29options         MULTIPROCESSOR
30
31options         CHILD_MAX=1024  # 160 is too few
32options         OPEN_MAX=1024   # 128 is too few
33
34mainbus0 at root
35cpu* at mainbus?
36ioapic* at mainbus? apid ?
37
38options 	INCLUDE_CONFIG_FILE	# embed config file in kernel binary
39maxusers	8		# estimated number of users
40
41options 	INSECURE	# disable kernel security levels - X needs this
42
43options 	RTC_OFFSET=0	# hardware clock is this many mins. west of GMT
44
45options 	PIPE_SOCKETPAIR	# smaller, but slower pipe(2)
46
47# Xen PV support for PVH and HVM guests, needed for PVH boot
48options 	XENPVHVM
49options 	XEN
50hypervisor*	at mainbus?		# Xen hypervisor
51xenbus*	 	at hypervisor?		# Xen virtual bus
52xencons*	at hypervisor?		# Xen virtual console
53
54# Include NetBSD 10 compatibility
55options		COMPAT_100
56#
57# Because gcc omits the frame pointer for any -O level, the line below
58# is needed to make backtraces in DDB work.
59#
60makeoptions	COPTS="-O2 -fno-omit-frame-pointer"
61
62# File systems
63#include "conf/filesystems.config"
64file-system FFS
65file-system EXT2FS
66file-system KERNFS
67file-system MFS
68file-system TMPFS
69file-system PTYFS
70file-system MSDOSFS
71file-system PROCFS
72
73options		DKWEDGE_AUTODISCOVER
74options		DKWEDGE_METHOD_GPT
75# File system options
76# ffs
77options 	FFS_NO_SNAPSHOT	# No FFS snapshot support
78options 	WAPBL		# File system journaling support
79
80# Networking options
81#options 	GATEWAY		# packet forwarding
82options 	INET		# IP + ICMP + TCP + UDP
83options 	INET6		# IPV6
84
85# Kernel root file system and dump configuration.
86config		netbsd	root on ? type ?
87
88#
89# Device configuration
90#
91
92# ACPI will be used if present. If not it will fall back to MPBIOS
93options 	MPBIOS			# configure CPUs and APICs using MPBIOS
94# Provide bug-for-bug compatibility with Linux in MP Table searching
95# and parsing.  Firecracker relies on these bugs.
96options		MPTABLE_LINUX_BUG_COMPAT
97
98#pci*	at mainbus? bus ?
99#acpi0	at mainbus0
100
101# ISA bus support
102isa0	at mainbus?
103
104# ISA serial interfaces
105com0	at isa? port 0x3f8 irq 4	# Standard PC serial ports
106
107# Virtual bus for non-PCI devices
108pv* at pvbus?
109
110## Virtio devices
111# Use MMIO by default
112virtio* at pv?
113#virtio* at acpi?
114#virtio* at pci? dev ? function ?	# Virtio PCI device
115#viomb*	at virtio?			# Virtio memory balloon device
116
117ld*	at virtio?			# Virtio disk device
118vioif*	at virtio?			# Virtio network device
119viornd* at virtio?			# Virtio entropy device
120viocon* at virtio?
121
122vio9p*	at virtio?			# Virtio 9P device
123#vioscsi* at virtio?
124#scsibus* at vioscsi?
125
126pseudo-device	md			# memory disk device (ramdisk)
127#options 	MEMORY_DISK_HOOKS	# enable md specific hooks
128#options 	MEMORY_DISK_DYNAMIC	# enable dynamic resizing
129#
130pseudo-device	vnd			# disk-like interface to files
131#options 	VND_COMPRESSION		# compressed vnd(4)
132
133## network pseudo-devices
134pseudo-device	bpfilter		# Berkeley packet filter
135pseudo-device	loop			# network loopback
136
137## miscellaneous pseudo-devices
138pseudo-device	pty			# pseudo-terminals
139# userland interface to drivers, including autoconf and properties retrieval
140pseudo-device	drvctl
141
142file-system	PUFFS
143pseudo-device	putter
144