14af18995SSascha Wildner.\" 298b2ba80SSascha 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.\" 32b6a66df5SSascha Wildner.Dd March 28, 2010 334af18995SSascha Wildner.Dt VKERNEL 7 344af18995SSascha Wildner.Os 354af18995SSascha Wildner.Sh NAME 360592e24dSSascha Wildner.Nm vkernel , 3798b2ba80SSascha Wildner.Nm vcd , 380592e24dSSascha Wildner.Nm vkd , 390592e24dSSascha Wildner.Nm vke 404af18995SSascha Wildner.Nd virtual kernel architecture 414af18995SSascha Wildner.Sh SYNOPSIS 42b6a66df5SSascha Wildner.Cd "platform vkernel # for 32 bit vkernels" 43b6a66df5SSascha Wildner.Cd "platform vkernel64 # for 64 bit vkernels" 4498b2ba80SSascha Wildner.Cd "device vcd" 45c8e7d028SSascha Wildner.Cd "device vkd" 46c8e7d028SSascha Wildner.Cd "device vke" 47c8e7d028SSascha Wildner.Pp 48c009fcfaSThomas Nikolajsen.Pa /var/vkernel/boot/kernel 49*278c4e67SSamuel J. Greear.Op Fl hsUv 50a72d8a9fSMatthew Dillon.Op Fl c Ar file 5109b03fffSSascha Wildner.Op Fl e Ar name Ns = Ns Li value : Ns Ar name Ns = Ns Li value : Ns ... 52dd54cb3aSSascha Wildner.Op Fl i Ar file 5309b03fffSSascha Wildner.Op Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc 54702acf06SJoe Talbott.Op Fl l Ar cpulock 554af18995SSascha Wildner.Op Fl m Ar size 56c5b0b0baSMatthew Dillon.Op Fl n Ar numcpus 57b02b4170SMatthew Dillon.Op Fl p Ar file 584af18995SSascha Wildner.Op Fl r Ar file 594af18995SSascha Wildner.Sh DESCRIPTION 604af18995SSascha WildnerThe 614af18995SSascha Wildner.Nm 624af18995SSascha Wildnerarchitecture allows for running 634af18995SSascha Wildner.Dx 644af18995SSascha Wildnerkernels in userland. 654af18995SSascha Wildner.Pp 664af18995SSascha WildnerThe following options are available: 674af18995SSascha Wildner.Bl -tag -width ".Fl m Ar size" 68a72d8a9fSMatthew Dillon.It Fl c Ar file 697834fbccSSascha WildnerSpecify a readonly CD-ROM image 70a72d8a9fSMatthew Dillon.Ar file 71a72d8a9fSMatthew Dillonto be used by the kernel, with the first 72a72d8a9fSMatthew Dillon.Fl c 73a72d8a9fSMatthew Dillonoption defining 74a72d8a9fSMatthew Dillon.Li vcd0 , 75a72d8a9fSMatthew Dillonthe second one 76a72d8a9fSMatthew Dillon.Li vcd1 , 7762aea38eSSascha Wildnerand so on. 7862aea38eSSascha WildnerThe 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. 86*278c4e67SSamuel J. Greear.It Fl h 87*278c4e67SSamuel J. GreearShows a list of available options, each with a short description. 88dd54cb3aSSascha Wildner.It Fl i Ar file 89dd54cb3aSSascha WildnerSpecify a memory image 90dd54cb3aSSascha Wildner.Ar file 91dd54cb3aSSascha Wildnerto be used by the virtual kernel. 92dd54cb3aSSascha WildnerIf no 93dd54cb3aSSascha Wildner.Fl i 94dd54cb3aSSascha Wildneroption is given, the kernel will generate a name of the form 95dd54cb3aSSascha Wildner.Pa /var/vkernel/memimg.XXXXXX , 96dd54cb3aSSascha Wildnerwith the trailing 97dd54cb3aSSascha Wildner.Ql X Ns s 98dd54cb3aSSascha Wildnerbeing replaced by a sequential number, e.g.\& 99dd54cb3aSSascha Wildner.Pa memimg.000001 . 10009b03fffSSascha Wildner.It Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc 10109b03fffSSascha WildnerCreate a virtual network device, with the first 10209b03fffSSascha Wildner.Fl I 10309b03fffSSascha Wildneroption defining 1040592e24dSSascha Wildner.Li vke0 , 10509b03fffSSascha Wildnerthe second one 1060592e24dSSascha Wildner.Li vke1 , 10709b03fffSSascha Wildnerand so on. 10809b03fffSSascha Wildner.Pp 10909b03fffSSascha WildnerThe 11009b03fffSSascha Wildner.Ar interface 11109b03fffSSascha Wildnerargument is the name of a 11209b03fffSSascha Wildner.Xr tap 4 11309b03fffSSascha Wildnerdevice node. 11409b03fffSSascha WildnerThe 11509b03fffSSascha Wildner.Pa /dev/ 11609b03fffSSascha Wildnerpath prefix does not have to be specified and will be automatically prepended. 11709b03fffSSascha WildnerSpecifying 11809b03fffSSascha Wildner.Cm auto 11909b03fffSSascha Wildnerwill pick the first unused 12009b03fffSSascha Wildner.Xr tap 4 12109b03fffSSascha Wildnerdevice. 12209b03fffSSascha Wildner.Pp 12309b03fffSSascha WildnerThe 12409b03fffSSascha Wildner.Ar address1 12509b03fffSSascha Wildnerand 12609b03fffSSascha Wildner.Ar address2 12709b03fffSSascha Wildnerarguments are the IP addresses of the 12809b03fffSSascha Wildner.Xr tap 4 12909b03fffSSascha Wildnerand 1300592e24dSSascha Wildner.Nm vke 13109b03fffSSascha Wildnerinterfaces. 13209b03fffSSascha WildnerOptionally, 13309b03fffSSascha Wildner.Ar address1 13409b03fffSSascha Wildnermay be of the form 13509b03fffSSascha Wildner.Li bridge Ns Em X 13609b03fffSSascha Wildnerin which case the 13709b03fffSSascha Wildner.Xr tap 4 13809b03fffSSascha Wildnerinterface is added to the specified 13909b03fffSSascha Wildner.Xr bridge 4 14009b03fffSSascha Wildnerinterface. 141a8cc122dSSascha WildnerThe 142a8cc122dSSascha Wildner.Nm vke 143a8cc122dSSascha Wildneraddress is not assigned until the interface is brought up in the guest. 14409b03fffSSascha Wildner.Pp 14509b03fffSSascha WildnerThe 14609b03fffSSascha Wildner.Ar netmask 14709b03fffSSascha Wildnerargument applies to all interfaces for which an address is specified. 148702acf06SJoe Talbott.It Fl l Ar cpulock 149702acf06SJoe TalbottSpecify which, if any, real CPUs to lock virtual CPUs to. 150702acf06SJoe Talbott.Ar cpulock 151702acf06SJoe Talbottis one of 152702acf06SJoe Talbott.Cm any , 15326ea2793SSascha Wildner.Cm map Ns Op Ns , Ns Ar startCPU , 15426ea2793SSascha Wildneror 15526ea2793SSascha Wildner.Ar CPU . 156702acf06SJoe Talbott.Pp 157702acf06SJoe Talbott.Cm any 15826ea2793SSascha Wildnerdoes not map virtual CPUs to real CPUs. 15926ea2793SSascha WildnerThis is the default. 160702acf06SJoe Talbott.Pp 161702acf06SJoe Talbott.Cm map Ns Op Ns , Ns Ar startCPU 162702acf06SJoe Talbottmaps each virtual CPU to a real CPU starting with real CPU 0 or 163702acf06SJoe Talbott.Ar startCPU 164702acf06SJoe Talbottif specified. 165702acf06SJoe Talbott.Pp 166702acf06SJoe Talbott.Ar CPU 16726ea2793SSascha Wildnerlocks all virtual CPUs to the real CPU specified by 16826ea2793SSascha Wildner.Ar CPU . 1694af18995SSascha Wildner.It Fl m Ar size 1704af18995SSascha WildnerSpecify the amount of memory to be used by the kernel in bytes, 1714af18995SSascha Wildner.Cm K 1723cea05a4SSascha Wildner.Pq kilobytes , 1734af18995SSascha Wildner.Cm M 1743cea05a4SSascha Wildner.Pq megabytes 1753cea05a4SSascha Wildneror 1764af18995SSascha Wildner.Cm G 1773cea05a4SSascha Wildner.Pq gigabytes . 17809b03fffSSascha WildnerLowercase versions of 1794af18995SSascha Wildner.Cm K , M , 1804af18995SSascha Wildnerand 1814af18995SSascha Wildner.Cm G 1824af18995SSascha Wildnerare allowed. 183c5b0b0baSMatthew Dillon.It Fl n Ar numcpus 1848cf87c92SSascha WildnerSpecify the number of CPUs you wish to emulate. 18543cfb771SSascha WildnerUp to 16 CPUs are supported. 1868cf87c92SSascha WildnerThe virtual kernel must be built with 1878cf87c92SSascha Wildner.Cd options SMP 1888cf87c92SSascha Wildnerto use this option and will default to 2 CPUs unless otherwise specified. 189b02b4170SMatthew Dillon.It Fl p Ar file 190b02b4170SMatthew DillonSpecify a file in which to store the process ID. 191b02b4170SMatthew DillonA warning is issued if this file cannot be opened for writing. 1924af18995SSascha Wildner.It Fl r Ar file 193a72d8a9fSMatthew DillonSpecify a R/W disk image 1944af18995SSascha Wildner.Ar file 195ec1a8a4dSSascha Wildnerto be used by the kernel, with the first 196ec1a8a4dSSascha Wildner.Fl r 197ec1a8a4dSSascha Wildneroption defining 1980592e24dSSascha Wildner.Li vkd0 , 199ec1a8a4dSSascha Wildnerthe second one 2000592e24dSSascha Wildner.Li vkd1 , 20162aea38eSSascha Wildnerand so on. 20262aea38eSSascha WildnerThe first 203a72d8a9fSMatthew Dillon.Fl r 204a72d8a9fSMatthew Dillonor 205a72d8a9fSMatthew Dillon.Fl c 206a72d8a9fSMatthew Dillonoption specified on the command line will be the boot disk. 207c8e7d028SSascha Wildner.It Fl s 208c8e7d028SSascha WildnerBoot into single-user mode. 20903071031SSascha Wildner.It Fl U 21003071031SSascha WildnerEnable writing to kernel memory and module loading. 21103071031SSascha WildnerBy default, those are disabled for security reasons. 2124af18995SSascha Wildner.It Fl v 2134af18995SSascha WildnerTurn on verbose booting. 2144af18995SSascha Wildner.El 2150592e24dSSascha Wildner.Sh DEVICES 2160592e24dSSascha WildnerA number of virtual device drivers exist to supplement the virtual kernel. 2170592e24dSSascha Wildner.Ss Disk device 2180592e24dSSascha WildnerThe 2190592e24dSSascha Wildner.Nm vkd 2200592e24dSSascha Wildnerdriver allows for up to 16 2210592e24dSSascha Wildner.Xr vn 4 2220592e24dSSascha Wildnerbased disk devices. 2230592e24dSSascha WildnerThe root device will be 2240592e24dSSascha Wildner.Li vkd0 2250592e24dSSascha Wildner(see 2260592e24dSSascha Wildner.Sx EXAMPLES 2270592e24dSSascha Wildnerfor further information on how to prepare a root image). 22898b2ba80SSascha Wildner.Ss CD-ROM device 22998b2ba80SSascha WildnerThe 23098b2ba80SSascha Wildner.Nm vcd 23198b2ba80SSascha Wildnerdriver allows for up to 16 virtual CD-ROM devices. 23298b2ba80SSascha WildnerBasically this is a read only 23398b2ba80SSascha Wildner.Nm vkd 23498b2ba80SSascha Wildnerdevice with a block size of 2048. 2350592e24dSSascha Wildner.Ss Network interface 2360592e24dSSascha WildnerThe 2370592e24dSSascha Wildner.Nm vke 2380592e24dSSascha Wildnerdriver supports up to 16 virtual network interfaces which are associated with 2390592e24dSSascha Wildner.Xr tap 4 2400592e24dSSascha Wildnerdevices on the host. 2410592e24dSSascha WildnerFor each 2420592e24dSSascha Wildner.Nm vke 2430592e24dSSascha Wildnerdevice, the per-interface read only 2440592e24dSSascha Wildner.Xr sysctl 3 2450592e24dSSascha Wildnervariable 2460592e24dSSascha Wildner.Va hw.vke Ns Em X Ns Va .tap_unit 2470592e24dSSascha Wildnerholds the unit number of the associated 2480592e24dSSascha Wildner.Xr tap 4 2490592e24dSSascha Wildnerdevice. 2501e4d9fd9SSascha Wildner.Sh SIGNALS 251bb195a01SMatthew DillonThe virtual kernel only enables 252bb195a01SMatthew Dillon.Dv SIGQUIT 253bb195a01SMatthew Dillonand 254bb195a01SMatthew Dillon.Dv SIGTERM 255bb195a01SMatthew Dillonwhile operating in regular console mode. 256bb195a01SMatthew DillonSending 2571e4d9fd9SSascha Wildner.Ql \&^\e 2581e4d9fd9SSascha Wildner.Pq Dv SIGQUIT 259bb195a01SMatthew Dillonto the virtual kernel causes the virtual kernel to enter its internal 2601e4d9fd9SSascha Wildner.Xr ddb 4 261bb195a01SMatthew Dillondebugger and re-enable all other terminal signals. 262bb195a01SMatthew DillonSending 263bb195a01SMatthew Dillon.Dv SIGTERM 264bb195a01SMatthew Dillonto the virtual kernel triggers a clean shutdown by passing a 265bb195a01SMatthew Dillon.Dv SIGUSR2 266bb195a01SMatthew Dillonto the virtual kernel's 267bb195a01SMatthew Dillon.Xr init 8 268bb195a01SMatthew Dillonprocess. 269974b26bfSSascha Wildner.Sh DEBUGGING 270974b26bfSSascha WildnerIt is possible to directly gdb the virtual kernel's process. 271974b26bfSSascha WildnerIt is recommended that you do a 272974b26bfSSascha Wildner.Ql handle SIGSEGV noprint 2734010bf94SNicolas Theryto ignore page faults processed by the virtual kernel itself and 274e7c2f376SNicolas Thery.Ql handle SIGUSR1 noprint 2754010bf94SNicolas Theryto ignore signals used for simulating inter-processor interrupts (SMP build 2764010bf94SNicolas Theryonly). 277a154d422SThomas Nikolajsen.Sh FILES 278a154d422SThomas Nikolajsen.Bl -tag -width ".It Pa /sys/config/VKERNEL" -compact 279a154d422SThomas Nikolajsen.It Pa /sys/config/VKERNEL 280a154d422SThomas Nikolajsendefault 281a154d422SThomas Nikolajsen.Nm 282a154d422SThomas Nikolajsenconfiguration file, for 283a154d422SThomas Nikolajsen.Xr config 8 . 284a154d422SThomas Nikolajsen.El 285a68e0df0SSascha Wildner.Sh CONFIGURATION FILES 286a68e0df0SSascha WildnerYour virtual kernel is a complete 287a68e0df0SSascha Wildner.Dx 288a68e0df0SSascha Wildnersystem, but you might not want to run all the services a normal kernel runs. 289a68e0df0SSascha WildnerHere is what a typical virtual kernel's 290a68e0df0SSascha Wildner.Pa /etc/rc.conf 291a68e0df0SSascha Wildnerfile looks like, with some additional possibilities commented out. 292a68e0df0SSascha Wildner.Bd -literal 293a68e0df0SSascha Wildnerhostname="vkernel" 294a68e0df0SSascha Wildnernetwork_interfaces="lo0 vke0" 295a68e0df0SSascha Wildnerifconfig_vke0="DHCP" 296a68e0df0SSascha Wildnersendmail_enable="NO" 297a68e0df0SSascha Wildner#syslog_enable="NO" 298a68e0df0SSascha Wildnerblanktime="NO" 299a68e0df0SSascha Wildner.Ed 300c8e7d028SSascha Wildner.Sh EXAMPLES 3014af18995SSascha WildnerA couple of steps are necessary in order to prepare the system to build and 3024af18995SSascha Wildnerrun a virtual kernel. 3034af18995SSascha Wildner.Ss Setting up the filesystem 3044af18995SSascha WildnerThe 3054af18995SSascha Wildner.Nm 3064af18995SSascha Wildnerarchitecture needs a number of files which reside in 3074af18995SSascha Wildner.Pa /var/vkernel . 3084af18995SSascha WildnerSince these files tend to get rather big and the 3094af18995SSascha Wildner.Pa /var 3104af18995SSascha Wildnerpartition is usually of limited size, we recommend the directory to be 3114af18995SSascha Wildnercreated in the 3124af18995SSascha Wildner.Pa /home 3134af18995SSascha Wildnerpartition with a link to it in 3144af18995SSascha Wildner.Pa /var : 315c8e7d028SSascha Wildner.Bd -literal 316c009fcfaSThomas Nikolajsenmkdir -p /home/var.vkernel/boot 3174af18995SSascha Wildnerln -s /home/var.vkernel /var/vkernel 3184af18995SSascha Wildner.Ed 3194af18995SSascha Wildner.Pp 3204af18995SSascha WildnerNext, a filesystem image to be used by the virtual kernel has to be 32162aea38eSSascha Wildnercreated and populated (assuming world has been built previously). 32262aea38eSSascha WildnerIf the image is created on a UFS filesystem you might want to pre-zero it. 32349802d4eSMatthew DillonOn a HAMMER filesystem you should just truncate-extend to the image size 32449802d4eSMatthew Dillonas HAMMER does not re-use data blocks already present in the file. 325c8e7d028SSascha Wildner.Bd -literal 326f73862c5SSascha Wildnervnconfig -c -S 2g -T vn0 /var/vkernel/rootimg.01 32758c55700SSascha Wildnerdisklabel -r -w vn0s0 auto 328c009fcfaSThomas Nikolajsendisklabel -e vn0s0 # add `a' partition with fstype `4.2BSD' 32958c55700SSascha Wildnernewfs /dev/vn0s0a 33058c55700SSascha Wildnermount /dev/vn0s0a /mnt 331c8e7d028SSascha Wildnercd /usr/src 332c8e7d028SSascha Wildnermake installworld DESTDIR=/mnt 333c8e7d028SSascha Wildnercd etc 334c8e7d028SSascha Wildnermake distribution DESTDIR=/mnt 3357a3238b8SMatthew Dillonecho '/dev/vkd0s0a / ufs rw 1 1' >/mnt/etc/fstab 3367a3238b8SMatthew Dillonecho 'proc /proc procfs rw 0 0' >>/mnt/etc/fstab 3377834fbccSSascha Wildner.Ed 3387834fbccSSascha Wildner.Pp 3397834fbccSSascha WildnerEdit 3407834fbccSSascha Wildner.Pa /mnt/etc/ttys 3417834fbccSSascha Wildnerand replace the 3427834fbccSSascha Wildner.Li console 3437834fbccSSascha Wildnerentry with the following line and turn off all other gettys. 3447834fbccSSascha Wildner.Bd -literal 3457834fbccSSascha Wildnerconsole "/usr/libexec/getty Pc" cons25 on secure 3467834fbccSSascha Wildner.Ed 3477834fbccSSascha Wildner.Pp 348eed435ddSStathis KamperisReplace 349eed435ddSStathis Kamperis.Li \&Pc 350eed435ddSStathis Kamperiswith 351eed435ddSStathis Kamperis.Li al.Pc 352eed435ddSStathis Kamperisif you would like to automatically log in as root. 353eed435ddSStathis Kamperis.Pp 3547834fbccSSascha WildnerThen, unmount the disk. 3557834fbccSSascha Wildner.Bd -literal 3564af18995SSascha Wildnerumount /mnt 3574af18995SSascha Wildnervnconfig -u vn0 3584af18995SSascha Wildner.Ed 3594af18995SSascha Wildner.Ss Compiling the virtual kernel 3604af18995SSascha WildnerIn order to compile a virtual kernel use the 3614af18995SSascha Wildner.Li VKERNEL 3624af18995SSascha Wildnerkernel configuration file residing in 363a154d422SThomas Nikolajsen.Pa /sys/config 3644af18995SSascha Wildner(or a configuration file derived thereof): 365c8e7d028SSascha Wildner.Bd -literal 3664af18995SSascha Wildnercd /usr/src 36709b03fffSSascha Wildnermake -DNO_MODULES buildkernel KERNCONF=VKERNEL 36879b58aaeSMatthew Dillonmake -DNO_MODULES installkernel KERNCONF=VKERNEL DESTDIR=/var/vkernel 3694af18995SSascha Wildner.Ed 3704af18995SSascha Wildner.Ss Enabling virtual kernel operation 3714af18995SSascha WildnerA special 3724af18995SSascha Wildner.Xr sysctl 8 , 3734af18995SSascha Wildner.Va vm.vkernel_enable , 3744af18995SSascha Wildnermust be set to enable 3754af18995SSascha Wildner.Nm 3764af18995SSascha Wildneroperation: 377c8e7d028SSascha Wildner.Bd -literal 3784af18995SSascha Wildnersysctl vm.vkernel_enable=1 3794af18995SSascha Wildner.Ed 38009b03fffSSascha Wildner.Ss Configuring the network on the host system 38109b03fffSSascha WildnerIn order to access a network interface of the host system from the 38209b03fffSSascha Wildner.Nm , 38309b03fffSSascha Wildneryou must add the interface to a 38409b03fffSSascha Wildner.Xr bridge 4 38509b03fffSSascha Wildnerdevice which will then be passed to the 38609b03fffSSascha Wildner.Fl I 38709b03fffSSascha Wildneroption: 38809b03fffSSascha Wildner.Bd -literal 38909b03fffSSascha Wildnerkldload if_bridge.ko 39009b03fffSSascha Wildnerkldload if_tap.ko 39109b03fffSSascha Wildnerifconfig bridge0 create 39209b03fffSSascha Wildnerifconfig bridge0 addm re0 # assuming re0 is the host's interface 39309b03fffSSascha Wildnerifconfig bridge0 up 39409b03fffSSascha Wildner.Ed 3954af18995SSascha Wildner.Ss Running the kernel 3964af18995SSascha WildnerFinally, the virtual kernel can be run: 397c8e7d028SSascha Wildner.Bd -literal 39879b58aaeSMatthew Dilloncd /var/vkernel 399c009fcfaSThomas Nikolajsen\&./boot/kernel -m 64m -r rootimg.01 -I auto:bridge0 4004af18995SSascha Wildner.Ed 401c8e7d028SSascha Wildner.Pp 40279b58aaeSMatthew DillonYou can issue the 40379b58aaeSMatthew Dillon.Xr reboot 8 , 40479b58aaeSMatthew Dillon.Xr halt 8 , 40579b58aaeSMatthew Dillonor 40679b58aaeSMatthew Dillon.Xr shutdown 8 40779b58aaeSMatthew Dilloncommands from inside a virtual kernel. 40879b58aaeSMatthew DillonAfter doing a clean shutdown the 409c8e7d028SSascha Wildner.Xr reboot 8 41079b58aaeSMatthew Dilloncommand will re-exec the virtual kernel binary while the other two will 41179b58aaeSMatthew Dilloncause the virtual kernel to exit. 41234caba04SMatthew Dillon.Sh BUILDING THE WORLD UNDER A VKERNEL 41334caba04SMatthew DillonThe virtual kernel platform does not have all the header files expected 41434caba04SMatthew Dillonby a world build, so the easiest thing to do right now is to specify a 415b6a66df5SSascha Wildnerpc32 (in a 32 bit vkernel) or pc64 (in a 64 bit vkernel) target when 416b6a66df5SSascha Wildnerbuilding the world under a virtual kernel, like this: 41734caba04SMatthew Dillon.Bd -literal 41834caba04SMatthew Dillonvkernel# make MACHINE_PLATFORM=pc32 buildworld 41934caba04SMatthew Dillonvkernel# make MACHINE_PLATFORM=pc32 installworld 42034caba04SMatthew Dillon.Ed 4214af18995SSascha Wildner.Sh SEE ALSO 422666855caSSascha Wildner.Xr vknet 1 , 42309b03fffSSascha Wildner.Xr bridge 4 , 42409b03fffSSascha Wildner.Xr tap 4 , 425c8e7d028SSascha Wildner.Xr vn 4 , 426a154d422SThomas Nikolajsen.Xr sysctl.conf 5 , 427c8e7d028SSascha Wildner.Xr build 7 , 428c8e7d028SSascha Wildner.Xr disklabel 8 , 42909b03fffSSascha Wildner.Xr ifconfig 8 , 430dbfd168bSMatthew Dillon.Xr vknetd 8 , 431c8e7d028SSascha Wildner.Xr vnconfig 8 432c203b6f9SSascha Wildner.Rs 433c203b6f9SSascha Wildner.%A Aggelos Economopoulos 434c203b6f9SSascha Wildner.%D March 2007 435c203b6f9SSascha Wildner.%T "A Peek at the DragonFly Virtual Kernel" 436c203b6f9SSascha Wildner.Re 4374af18995SSascha Wildner.Sh HISTORY 4384af18995SSascha WildnerVirtual kernels were introduced in 4394af18995SSascha Wildner.Dx 1.7 . 4404af18995SSascha Wildner.Sh AUTHORS 4414af18995SSascha Wildner.An -nosplit 4424af18995SSascha Wildner.An Matt Dillon 4434af18995SSascha Wildnerthought up and implemented the 4444af18995SSascha Wildner.Nm 4450592e24dSSascha Wildnerarchitecture and wrote the 4460592e24dSSascha Wildner.Nm vkd 4470592e24dSSascha Wildnerdevice driver. 4480592e24dSSascha Wildner.An Sepherosa Ziehau 4490592e24dSSascha Wildnerwrote the 4500592e24dSSascha Wildner.Nm vke 4510592e24dSSascha Wildnerdevice driver. 4524af18995SSascha WildnerThis manual page was written by 4534af18995SSascha Wildner.An Sascha Wildner . 454