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