2 .\" Copyright (c) 2003, 2004, 2005, 2006, 2007
3 .\" The DragonFly Project. All rights reserved.
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\" notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\" notice, this list of conditions and the following disclaimer in
13 .\" the documentation and/or other materials provided with the
15 .\" 3. Neither the name of The DragonFly Project nor the names of its
16 .\" contributors may be used to endorse or promote products derived
17 .\" from this software without specific, prior written permission.
19 .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 .\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22 .\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23 .\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24 .\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
25 .\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26 .\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 .\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 .\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
29 .\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 .\" $DragonFly: src/share/man/man7/vkernel.7,v 1.19 2007/06/17 16:46:14 dillon Exp $
41 .Nd virtual kernel architecture
43 .Cd "platform vkernel"
47 .Pa /usr/obj/usr/src/sys/VKERNEL/kernel.debug
50 .Op Fl e Ar name Ns = Ns Li value : Ns Ar name Ns = Ns Li value : Ns ...
52 .Op Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc
58 architecture allows for running
62 The following options are available:
63 .Bl -tag -width ".Fl m Ar size"
65 Specify a readonly CD-ROM image
67 to be used by the kernel, with the first
77 option specified on the command line will be the boot disk.
78 The CD9660 filesystem is assumed when booting from this media.
79 .It Fl e Ar name Ns = Ns Li value : Ns Ar name Ns = Ns Li value : Ns ...
80 Specify an environment to be used by the kernel.
82 Specify a memory image
84 to be used by the virtual kernel.
87 option is given, the kernel will generate a name of the form
88 .Pa /var/vkernel/memimg.XXXXXX ,
91 being replaced by a sequential number, e.g.\&
93 .It Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc
94 Create a virtual network device, with the first
104 argument is the name of a
109 path prefix does not have to be specified and will be automatically prepended.
112 will pick the first unused
120 arguments are the IP addresses of the
131 interface is added to the specified
137 argument applies to all interfaces for which an address is specified.
139 Specify the amount of memory to be used by the kernel in bytes,
147 Lowercase versions of
153 Specify a R/W disk image
155 to be used by the kernel, with the first
165 option specified on the command line will be the boot disk.
167 Boot into single-user mode.
169 Enable writing to kernel memory and module loading.
170 By default, those are disabled for security reasons.
172 Turn on verbose booting.
175 A number of virtual device drivers exist to supplement the virtual kernel.
176 Their names start with
181 driver allows for up to 16
184 The root device will be
188 for further information on how to prepare a root image).
189 .Ss Network interface
192 driver supports up to 16 virtual network interfaces which are associated with
197 device, the per-interface read only
200 .Va hw.vke Ns Em X Ns Va .tap_unit
201 holds the unit number of the associated
205 The virtual kernel only enables
209 while operating in regular console mode.
213 to the virtual kernel causes the virtual kernel to enter its internal
215 debugger and re-enable all other terminal signals.
218 to the virtual kernel triggers a clean shutdown by passing a
220 to the virtual kernel's
224 It is possible to directly gdb the virtual kernel's process.
225 It is recommended that you do a
226 .Ql handle SIGSEGV noprint
227 to ignore page faults processed by the virtual kernel itself.
229 A couple of steps are necessary in order to prepare the system to build and
230 run a virtual kernel.
231 .Ss Setting up the filesystem
234 architecture needs a number of files which reside in
236 Since these files tend to get rather big and the
238 partition is usually of limited size, we recommend the directory to be
241 partition with a link to it in
244 mkdir /home/var.vkernel
245 ln -s /home/var.vkernel /var/vkernel
248 Next, a filesystem image to be used by the virtual kernel has to be
249 created and populated (assuming world has been built previously):
251 dd if=/dev/zero of=/var/vkernel/rootimg.01 bs=1m count=2048
252 vnconfig -c -s labels vn0 /var/vkernel/rootimg.01
253 disklabel -r -w vn0s0 auto
254 disklabel -e vn0s0 # edit the label to create a vn0s0a partition
256 mount /dev/vn0s0a /mnt
258 make installworld DESTDIR=/mnt
260 make distribution DESTDIR=/mnt
261 echo '/dev/vkd0a / ufs rw 1 1' >/mnt/etc/fstab
268 entry with the following line and turn off all other gettys.
270 console "/usr/libexec/getty Pc" cons25 on secure
273 Then, unmount the disk.
278 .Ss Compiling the virtual kernel
279 In order to compile a virtual kernel use the
281 kernel configuration file residing in
282 .Pa /usr/src/sys/config
283 (or a configuration file derived thereof):
286 make -DNO_MODULES buildkernel KERNCONF=VKERNEL
288 .Ss Enabling virtual kernel operation
291 .Va vm.vkernel_enable ,
292 must be set to enable
296 sysctl vm.vkernel_enable=1
298 .Ss Configuring the network on the host system
299 In order to access a network interface of the host system from the
301 you must add the interface to a
303 device which will then be passed to the
309 ifconfig bridge0 create
310 ifconfig bridge0 addm re0 # assuming re0 is the host's interface
313 .Ss Running the kernel
314 Finally, the virtual kernel can be run:
316 cd /usr/obj/usr/src/sys/VKERNEL
317 \&./kernel.debug -m 64m -r /var/vkernel/rootimg.01 -I auto:bridge0
322 command can be used to stop a virtual kernel.
332 Virtual kernels were introduced in
337 thought up and implemented the
339 architecture and wrote the
346 This manual page was written by