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.18 2007/06/14 21:11:29 swildner 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 enables all terminal signals while in
207 mode but only enables
210 while operating as a console which causes the virtual kernel to enter its
215 It is possible to directly gdb the virtual kernel's process.
216 It is recommended that you do a
217 .Ql handle SIGSEGV noprint
218 to ignore page faults processed by the virtual kernel itself.
220 A couple of steps are necessary in order to prepare the system to build and
221 run a virtual kernel.
222 .Ss Setting up the filesystem
225 architecture needs a number of files which reside in
227 Since these files tend to get rather big and the
229 partition is usually of limited size, we recommend the directory to be
232 partition with a link to it in
235 mkdir /home/var.vkernel
236 ln -s /home/var.vkernel /var/vkernel
239 Next, a filesystem image to be used by the virtual kernel has to be
240 created and populated (assuming world has been built previously):
242 dd if=/dev/zero of=/var/vkernel/rootimg.01 bs=1m count=2048
243 vnconfig -c -s labels vn0 /var/vkernel/rootimg.01
244 disklabel -r -w vn0s0 auto
245 disklabel -e vn0s0 # edit the label to create a vn0s0a partition
247 mount /dev/vn0s0a /mnt
249 make installworld DESTDIR=/mnt
251 make distribution DESTDIR=/mnt
252 echo '/dev/vkd0a / ufs rw 1 1' >/mnt/etc/fstab
259 entry with the following line and turn off all other gettys.
261 console "/usr/libexec/getty Pc" cons25 on secure
264 Then, unmount the disk.
269 .Ss Compiling the virtual kernel
270 In order to compile a virtual kernel use the
272 kernel configuration file residing in
273 .Pa /usr/src/sys/config
274 (or a configuration file derived thereof):
277 make -DNO_MODULES buildkernel KERNCONF=VKERNEL
279 .Ss Enabling virtual kernel operation
282 .Va vm.vkernel_enable ,
283 must be set to enable
287 sysctl vm.vkernel_enable=1
289 .Ss Configuring the network on the host system
290 In order to access a network interface of the host system from the
292 you must add the interface to a
294 device which will then be passed to the
300 ifconfig bridge0 create
301 ifconfig bridge0 addm re0 # assuming re0 is the host's interface
304 .Ss Running the kernel
305 Finally, the virtual kernel can be run:
307 cd /usr/obj/usr/src/sys/VKERNEL
308 \&./kernel.debug -m 64m -r /var/vkernel/rootimg.01 -I auto:bridge0
313 command can be used to stop a virtual kernel.
323 Virtual kernels were introduced in
328 thought up and implemented the
330 architecture and wrote the
337 This manual page was written by