1.\" 2.\" Copyright (c) 2003, 2004, 2005, 2006, 2007 3.\" The DragonFly Project. All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 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 14.\" distribution. 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. 18.\" 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 30.\" SUCH DAMAGE. 31.\" 32.\" $DragonFly: src/share/man/man7/vkernel.7,v 1.2 2007/01/14 10:43:32 swildner Exp $ 33.\" 34.Dd January 14, 2007 35.Dt VKERNEL 7 36.Os 37.Sh NAME 38.Nm vkernel 39.Nd virtual kernel architecture 40.Sh SYNOPSIS 41.Cd "machine vkernel" 42.Cd "device vkd" 43.Cd "device vke" 44.Pp 45.Pa /usr/obj/usr/src/sys/VKERNEL/kernel.debug 46.Op Fl sv 47.Op Fl e Ar environment 48.\".Op Fl i Ar file 49.\".Op Fl I Ar interface 50.Op Fl m Ar size 51.Op Fl r Ar file 52.Sh DESCRIPTION 53The 54.Nm 55architecture allows for running 56.Dx 57kernels in userland. 58.Pp 59The following options are available: 60.Bl -tag -width ".Fl m Ar size" 61.It Fl e Ar environment 62Specify an 63.Ar environment 64to be used by the kernel. 65The argument is a string of the form 66.Li name=value:name=value:... 67.\".It Fl i Ar file 68.\"Specify a memory image 69.\".Ar file 70.\"to be used by the kernel. 71.\".It Fl I Ar interface 72.\"Specify the host system's network interface to be used by the virtual kernel. 73.\"This is usually a 74.\".Xr tap 4 75.\"interface. 76.It Fl m Ar size 77Specify the amount of memory to be used by the kernel in bytes, 78.Cm K 79(kilobytes), 80.Cm M 81(megabytes) or 82.Cm G 83(gigabytes). 84Lowercase version of 85.Cm K , M , 86and 87.Cm G 88are allowed. 89.It Fl r Ar file 90Specify the root image 91.Ar file 92to be used by the kernel. 93See 94.Sx EXAMPLES 95for further information on how to prepare a root image. 96.It Fl s 97Boot into single-user mode. 98.It Fl v 99Turn on verbose booting. 100.El 101.Sh EXAMPLES 102A couple of steps are necessary in order to prepare the system to build and 103run a virtual kernel. 104.Ss Setting up the filesystem 105The 106.Nm 107architecture needs a number of files which reside in 108.Pa /var/vkernel . 109Since these files tend to get rather big and the 110.Pa /var 111partition is usually of limited size, we recommend the directory to be 112created in the 113.Pa /home 114partition with a link to it in 115.Pa /var : 116.Bd -literal 117mkdir /home/var.vkernel 118ln -s /home/var.vkernel /var/vkernel 119.Ed 120.Pp 121Next, a filesystem image to be used by the virtual kernel has to be 122created and populated (assuming world has been built previously): 123.Bd -literal 124dd if=/dev/zero of=/var/vkernel/rootimg.01 bs=1m count=2048 125vnconfig -c -s labels vn0 /var/vkernel/rootimg.01 126disklabel -r -w vn0 auto 127disklabel -e vn0 # edit the label to create a vn0a partition 128newfs /dev/vn0a 129mount /dev/vn0a /mnt 130cd /usr/src 131make installworld DESTDIR=/mnt 132cd etc 133make distribution DESTDIR=/mnt 134echo '/dev/vkd0 / ufs rw 1 1' >/mnt/etc/fstab 135echo 'console "/usr/libexec/getty Pc" cons25 on secure' >/mnt/etc/ttys 136umount /mnt 137vnconfig -u vn0 138.Ed 139.Ss Compiling the virtual kernel 140In order to compile a virtual kernel use the 141.Li VKERNEL 142kernel configuration file residing in 143.Pa /usr/src/sys/config 144(or a configuration file derived thereof): 145.Bd -literal 146cd /usr/src 147make buildkernel KERNCONF=VKERNEL 148.Ed 149.Ss Enabling virtual kernel operation 150A special 151.Xr sysctl 8 , 152.Va vm.vkernel_enable , 153must be set to enable 154.Nm 155operation: 156.Bd -literal 157sysctl vm.vkernel_enable=1 158.Ed 159.Ss Running the kernel 160Finally, the virtual kernel can be run: 161.Bd -literal 162cd /usr/obj/usr/src/sys/VKERNEL 163\&./kernel.debug -m 64m -r /var/vkernel/rootimg.01 164.Ed 165.Pp 166The 167.Xr reboot 8 168command can be used to stop a virtual kernel. 169.\".Ss Setting up the network in the host system 170.\".Bd -literal 171.\"XXX 172.\".Ed 173.Sh SEE ALSO 174.\".Xr tap 4 , 175.Xr vn 4 , 176.Xr build 7 , 177.Xr disklabel 8 , 178.Xr vnconfig 8 179.Sh HISTORY 180Virtual kernels were introduced in 181.Dx 1.7 . 182.Sh AUTHORS 183.An -nosplit 184.An Matt Dillon 185thought up and implemented the 186.Nm 187architecture. 188This manual page was written by 189.An Sascha Wildner . 190.Sh BUGS 191Virtual kernels are not yet fully operational. 192