14af18995SSascha Wildner.\" 2*98b2ba80SSascha Wildner.\" Copyright (c) 2006, 2007 34af18995SSascha Wildner.\" The DragonFly Project. All rights reserved. 44af18995SSascha Wildner.\" 54af18995SSascha Wildner.\" Redistribution and use in source and binary forms, with or without 64af18995SSascha Wildner.\" modification, are permitted provided that the following conditions 74af18995SSascha Wildner.\" are met: 84af18995SSascha Wildner.\" 94af18995SSascha Wildner.\" 1. Redistributions of source code must retain the above copyright 104af18995SSascha Wildner.\" notice, this list of conditions and the following disclaimer. 114af18995SSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright 124af18995SSascha Wildner.\" notice, this list of conditions and the following disclaimer in 134af18995SSascha Wildner.\" the documentation and/or other materials provided with the 144af18995SSascha Wildner.\" distribution. 154af18995SSascha Wildner.\" 3. Neither the name of The DragonFly Project nor the names of its 164af18995SSascha Wildner.\" contributors may be used to endorse or promote products derived 174af18995SSascha Wildner.\" from this software without specific, prior written permission. 184af18995SSascha Wildner.\" 194af18995SSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 204af18995SSascha Wildner.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 214af18995SSascha Wildner.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 224af18995SSascha Wildner.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 234af18995SSascha Wildner.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 244af18995SSascha Wildner.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 254af18995SSascha Wildner.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 264af18995SSascha Wildner.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 274af18995SSascha Wildner.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 284af18995SSascha Wildner.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 294af18995SSascha Wildner.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 304af18995SSascha Wildner.\" SUCH DAMAGE. 314af18995SSascha Wildner.\" 32*98b2ba80SSascha Wildner.\" $DragonFly: src/share/man/man7/vkernel.7,v 1.29 2007/08/18 08:46:32 swildner Exp $ 334af18995SSascha Wildner.\" 34*98b2ba80SSascha Wildner.Dd August 18, 2007 354af18995SSascha Wildner.Dt VKERNEL 7 364af18995SSascha Wildner.Os 374af18995SSascha Wildner.Sh NAME 380592e24dSSascha Wildner.Nm vkernel , 39*98b2ba80SSascha Wildner.Nm vcd , 400592e24dSSascha Wildner.Nm vkd , 410592e24dSSascha Wildner.Nm vke 424af18995SSascha Wildner.Nd virtual kernel architecture 434af18995SSascha Wildner.Sh SYNOPSIS 4465d7306bSSascha Wildner.Cd "platform vkernel" 45*98b2ba80SSascha Wildner.Cd "device vcd" 46c8e7d028SSascha Wildner.Cd "device vkd" 47c8e7d028SSascha Wildner.Cd "device vke" 48c8e7d028SSascha Wildner.Pp 494af18995SSascha Wildner.Pa /usr/obj/usr/src/sys/VKERNEL/kernel.debug 5003071031SSascha Wildner.Op Fl sUv 51a72d8a9fSMatthew Dillon.Op Fl c Ar file 5209b03fffSSascha Wildner.Op Fl e Ar name Ns = Ns Li value : Ns Ar name Ns = Ns Li value : Ns ... 53dd54cb3aSSascha Wildner.Op Fl i Ar file 5409b03fffSSascha Wildner.Op Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc 55702acf06SJoe Talbott.Op Fl l Ar cpulock 564af18995SSascha Wildner.Op Fl m Ar size 57c5b0b0baSMatthew Dillon.Op Fl n Ar numcpus 58b02b4170SMatthew Dillon.Op Fl p Ar file 594af18995SSascha Wildner.Op Fl r Ar file 604af18995SSascha Wildner.Sh DESCRIPTION 614af18995SSascha WildnerThe 624af18995SSascha Wildner.Nm 634af18995SSascha Wildnerarchitecture allows for running 644af18995SSascha Wildner.Dx 654af18995SSascha Wildnerkernels in userland. 664af18995SSascha Wildner.Pp 674af18995SSascha WildnerThe following options are available: 684af18995SSascha Wildner.Bl -tag -width ".Fl m Ar size" 69a72d8a9fSMatthew Dillon.It Fl c Ar file 707834fbccSSascha WildnerSpecify a readonly CD-ROM image 71a72d8a9fSMatthew Dillon.Ar file 72a72d8a9fSMatthew Dillonto be used by the kernel, with the first 73a72d8a9fSMatthew Dillon.Fl c 74a72d8a9fSMatthew Dillonoption defining 75a72d8a9fSMatthew Dillon.Li vcd0 , 76a72d8a9fSMatthew Dillonthe second one 77a72d8a9fSMatthew Dillon.Li vcd1 , 78a72d8a9fSMatthew Dillonand so on. The first 79a72d8a9fSMatthew Dillon.Fl r 80a72d8a9fSMatthew Dillonor 81a72d8a9fSMatthew Dillon.Fl c 82a72d8a9fSMatthew Dillonoption specified on the command line will be the boot disk. 837834fbccSSascha WildnerThe CD9660 filesystem is assumed when booting from this media. 8409b03fffSSascha Wildner.It Fl e Ar name Ns = Ns Li value : Ns Ar name Ns = Ns Li value : Ns ... 8509b03fffSSascha WildnerSpecify an environment to be used by the kernel. 86dd54cb3aSSascha Wildner.It Fl i Ar file 87dd54cb3aSSascha WildnerSpecify a memory image 88dd54cb3aSSascha Wildner.Ar file 89dd54cb3aSSascha Wildnerto be used by the virtual kernel. 90dd54cb3aSSascha WildnerIf no 91dd54cb3aSSascha Wildner.Fl i 92dd54cb3aSSascha Wildneroption is given, the kernel will generate a name of the form 93dd54cb3aSSascha Wildner.Pa /var/vkernel/memimg.XXXXXX , 94dd54cb3aSSascha Wildnerwith the trailing 95dd54cb3aSSascha Wildner.Ql X Ns s 96dd54cb3aSSascha Wildnerbeing replaced by a sequential number, e.g.\& 97dd54cb3aSSascha Wildner.Pa memimg.000001 . 9809b03fffSSascha Wildner.It Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc 9909b03fffSSascha WildnerCreate a virtual network device, with the first 10009b03fffSSascha Wildner.Fl I 10109b03fffSSascha Wildneroption defining 1020592e24dSSascha Wildner.Li vke0 , 10309b03fffSSascha Wildnerthe second one 1040592e24dSSascha Wildner.Li vke1 , 10509b03fffSSascha Wildnerand so on. 10609b03fffSSascha Wildner.Pp 10709b03fffSSascha WildnerThe 10809b03fffSSascha Wildner.Ar interface 10909b03fffSSascha Wildnerargument is the name of a 11009b03fffSSascha Wildner.Xr tap 4 11109b03fffSSascha Wildnerdevice node. 11209b03fffSSascha WildnerThe 11309b03fffSSascha Wildner.Pa /dev/ 11409b03fffSSascha Wildnerpath prefix does not have to be specified and will be automatically prepended. 11509b03fffSSascha WildnerSpecifying 11609b03fffSSascha Wildner.Cm auto 11709b03fffSSascha Wildnerwill pick the first unused 11809b03fffSSascha Wildner.Xr tap 4 11909b03fffSSascha Wildnerdevice. 12009b03fffSSascha Wildner.Pp 12109b03fffSSascha WildnerThe 12209b03fffSSascha Wildner.Ar address1 12309b03fffSSascha Wildnerand 12409b03fffSSascha Wildner.Ar address2 12509b03fffSSascha Wildnerarguments are the IP addresses of the 12609b03fffSSascha Wildner.Xr tap 4 12709b03fffSSascha Wildnerand 1280592e24dSSascha Wildner.Nm vke 12909b03fffSSascha Wildnerinterfaces. 13009b03fffSSascha WildnerOptionally, 13109b03fffSSascha Wildner.Ar address1 13209b03fffSSascha Wildnermay be of the form 13309b03fffSSascha Wildner.Li bridge Ns Em X 13409b03fffSSascha Wildnerin which case the 13509b03fffSSascha Wildner.Xr tap 4 13609b03fffSSascha Wildnerinterface is added to the specified 13709b03fffSSascha Wildner.Xr bridge 4 13809b03fffSSascha Wildnerinterface. 13909b03fffSSascha Wildner.Pp 14009b03fffSSascha WildnerThe 14109b03fffSSascha Wildner.Ar netmask 14209b03fffSSascha Wildnerargument applies to all interfaces for which an address is specified. 143702acf06SJoe Talbott.It Fl l Ar cpulock 144702acf06SJoe TalbottSpecify which, if any, real CPUs to lock virtual CPUs to. 145702acf06SJoe Talbott.Ar cpulock 146702acf06SJoe Talbottis one of 147702acf06SJoe Talbott.Cm any , 14826ea2793SSascha Wildner.Cm map Ns Op Ns , Ns Ar startCPU , 14926ea2793SSascha Wildneror 15026ea2793SSascha Wildner.Ar CPU . 151702acf06SJoe Talbott.Pp 152702acf06SJoe Talbott.Cm any 15326ea2793SSascha Wildnerdoes not map virtual CPUs to real CPUs. 15426ea2793SSascha WildnerThis is the default. 155702acf06SJoe Talbott.Pp 156702acf06SJoe Talbott.Cm map Ns Op Ns , Ns Ar startCPU 157702acf06SJoe Talbottmaps each virtual CPU to a real CPU starting with real CPU 0 or 158702acf06SJoe Talbott.Ar startCPU 159702acf06SJoe Talbottif specified. 160702acf06SJoe Talbott.Pp 161702acf06SJoe Talbott.Ar CPU 16226ea2793SSascha Wildnerlocks all virtual CPUs to the real CPU specified by 16326ea2793SSascha Wildner.Ar CPU . 1644af18995SSascha Wildner.It Fl m Ar size 1654af18995SSascha WildnerSpecify the amount of memory to be used by the kernel in bytes, 1664af18995SSascha Wildner.Cm K 1673cea05a4SSascha Wildner.Pq kilobytes , 1684af18995SSascha Wildner.Cm M 1693cea05a4SSascha Wildner.Pq megabytes 1703cea05a4SSascha Wildneror 1714af18995SSascha Wildner.Cm G 1723cea05a4SSascha Wildner.Pq gigabytes . 17309b03fffSSascha WildnerLowercase versions of 1744af18995SSascha Wildner.Cm K , M , 1754af18995SSascha Wildnerand 1764af18995SSascha Wildner.Cm G 1774af18995SSascha Wildnerare allowed. 178c5b0b0baSMatthew Dillon.It Fl n Ar numcpus 1798cf87c92SSascha WildnerSpecify the number of CPUs you wish to emulate. 1803217a401SSascha WildnerUp to 31 CPUs are supported. 1818cf87c92SSascha WildnerThe virtual kernel must be built with 1828cf87c92SSascha Wildner.Cd options SMP 1838cf87c92SSascha Wildnerto use this option and will default to 2 CPUs unless otherwise specified. 184b02b4170SMatthew Dillon.It Fl p Ar file 185b02b4170SMatthew DillonSpecify a file in which to store the process ID. 186b02b4170SMatthew DillonA warning is issued if this file cannot be opened for writing. 1874af18995SSascha Wildner.It Fl r Ar file 188a72d8a9fSMatthew DillonSpecify a R/W disk image 1894af18995SSascha Wildner.Ar file 190ec1a8a4dSSascha Wildnerto be used by the kernel, with the first 191ec1a8a4dSSascha Wildner.Fl r 192ec1a8a4dSSascha Wildneroption defining 1930592e24dSSascha Wildner.Li vkd0 , 194ec1a8a4dSSascha Wildnerthe second one 1950592e24dSSascha Wildner.Li vkd1 , 196a72d8a9fSMatthew Dillonand so on. The first 197a72d8a9fSMatthew Dillon.Fl r 198a72d8a9fSMatthew Dillonor 199a72d8a9fSMatthew Dillon.Fl c 200a72d8a9fSMatthew Dillonoption specified on the command line will be the boot disk. 201c8e7d028SSascha Wildner.It Fl s 202c8e7d028SSascha WildnerBoot into single-user mode. 20303071031SSascha Wildner.It Fl U 20403071031SSascha WildnerEnable writing to kernel memory and module loading. 20503071031SSascha WildnerBy default, those are disabled for security reasons. 2064af18995SSascha Wildner.It Fl v 2074af18995SSascha WildnerTurn on verbose booting. 2084af18995SSascha Wildner.El 2090592e24dSSascha Wildner.Sh DEVICES 2100592e24dSSascha WildnerA number of virtual device drivers exist to supplement the virtual kernel. 2110592e24dSSascha Wildner.Ss Disk device 2120592e24dSSascha WildnerThe 2130592e24dSSascha Wildner.Nm vkd 2140592e24dSSascha Wildnerdriver allows for up to 16 2150592e24dSSascha Wildner.Xr vn 4 2160592e24dSSascha Wildnerbased disk devices. 2170592e24dSSascha WildnerThe root device will be 2180592e24dSSascha Wildner.Li vkd0 2190592e24dSSascha Wildner(see 2200592e24dSSascha Wildner.Sx EXAMPLES 2210592e24dSSascha Wildnerfor further information on how to prepare a root image). 222*98b2ba80SSascha Wildner.Ss CD-ROM device 223*98b2ba80SSascha WildnerThe 224*98b2ba80SSascha Wildner.Nm vcd 225*98b2ba80SSascha Wildnerdriver allows for up to 16 virtual CD-ROM devices. 226*98b2ba80SSascha WildnerBasically this is a read only 227*98b2ba80SSascha Wildner.Nm vkd 228*98b2ba80SSascha Wildnerdevice with a block size of 2048. 2290592e24dSSascha Wildner.Ss Network interface 2300592e24dSSascha WildnerThe 2310592e24dSSascha Wildner.Nm vke 2320592e24dSSascha Wildnerdriver supports up to 16 virtual network interfaces which are associated with 2330592e24dSSascha Wildner.Xr tap 4 2340592e24dSSascha Wildnerdevices on the host. 2350592e24dSSascha WildnerFor each 2360592e24dSSascha Wildner.Nm vke 2370592e24dSSascha Wildnerdevice, the per-interface read only 2380592e24dSSascha Wildner.Xr sysctl 3 2390592e24dSSascha Wildnervariable 2400592e24dSSascha Wildner.Va hw.vke Ns Em X Ns Va .tap_unit 2410592e24dSSascha Wildnerholds the unit number of the associated 2420592e24dSSascha Wildner.Xr tap 4 2430592e24dSSascha Wildnerdevice. 2441e4d9fd9SSascha Wildner.Sh SIGNALS 245bb195a01SMatthew DillonThe virtual kernel only enables 246bb195a01SMatthew Dillon.Dv SIGQUIT 247bb195a01SMatthew Dillonand 248bb195a01SMatthew Dillon.Dv SIGTERM 249bb195a01SMatthew Dillonwhile operating in regular console mode. 250bb195a01SMatthew DillonSending 2511e4d9fd9SSascha Wildner.Ql \&^\e 2521e4d9fd9SSascha Wildner.Pq Dv SIGQUIT 253bb195a01SMatthew Dillonto the virtual kernel causes the virtual kernel to enter its internal 2541e4d9fd9SSascha Wildner.Xr ddb 4 255bb195a01SMatthew Dillondebugger and re-enable all other terminal signals. 256bb195a01SMatthew DillonSending 257bb195a01SMatthew Dillon.Dv SIGTERM 258bb195a01SMatthew Dillonto the virtual kernel triggers a clean shutdown by passing a 259bb195a01SMatthew Dillon.Dv SIGUSR2 260bb195a01SMatthew Dillonto the virtual kernel's 261bb195a01SMatthew Dillon.Xr init 8 262bb195a01SMatthew Dillonprocess. 263974b26bfSSascha Wildner.Sh DEBUGGING 264974b26bfSSascha WildnerIt is possible to directly gdb the virtual kernel's process. 265974b26bfSSascha WildnerIt is recommended that you do a 266974b26bfSSascha Wildner.Ql handle SIGSEGV noprint 267974b26bfSSascha Wildnerto ignore page faults processed by the virtual kernel itself. 268c8e7d028SSascha Wildner.Sh EXAMPLES 2694af18995SSascha WildnerA couple of steps are necessary in order to prepare the system to build and 2704af18995SSascha Wildnerrun a virtual kernel. 2714af18995SSascha Wildner.Ss Setting up the filesystem 2724af18995SSascha WildnerThe 2734af18995SSascha Wildner.Nm 2744af18995SSascha Wildnerarchitecture needs a number of files which reside in 2754af18995SSascha Wildner.Pa /var/vkernel . 2764af18995SSascha WildnerSince these files tend to get rather big and the 2774af18995SSascha Wildner.Pa /var 2784af18995SSascha Wildnerpartition is usually of limited size, we recommend the directory to be 2794af18995SSascha Wildnercreated in the 2804af18995SSascha Wildner.Pa /home 2814af18995SSascha Wildnerpartition with a link to it in 2824af18995SSascha Wildner.Pa /var : 283c8e7d028SSascha Wildner.Bd -literal 2844af18995SSascha Wildnermkdir /home/var.vkernel 2854af18995SSascha Wildnerln -s /home/var.vkernel /var/vkernel 2864af18995SSascha Wildner.Ed 2874af18995SSascha Wildner.Pp 2884af18995SSascha WildnerNext, a filesystem image to be used by the virtual kernel has to be 289c8e7d028SSascha Wildnercreated and populated (assuming world has been built previously): 290c8e7d028SSascha Wildner.Bd -literal 2914af18995SSascha Wildnerdd if=/dev/zero of=/var/vkernel/rootimg.01 bs=1m count=2048 2924af18995SSascha Wildnervnconfig -c -s labels vn0 /var/vkernel/rootimg.01 29358c55700SSascha Wildnerdisklabel -r -w vn0s0 auto 29458c55700SSascha Wildnerdisklabel -e vn0s0 # edit the label to create a vn0s0a partition 29558c55700SSascha Wildnernewfs /dev/vn0s0a 29658c55700SSascha Wildnermount /dev/vn0s0a /mnt 297c8e7d028SSascha Wildnercd /usr/src 298c8e7d028SSascha Wildnermake installworld DESTDIR=/mnt 299c8e7d028SSascha Wildnercd etc 300c8e7d028SSascha Wildnermake distribution DESTDIR=/mnt 3017a3238b8SMatthew Dillonecho '/dev/vkd0s0a / ufs rw 1 1' >/mnt/etc/fstab 3027a3238b8SMatthew Dillonecho 'proc /proc procfs rw 0 0' >>/mnt/etc/fstab 3037834fbccSSascha Wildner.Ed 3047834fbccSSascha Wildner.Pp 3057834fbccSSascha WildnerEdit 3067834fbccSSascha Wildner.Pa /mnt/etc/ttys 3077834fbccSSascha Wildnerand replace the 3087834fbccSSascha Wildner.Li console 3097834fbccSSascha Wildnerentry with the following line and turn off all other gettys. 3107834fbccSSascha Wildner.Bd -literal 3117834fbccSSascha Wildnerconsole "/usr/libexec/getty Pc" cons25 on secure 3127834fbccSSascha Wildner.Ed 3137834fbccSSascha Wildner.Pp 3147834fbccSSascha WildnerThen, unmount the disk. 3157834fbccSSascha Wildner.Bd -literal 3164af18995SSascha Wildnerumount /mnt 3174af18995SSascha Wildnervnconfig -u vn0 3184af18995SSascha Wildner.Ed 3194af18995SSascha Wildner.Ss Compiling the virtual kernel 3204af18995SSascha WildnerIn order to compile a virtual kernel use the 3214af18995SSascha Wildner.Li VKERNEL 3224af18995SSascha Wildnerkernel configuration file residing in 3234af18995SSascha Wildner.Pa /usr/src/sys/config 3244af18995SSascha Wildner(or a configuration file derived thereof): 325c8e7d028SSascha Wildner.Bd -literal 3264af18995SSascha Wildnercd /usr/src 32709b03fffSSascha Wildnermake -DNO_MODULES buildkernel KERNCONF=VKERNEL 3284af18995SSascha Wildner.Ed 3294af18995SSascha Wildner.Ss Enabling virtual kernel operation 3304af18995SSascha WildnerA special 3314af18995SSascha Wildner.Xr sysctl 8 , 3324af18995SSascha Wildner.Va vm.vkernel_enable , 3334af18995SSascha Wildnermust be set to enable 3344af18995SSascha Wildner.Nm 3354af18995SSascha Wildneroperation: 336c8e7d028SSascha Wildner.Bd -literal 3374af18995SSascha Wildnersysctl vm.vkernel_enable=1 3384af18995SSascha Wildner.Ed 33909b03fffSSascha Wildner.Ss Configuring the network on the host system 34009b03fffSSascha WildnerIn order to access a network interface of the host system from the 34109b03fffSSascha Wildner.Nm , 34209b03fffSSascha Wildneryou must add the interface to a 34309b03fffSSascha Wildner.Xr bridge 4 34409b03fffSSascha Wildnerdevice which will then be passed to the 34509b03fffSSascha Wildner.Fl I 34609b03fffSSascha Wildneroption: 34709b03fffSSascha Wildner.Bd -literal 34809b03fffSSascha Wildnerkldload if_bridge.ko 34909b03fffSSascha Wildnerkldload if_tap.ko 35009b03fffSSascha Wildnerifconfig bridge0 create 35109b03fffSSascha Wildnerifconfig bridge0 addm re0 # assuming re0 is the host's interface 35209b03fffSSascha Wildnerifconfig bridge0 up 35309b03fffSSascha Wildner.Ed 3544af18995SSascha Wildner.Ss Running the kernel 3554af18995SSascha WildnerFinally, the virtual kernel can be run: 356c8e7d028SSascha Wildner.Bd -literal 3574af18995SSascha Wildnercd /usr/obj/usr/src/sys/VKERNEL 35809b03fffSSascha Wildner\&./kernel.debug -m 64m -r /var/vkernel/rootimg.01 -I auto:bridge0 3594af18995SSascha Wildner.Ed 360c8e7d028SSascha Wildner.Pp 361c8e7d028SSascha WildnerThe 362c8e7d028SSascha Wildner.Xr reboot 8 363c8e7d028SSascha Wildnercommand can be used to stop a virtual kernel. 36434caba04SMatthew Dillon.Sh BUILDING THE WORLD UNDER A VKERNEL 36534caba04SMatthew DillonThe virtual kernel platform does not have all the header files expected 36634caba04SMatthew Dillonby a world build, so the easiest thing to do right now is to specify a 36734caba04SMatthew Dillonpc32 target when building the world under a virtual kernel, like this: 36834caba04SMatthew Dillon.Bd -literal 36934caba04SMatthew Dillonvkernel# make MACHINE_PLATFORM=pc32 buildworld 37034caba04SMatthew Dillonvkernel# make MACHINE_PLATFORM=pc32 installworld 37134caba04SMatthew Dillon.Ed 3724af18995SSascha Wildner.Sh SEE ALSO 37309b03fffSSascha Wildner.Xr bridge 4 , 37409b03fffSSascha Wildner.Xr tap 4 , 375c8e7d028SSascha Wildner.Xr vn 4 , 376c8e7d028SSascha Wildner.Xr build 7 , 377c8e7d028SSascha Wildner.Xr disklabel 8 , 37809b03fffSSascha Wildner.Xr ifconfig 8 , 379c8e7d028SSascha Wildner.Xr vnconfig 8 3804af18995SSascha Wildner.Sh HISTORY 3814af18995SSascha WildnerVirtual kernels were introduced in 3824af18995SSascha Wildner.Dx 1.7 . 3834af18995SSascha Wildner.Sh AUTHORS 3844af18995SSascha Wildner.An -nosplit 3854af18995SSascha Wildner.An Matt Dillon 3864af18995SSascha Wildnerthought up and implemented the 3874af18995SSascha Wildner.Nm 3880592e24dSSascha Wildnerarchitecture and wrote the 3890592e24dSSascha Wildner.Nm vkd 3900592e24dSSascha Wildnerdevice driver. 3910592e24dSSascha Wildner.An Sepherosa Ziehau 3920592e24dSSascha Wildnerwrote the 3930592e24dSSascha Wildner.Nm vke 3940592e24dSSascha Wildnerdevice driver. 3954af18995SSascha WildnerThis manual page was written by 3964af18995SSascha Wildner.An Sascha Wildner . 397