xref: /dflybsd-src/share/man/man7/vkernel.7 (revision ec1a8a4da7fde70bf84bc6a888966c52cfafd3ed)
14af18995SSascha Wildner.\"
24af18995SSascha Wildner.\" Copyright (c) 2003, 2004, 2005, 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*ec1a8a4dSSascha Wildner.\" $DragonFly: src/share/man/man7/vkernel.7,v 1.13 2007/03/16 13:42:11 swildner Exp $
334af18995SSascha Wildner.\"
34dd54cb3aSSascha Wildner.Dd March 16, 2007
354af18995SSascha Wildner.Dt VKERNEL 7
364af18995SSascha Wildner.Os
374af18995SSascha Wildner.Sh NAME
384af18995SSascha Wildner.Nm vkernel
394af18995SSascha Wildner.Nd virtual kernel architecture
404af18995SSascha Wildner.Sh SYNOPSIS
4165d7306bSSascha Wildner.Cd "platform vkernel"
42c8e7d028SSascha Wildner.Cd "device vkd"
43c8e7d028SSascha Wildner.Cd "device vke"
44c8e7d028SSascha Wildner.Pp
454af18995SSascha Wildner.Pa /usr/obj/usr/src/sys/VKERNEL/kernel.debug
4603071031SSascha Wildner.Op Fl sUv
4709b03fffSSascha Wildner.Op Fl e Ar name Ns = Ns Li value : Ns Ar name Ns = Ns Li value : Ns ...
48dd54cb3aSSascha Wildner.Op Fl i Ar file
4909b03fffSSascha Wildner.Op Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc
504af18995SSascha Wildner.Op Fl m Ar size
514af18995SSascha Wildner.Op Fl r Ar file
524af18995SSascha Wildner.Sh DESCRIPTION
534af18995SSascha WildnerThe
544af18995SSascha Wildner.Nm
554af18995SSascha Wildnerarchitecture allows for running
564af18995SSascha Wildner.Dx
574af18995SSascha Wildnerkernels in userland.
584af18995SSascha Wildner.Pp
594af18995SSascha WildnerThe following options are available:
604af18995SSascha Wildner.Bl -tag -width ".Fl m Ar size"
6109b03fffSSascha Wildner.It Fl e Ar name Ns = Ns Li value : Ns Ar name Ns = Ns Li value : Ns ...
6209b03fffSSascha WildnerSpecify an environment to be used by the kernel.
63dd54cb3aSSascha Wildner.It Fl i Ar file
64dd54cb3aSSascha WildnerSpecify a memory image
65dd54cb3aSSascha Wildner.Ar file
66dd54cb3aSSascha Wildnerto be used by the virtual kernel.
67dd54cb3aSSascha WildnerIf no
68dd54cb3aSSascha Wildner.Fl i
69dd54cb3aSSascha Wildneroption is given, the kernel will generate a name of the form
70dd54cb3aSSascha Wildner.Pa /var/vkernel/memimg.XXXXXX ,
71dd54cb3aSSascha Wildnerwith the trailing
72dd54cb3aSSascha Wildner.Ql X Ns s
73dd54cb3aSSascha Wildnerbeing replaced by a sequential number, e.g.\&
74dd54cb3aSSascha Wildner.Pa memimg.000001 .
7509b03fffSSascha Wildner.It Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc
7609b03fffSSascha WildnerCreate a virtual network device, with the first
7709b03fffSSascha Wildner.Fl I
7809b03fffSSascha Wildneroption defining
7909b03fffSSascha Wildner.Dq Li vke0 ,
8009b03fffSSascha Wildnerthe second one
8109b03fffSSascha Wildner.Dq Li vke1 ,
8209b03fffSSascha Wildnerand so on.
8309b03fffSSascha Wildner.Pp
8409b03fffSSascha WildnerThe
8509b03fffSSascha Wildner.Ar interface
8609b03fffSSascha Wildnerargument is the name of a
8709b03fffSSascha Wildner.Xr tap 4
8809b03fffSSascha Wildnerdevice node.
8909b03fffSSascha WildnerThe
9009b03fffSSascha Wildner.Pa /dev/
9109b03fffSSascha Wildnerpath prefix does not have to be specified and will be automatically prepended.
9209b03fffSSascha WildnerSpecifying
9309b03fffSSascha Wildner.Cm auto
9409b03fffSSascha Wildnerwill pick the first unused
9509b03fffSSascha Wildner.Xr tap 4
9609b03fffSSascha Wildnerdevice.
9709b03fffSSascha Wildner.Pp
9809b03fffSSascha WildnerThe
9909b03fffSSascha Wildner.Ar address1
10009b03fffSSascha Wildnerand
10109b03fffSSascha Wildner.Ar address2
10209b03fffSSascha Wildnerarguments are the IP addresses of the
10309b03fffSSascha Wildner.Xr tap 4
10409b03fffSSascha Wildnerand
10509b03fffSSascha Wildner.Xr vke 4
10609b03fffSSascha Wildnerinterfaces.
10709b03fffSSascha WildnerOptionally,
10809b03fffSSascha Wildner.Ar address1
10909b03fffSSascha Wildnermay be of the form
11009b03fffSSascha Wildner.Li bridge Ns Em X
11109b03fffSSascha Wildnerin which case the
11209b03fffSSascha Wildner.Xr tap 4
11309b03fffSSascha Wildnerinterface is added to the specified
11409b03fffSSascha Wildner.Xr bridge 4
11509b03fffSSascha Wildnerinterface.
11609b03fffSSascha Wildner.Pp
11709b03fffSSascha WildnerThe
11809b03fffSSascha Wildner.Ar netmask
11909b03fffSSascha Wildnerargument applies to all interfaces for which an address is specified.
120b580b1b1SSascha Wildner.Pp
121b580b1b1SSascha WildnerThe
122b580b1b1SSascha Wildner.Nm
123b580b1b1SSascha Wildnerarchitecture allows for a maximum of 16 virtual network devices.
1244af18995SSascha Wildner.It Fl m Ar size
1254af18995SSascha WildnerSpecify the amount of memory to be used by the kernel in bytes,
1264af18995SSascha Wildner.Cm K
1273cea05a4SSascha Wildner.Pq kilobytes ,
1284af18995SSascha Wildner.Cm M
1293cea05a4SSascha Wildner.Pq megabytes
1303cea05a4SSascha Wildneror
1314af18995SSascha Wildner.Cm G
1323cea05a4SSascha Wildner.Pq gigabytes .
13309b03fffSSascha WildnerLowercase versions of
1344af18995SSascha Wildner.Cm K , M ,
1354af18995SSascha Wildnerand
1364af18995SSascha Wildner.Cm G
1374af18995SSascha Wildnerare allowed.
1384af18995SSascha Wildner.It Fl r Ar file
139*ec1a8a4dSSascha WildnerSpecify a disk image
1404af18995SSascha Wildner.Ar file
141*ec1a8a4dSSascha Wildnerto be used by the kernel, with the first
142*ec1a8a4dSSascha Wildner.Fl r
143*ec1a8a4dSSascha Wildneroption defining
144*ec1a8a4dSSascha Wildner.Dq Li vkd0 ,
145*ec1a8a4dSSascha Wildnerthe second one
146*ec1a8a4dSSascha Wildner.Dq Li vkd1 ,
147*ec1a8a4dSSascha Wildnerand so on.
148*ec1a8a4dSSascha WildnerNote that
149*ec1a8a4dSSascha Wildner.Dq Li vkd0
150*ec1a8a4dSSascha Wildnerwill be used as the root device
151*ec1a8a4dSSascha Wildner.Po
152*ec1a8a4dSSascha Wildnersee
153c8e7d028SSascha Wildner.Sx EXAMPLES
154*ec1a8a4dSSascha Wildnerfor further information on how to prepare a root image
155*ec1a8a4dSSascha Wildner.Pc .
156*ec1a8a4dSSascha Wildner.Pp
157*ec1a8a4dSSascha WildnerThe
158*ec1a8a4dSSascha Wildner.Nm
159*ec1a8a4dSSascha Wildnerarchitecture allows for a maximum of 16 virtual disks.
160c8e7d028SSascha Wildner.It Fl s
161c8e7d028SSascha WildnerBoot into single-user mode.
16203071031SSascha Wildner.It Fl U
16303071031SSascha WildnerEnable writing to kernel memory and module loading.
16403071031SSascha WildnerBy default, those are disabled for security reasons.
1654af18995SSascha Wildner.It Fl v
1664af18995SSascha WildnerTurn on verbose booting.
1674af18995SSascha Wildner.El
1681e4d9fd9SSascha Wildner.Sh SIGNALS
1691e4d9fd9SSascha WildnerThe virtual kernel enables all terminal signals while in
1701e4d9fd9SSascha Wildner.Xr ddb 4
1711e4d9fd9SSascha Wildnermode but only enables
1721e4d9fd9SSascha Wildner.Ql \&^\e
1731e4d9fd9SSascha Wildner.Pq Dv SIGQUIT
1741e4d9fd9SSascha Wildnerwhile operating as a console which causes the virtual kernel to enter its
1751e4d9fd9SSascha Wildnerinternal
1761e4d9fd9SSascha Wildner.Xr ddb 4
1771e4d9fd9SSascha Wildnerdebugger.
178c8e7d028SSascha Wildner.Sh EXAMPLES
1794af18995SSascha WildnerA couple of steps are necessary in order to prepare the system to build and
1804af18995SSascha Wildnerrun a virtual kernel.
1814af18995SSascha Wildner.Ss Setting up the filesystem
1824af18995SSascha WildnerThe
1834af18995SSascha Wildner.Nm
1844af18995SSascha Wildnerarchitecture needs a number of files which reside in
1854af18995SSascha Wildner.Pa /var/vkernel .
1864af18995SSascha WildnerSince these files tend to get rather big and the
1874af18995SSascha Wildner.Pa /var
1884af18995SSascha Wildnerpartition is usually of limited size, we recommend the directory to be
1894af18995SSascha Wildnercreated in the
1904af18995SSascha Wildner.Pa /home
1914af18995SSascha Wildnerpartition with a link to it in
1924af18995SSascha Wildner.Pa /var :
193c8e7d028SSascha Wildner.Bd -literal
1944af18995SSascha Wildnermkdir /home/var.vkernel
1954af18995SSascha Wildnerln -s /home/var.vkernel /var/vkernel
1964af18995SSascha Wildner.Ed
1974af18995SSascha Wildner.Pp
1984af18995SSascha WildnerNext, a filesystem image to be used by the virtual kernel has to be
199c8e7d028SSascha Wildnercreated and populated (assuming world has been built previously):
200c8e7d028SSascha Wildner.Bd -literal
2014af18995SSascha Wildnerdd if=/dev/zero of=/var/vkernel/rootimg.01 bs=1m count=2048
2024af18995SSascha Wildnervnconfig -c -s labels vn0 /var/vkernel/rootimg.01
2034af18995SSascha Wildnerdisklabel -r -w vn0 auto
204c8e7d028SSascha Wildnerdisklabel -e vn0	# edit the label to create a vn0a partition
2054af18995SSascha Wildnernewfs /dev/vn0a
2064af18995SSascha Wildnermount /dev/vn0a /mnt
207c8e7d028SSascha Wildnercd /usr/src
208c8e7d028SSascha Wildnermake installworld DESTDIR=/mnt
209c8e7d028SSascha Wildnercd etc
210c8e7d028SSascha Wildnermake distribution DESTDIR=/mnt
2116a060312SSascha Wildnerecho '/dev/vkd0a / ufs rw 1 1' >/mnt/etc/fstab
212c8e7d028SSascha Wildnerecho 'console "/usr/libexec/getty Pc" cons25 on secure' >/mnt/etc/ttys
2134af18995SSascha Wildnerumount /mnt
2144af18995SSascha Wildnervnconfig -u vn0
2154af18995SSascha Wildner.Ed
2164af18995SSascha Wildner.Ss Compiling the virtual kernel
2174af18995SSascha WildnerIn order to compile a virtual kernel use the
2184af18995SSascha Wildner.Li VKERNEL
2194af18995SSascha Wildnerkernel configuration file residing in
2204af18995SSascha Wildner.Pa /usr/src/sys/config
2214af18995SSascha Wildner(or a configuration file derived thereof):
222c8e7d028SSascha Wildner.Bd -literal
2234af18995SSascha Wildnercd /usr/src
22409b03fffSSascha Wildnermake -DNO_MODULES buildkernel KERNCONF=VKERNEL
2254af18995SSascha Wildner.Ed
2264af18995SSascha Wildner.Ss Enabling virtual kernel operation
2274af18995SSascha WildnerA special
2284af18995SSascha Wildner.Xr sysctl 8 ,
2294af18995SSascha Wildner.Va vm.vkernel_enable ,
2304af18995SSascha Wildnermust be set to enable
2314af18995SSascha Wildner.Nm
2324af18995SSascha Wildneroperation:
233c8e7d028SSascha Wildner.Bd -literal
2344af18995SSascha Wildnersysctl vm.vkernel_enable=1
2354af18995SSascha Wildner.Ed
23609b03fffSSascha Wildner.Ss Configuring the network on the host system
23709b03fffSSascha WildnerIn order to access a network interface of the host system from the
23809b03fffSSascha Wildner.Nm ,
23909b03fffSSascha Wildneryou must add the interface to a
24009b03fffSSascha Wildner.Xr bridge 4
24109b03fffSSascha Wildnerdevice which will then be passed to the
24209b03fffSSascha Wildner.Fl I
24309b03fffSSascha Wildneroption:
24409b03fffSSascha Wildner.Bd -literal
24509b03fffSSascha Wildnerkldload if_bridge.ko
24609b03fffSSascha Wildnerkldload if_tap.ko
24709b03fffSSascha Wildnerifconfig bridge0 create
24809b03fffSSascha Wildnerifconfig bridge0 addm re0	# assuming re0 is the host's interface
24909b03fffSSascha Wildnerifconfig bridge0 up
25009b03fffSSascha Wildner.Ed
2514af18995SSascha Wildner.Ss Running the kernel
2524af18995SSascha WildnerFinally, the virtual kernel can be run:
253c8e7d028SSascha Wildner.Bd -literal
2544af18995SSascha Wildnercd /usr/obj/usr/src/sys/VKERNEL
25509b03fffSSascha Wildner\&./kernel.debug -m 64m -r /var/vkernel/rootimg.01 -I auto:bridge0
2564af18995SSascha Wildner.Ed
257c8e7d028SSascha Wildner.Pp
258c8e7d028SSascha WildnerThe
259c8e7d028SSascha Wildner.Xr reboot 8
260c8e7d028SSascha Wildnercommand can be used to stop a virtual kernel.
2613e22cf8cSMatthew Dillon.Ss Debugging the kernel
2623e22cf8cSMatthew DillonIt is possible to directly gdb the virtual kernel's process.  It is
2633e22cf8cSMatthew Dillonrecommended that you do a 'handle SIGSEGV noprint' to ignore page faults
2643e22cf8cSMatthew Dillontaken by the virtual kernel itself (which it processes itself).
2654af18995SSascha Wildner.Sh SEE ALSO
26609b03fffSSascha Wildner.Xr bridge 4 ,
26709b03fffSSascha Wildner.Xr tap 4 ,
268c8e7d028SSascha Wildner.Xr vn 4 ,
269c8e7d028SSascha Wildner.Xr build 7 ,
270c8e7d028SSascha Wildner.Xr disklabel 8 ,
27109b03fffSSascha Wildner.Xr ifconfig 8 ,
272c8e7d028SSascha Wildner.Xr vnconfig 8
2734af18995SSascha Wildner.Sh HISTORY
2744af18995SSascha WildnerVirtual kernels were introduced in
2754af18995SSascha Wildner.Dx 1.7 .
2764af18995SSascha Wildner.Sh AUTHORS
2774af18995SSascha Wildner.An -nosplit
2784af18995SSascha Wildner.An Matt Dillon
2794af18995SSascha Wildnerthought up and implemented the
2804af18995SSascha Wildner.Nm
2814af18995SSascha Wildnerarchitecture.
2824af18995SSascha WildnerThis manual page was written by
2834af18995SSascha Wildner.An Sascha Wildner .
284