xref: /dflybsd-src/share/man/man7/vkernel.7 (revision 0592e24df5345f0813d8568febf2f3c8958254b2)
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*0592e24dSSascha Wildner.\" $DragonFly: src/share/man/man7/vkernel.7,v 1.15 2007/04/20 07:04:09 swildner Exp $
334af18995SSascha Wildner.\"
34*0592e24dSSascha Wildner.Dd April 19, 2007
354af18995SSascha Wildner.Dt VKERNEL 7
364af18995SSascha Wildner.Os
374af18995SSascha Wildner.Sh NAME
38*0592e24dSSascha Wildner.Nm vkernel ,
39*0592e24dSSascha Wildner.Nm vkd ,
40*0592e24dSSascha Wildner.Nm vke
414af18995SSascha Wildner.Nd virtual kernel architecture
424af18995SSascha Wildner.Sh SYNOPSIS
4365d7306bSSascha Wildner.Cd "platform vkernel"
44c8e7d028SSascha Wildner.Cd "device vkd"
45c8e7d028SSascha Wildner.Cd "device vke"
46c8e7d028SSascha Wildner.Pp
474af18995SSascha Wildner.Pa /usr/obj/usr/src/sys/VKERNEL/kernel.debug
4803071031SSascha Wildner.Op Fl sUv
4909b03fffSSascha Wildner.Op Fl e Ar name Ns = Ns Li value : Ns Ar name Ns = Ns Li value : Ns ...
50dd54cb3aSSascha Wildner.Op Fl i Ar file
5109b03fffSSascha Wildner.Op Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc
524af18995SSascha Wildner.Op Fl m Ar size
534af18995SSascha Wildner.Op Fl r Ar file
544af18995SSascha Wildner.Sh DESCRIPTION
554af18995SSascha WildnerThe
564af18995SSascha Wildner.Nm
574af18995SSascha Wildnerarchitecture allows for running
584af18995SSascha Wildner.Dx
594af18995SSascha Wildnerkernels in userland.
604af18995SSascha Wildner.Pp
614af18995SSascha WildnerThe following options are available:
624af18995SSascha Wildner.Bl -tag -width ".Fl m Ar size"
6309b03fffSSascha Wildner.It Fl e Ar name Ns = Ns Li value : Ns Ar name Ns = Ns Li value : Ns ...
6409b03fffSSascha WildnerSpecify an environment to be used by the kernel.
65dd54cb3aSSascha Wildner.It Fl i Ar file
66dd54cb3aSSascha WildnerSpecify a memory image
67dd54cb3aSSascha Wildner.Ar file
68dd54cb3aSSascha Wildnerto be used by the virtual kernel.
69dd54cb3aSSascha WildnerIf no
70dd54cb3aSSascha Wildner.Fl i
71dd54cb3aSSascha Wildneroption is given, the kernel will generate a name of the form
72dd54cb3aSSascha Wildner.Pa /var/vkernel/memimg.XXXXXX ,
73dd54cb3aSSascha Wildnerwith the trailing
74dd54cb3aSSascha Wildner.Ql X Ns s
75dd54cb3aSSascha Wildnerbeing replaced by a sequential number, e.g.\&
76dd54cb3aSSascha Wildner.Pa memimg.000001 .
7709b03fffSSascha Wildner.It Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc
7809b03fffSSascha WildnerCreate a virtual network device, with the first
7909b03fffSSascha Wildner.Fl I
8009b03fffSSascha Wildneroption defining
81*0592e24dSSascha Wildner.Li vke0 ,
8209b03fffSSascha Wildnerthe second one
83*0592e24dSSascha Wildner.Li vke1 ,
8409b03fffSSascha Wildnerand so on.
8509b03fffSSascha Wildner.Pp
8609b03fffSSascha WildnerThe
8709b03fffSSascha Wildner.Ar interface
8809b03fffSSascha Wildnerargument is the name of a
8909b03fffSSascha Wildner.Xr tap 4
9009b03fffSSascha Wildnerdevice node.
9109b03fffSSascha WildnerThe
9209b03fffSSascha Wildner.Pa /dev/
9309b03fffSSascha Wildnerpath prefix does not have to be specified and will be automatically prepended.
9409b03fffSSascha WildnerSpecifying
9509b03fffSSascha Wildner.Cm auto
9609b03fffSSascha Wildnerwill pick the first unused
9709b03fffSSascha Wildner.Xr tap 4
9809b03fffSSascha Wildnerdevice.
9909b03fffSSascha Wildner.Pp
10009b03fffSSascha WildnerThe
10109b03fffSSascha Wildner.Ar address1
10209b03fffSSascha Wildnerand
10309b03fffSSascha Wildner.Ar address2
10409b03fffSSascha Wildnerarguments are the IP addresses of the
10509b03fffSSascha Wildner.Xr tap 4
10609b03fffSSascha Wildnerand
107*0592e24dSSascha Wildner.Nm vke
10809b03fffSSascha Wildnerinterfaces.
10909b03fffSSascha WildnerOptionally,
11009b03fffSSascha Wildner.Ar address1
11109b03fffSSascha Wildnermay be of the form
11209b03fffSSascha Wildner.Li bridge Ns Em X
11309b03fffSSascha Wildnerin which case the
11409b03fffSSascha Wildner.Xr tap 4
11509b03fffSSascha Wildnerinterface is added to the specified
11609b03fffSSascha Wildner.Xr bridge 4
11709b03fffSSascha Wildnerinterface.
11809b03fffSSascha Wildner.Pp
11909b03fffSSascha WildnerThe
12009b03fffSSascha Wildner.Ar netmask
12109b03fffSSascha Wildnerargument applies to all interfaces for which an address is specified.
1224af18995SSascha Wildner.It Fl m Ar size
1234af18995SSascha WildnerSpecify the amount of memory to be used by the kernel in bytes,
1244af18995SSascha Wildner.Cm K
1253cea05a4SSascha Wildner.Pq kilobytes ,
1264af18995SSascha Wildner.Cm M
1273cea05a4SSascha Wildner.Pq megabytes
1283cea05a4SSascha Wildneror
1294af18995SSascha Wildner.Cm G
1303cea05a4SSascha Wildner.Pq gigabytes .
13109b03fffSSascha WildnerLowercase versions of
1324af18995SSascha Wildner.Cm K , M ,
1334af18995SSascha Wildnerand
1344af18995SSascha Wildner.Cm G
1354af18995SSascha Wildnerare allowed.
1364af18995SSascha Wildner.It Fl r Ar file
137ec1a8a4dSSascha WildnerSpecify a disk image
1384af18995SSascha Wildner.Ar file
139ec1a8a4dSSascha Wildnerto be used by the kernel, with the first
140ec1a8a4dSSascha Wildner.Fl r
141ec1a8a4dSSascha Wildneroption defining
142*0592e24dSSascha Wildner.Li vkd0 ,
143ec1a8a4dSSascha Wildnerthe second one
144*0592e24dSSascha Wildner.Li vkd1 ,
145ec1a8a4dSSascha Wildnerand so on.
146c8e7d028SSascha Wildner.It Fl s
147c8e7d028SSascha WildnerBoot into single-user mode.
14803071031SSascha Wildner.It Fl U
14903071031SSascha WildnerEnable writing to kernel memory and module loading.
15003071031SSascha WildnerBy default, those are disabled for security reasons.
1514af18995SSascha Wildner.It Fl v
1524af18995SSascha WildnerTurn on verbose booting.
1534af18995SSascha Wildner.El
154*0592e24dSSascha Wildner.Sh DEVICES
155*0592e24dSSascha WildnerA number of virtual device drivers exist to supplement the virtual kernel.
156*0592e24dSSascha WildnerTheir names start with
157*0592e24dSSascha Wildner.Li vk .
158*0592e24dSSascha Wildner.Ss Disk device
159*0592e24dSSascha WildnerThe
160*0592e24dSSascha Wildner.Nm vkd
161*0592e24dSSascha Wildnerdriver allows for up to 16
162*0592e24dSSascha Wildner.Xr vn 4
163*0592e24dSSascha Wildnerbased disk devices.
164*0592e24dSSascha WildnerThe root device will be
165*0592e24dSSascha Wildner.Li vkd0
166*0592e24dSSascha Wildner(see
167*0592e24dSSascha Wildner.Sx EXAMPLES
168*0592e24dSSascha Wildnerfor further information on how to prepare a root image).
169*0592e24dSSascha Wildner.Ss Network interface
170*0592e24dSSascha WildnerThe
171*0592e24dSSascha Wildner.Nm vke
172*0592e24dSSascha Wildnerdriver supports up to 16 virtual network interfaces which are associated with
173*0592e24dSSascha Wildner.Xr tap 4
174*0592e24dSSascha Wildnerdevices on the host.
175*0592e24dSSascha WildnerFor each
176*0592e24dSSascha Wildner.Nm vke
177*0592e24dSSascha Wildnerdevice, the per-interface read only
178*0592e24dSSascha Wildner.Xr sysctl 3
179*0592e24dSSascha Wildnervariable
180*0592e24dSSascha Wildner.Va hw.vke Ns Em X Ns Va .tap_unit
181*0592e24dSSascha Wildnerholds the unit number of the associated
182*0592e24dSSascha Wildner.Xr tap 4
183*0592e24dSSascha Wildnerdevice.
1841e4d9fd9SSascha Wildner.Sh SIGNALS
1851e4d9fd9SSascha WildnerThe virtual kernel enables all terminal signals while in
1861e4d9fd9SSascha Wildner.Xr ddb 4
1871e4d9fd9SSascha Wildnermode but only enables
1881e4d9fd9SSascha Wildner.Ql \&^\e
1891e4d9fd9SSascha Wildner.Pq Dv SIGQUIT
1901e4d9fd9SSascha Wildnerwhile operating as a console which causes the virtual kernel to enter its
1911e4d9fd9SSascha Wildnerinternal
1921e4d9fd9SSascha Wildner.Xr ddb 4
1931e4d9fd9SSascha Wildnerdebugger.
194974b26bfSSascha Wildner.Sh DEBUGGING
195974b26bfSSascha WildnerIt is possible to directly gdb the virtual kernel's process.
196974b26bfSSascha WildnerIt is recommended that you do a
197974b26bfSSascha Wildner.Ql handle SIGSEGV noprint
198974b26bfSSascha Wildnerto ignore page faults processed by the virtual kernel itself.
199c8e7d028SSascha Wildner.Sh EXAMPLES
2004af18995SSascha WildnerA couple of steps are necessary in order to prepare the system to build and
2014af18995SSascha Wildnerrun a virtual kernel.
2024af18995SSascha Wildner.Ss Setting up the filesystem
2034af18995SSascha WildnerThe
2044af18995SSascha Wildner.Nm
2054af18995SSascha Wildnerarchitecture needs a number of files which reside in
2064af18995SSascha Wildner.Pa /var/vkernel .
2074af18995SSascha WildnerSince these files tend to get rather big and the
2084af18995SSascha Wildner.Pa /var
2094af18995SSascha Wildnerpartition is usually of limited size, we recommend the directory to be
2104af18995SSascha Wildnercreated in the
2114af18995SSascha Wildner.Pa /home
2124af18995SSascha Wildnerpartition with a link to it in
2134af18995SSascha Wildner.Pa /var :
214c8e7d028SSascha Wildner.Bd -literal
2154af18995SSascha Wildnermkdir /home/var.vkernel
2164af18995SSascha Wildnerln -s /home/var.vkernel /var/vkernel
2174af18995SSascha Wildner.Ed
2184af18995SSascha Wildner.Pp
2194af18995SSascha WildnerNext, a filesystem image to be used by the virtual kernel has to be
220c8e7d028SSascha Wildnercreated and populated (assuming world has been built previously):
221c8e7d028SSascha Wildner.Bd -literal
2224af18995SSascha Wildnerdd if=/dev/zero of=/var/vkernel/rootimg.01 bs=1m count=2048
2234af18995SSascha Wildnervnconfig -c -s labels vn0 /var/vkernel/rootimg.01
2244af18995SSascha Wildnerdisklabel -r -w vn0 auto
225c8e7d028SSascha Wildnerdisklabel -e vn0	# edit the label to create a vn0a partition
2264af18995SSascha Wildnernewfs /dev/vn0a
2274af18995SSascha Wildnermount /dev/vn0a /mnt
228c8e7d028SSascha Wildnercd /usr/src
229c8e7d028SSascha Wildnermake installworld DESTDIR=/mnt
230c8e7d028SSascha Wildnercd etc
231c8e7d028SSascha Wildnermake distribution DESTDIR=/mnt
2326a060312SSascha Wildnerecho '/dev/vkd0a / ufs rw 1 1' >/mnt/etc/fstab
233c8e7d028SSascha Wildnerecho 'console "/usr/libexec/getty Pc" cons25 on secure' >/mnt/etc/ttys
2344af18995SSascha Wildnerumount /mnt
2354af18995SSascha Wildnervnconfig -u vn0
2364af18995SSascha Wildner.Ed
2374af18995SSascha Wildner.Ss Compiling the virtual kernel
2384af18995SSascha WildnerIn order to compile a virtual kernel use the
2394af18995SSascha Wildner.Li VKERNEL
2404af18995SSascha Wildnerkernel configuration file residing in
2414af18995SSascha Wildner.Pa /usr/src/sys/config
2424af18995SSascha Wildner(or a configuration file derived thereof):
243c8e7d028SSascha Wildner.Bd -literal
2444af18995SSascha Wildnercd /usr/src
24509b03fffSSascha Wildnermake -DNO_MODULES buildkernel KERNCONF=VKERNEL
2464af18995SSascha Wildner.Ed
2474af18995SSascha Wildner.Ss Enabling virtual kernel operation
2484af18995SSascha WildnerA special
2494af18995SSascha Wildner.Xr sysctl 8 ,
2504af18995SSascha Wildner.Va vm.vkernel_enable ,
2514af18995SSascha Wildnermust be set to enable
2524af18995SSascha Wildner.Nm
2534af18995SSascha Wildneroperation:
254c8e7d028SSascha Wildner.Bd -literal
2554af18995SSascha Wildnersysctl vm.vkernel_enable=1
2564af18995SSascha Wildner.Ed
25709b03fffSSascha Wildner.Ss Configuring the network on the host system
25809b03fffSSascha WildnerIn order to access a network interface of the host system from the
25909b03fffSSascha Wildner.Nm ,
26009b03fffSSascha Wildneryou must add the interface to a
26109b03fffSSascha Wildner.Xr bridge 4
26209b03fffSSascha Wildnerdevice which will then be passed to the
26309b03fffSSascha Wildner.Fl I
26409b03fffSSascha Wildneroption:
26509b03fffSSascha Wildner.Bd -literal
26609b03fffSSascha Wildnerkldload if_bridge.ko
26709b03fffSSascha Wildnerkldload if_tap.ko
26809b03fffSSascha Wildnerifconfig bridge0 create
26909b03fffSSascha Wildnerifconfig bridge0 addm re0	# assuming re0 is the host's interface
27009b03fffSSascha Wildnerifconfig bridge0 up
27109b03fffSSascha Wildner.Ed
2724af18995SSascha Wildner.Ss Running the kernel
2734af18995SSascha WildnerFinally, the virtual kernel can be run:
274c8e7d028SSascha Wildner.Bd -literal
2754af18995SSascha Wildnercd /usr/obj/usr/src/sys/VKERNEL
27609b03fffSSascha Wildner\&./kernel.debug -m 64m -r /var/vkernel/rootimg.01 -I auto:bridge0
2774af18995SSascha Wildner.Ed
278c8e7d028SSascha Wildner.Pp
279c8e7d028SSascha WildnerThe
280c8e7d028SSascha Wildner.Xr reboot 8
281c8e7d028SSascha Wildnercommand can be used to stop a virtual kernel.
2824af18995SSascha Wildner.Sh SEE ALSO
28309b03fffSSascha Wildner.Xr bridge 4 ,
28409b03fffSSascha Wildner.Xr tap 4 ,
285c8e7d028SSascha Wildner.Xr vn 4 ,
286c8e7d028SSascha Wildner.Xr build 7 ,
287c8e7d028SSascha Wildner.Xr disklabel 8 ,
28809b03fffSSascha Wildner.Xr ifconfig 8 ,
289c8e7d028SSascha Wildner.Xr vnconfig 8
2904af18995SSascha Wildner.Sh HISTORY
2914af18995SSascha WildnerVirtual kernels were introduced in
2924af18995SSascha Wildner.Dx 1.7 .
2934af18995SSascha Wildner.Sh AUTHORS
2944af18995SSascha Wildner.An -nosplit
2954af18995SSascha Wildner.An Matt Dillon
2964af18995SSascha Wildnerthought up and implemented the
2974af18995SSascha Wildner.Nm
298*0592e24dSSascha Wildnerarchitecture and wrote the
299*0592e24dSSascha Wildner.Nm vkd
300*0592e24dSSascha Wildnerdevice driver.
301*0592e24dSSascha Wildner.An Sepherosa Ziehau
302*0592e24dSSascha Wildnerwrote the
303*0592e24dSSascha Wildner.Nm vke
304*0592e24dSSascha Wildnerdevice driver.
3054af18995SSascha WildnerThis manual page was written by
3064af18995SSascha Wildner.An Sascha Wildner .
307