xref: /dflybsd-src/share/man/man7/vkernel.7 (revision a72d8a9fc942adb9fcd8a253b05cebb83ee4bda1)
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*a72d8a9fSMatthew Dillon.\" $DragonFly: src/share/man/man7/vkernel.7,v 1.16 2007/05/25 02:21:10 dillon Exp $
334af18995SSascha Wildner.\"
340592e24dSSascha Wildner.Dd April 19, 2007
354af18995SSascha Wildner.Dt VKERNEL 7
364af18995SSascha Wildner.Os
374af18995SSascha Wildner.Sh NAME
380592e24dSSascha Wildner.Nm vkernel ,
390592e24dSSascha Wildner.Nm vkd ,
400592e24dSSascha 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
49*a72d8a9fSMatthew Dillon.Op Fl c Ar file
5009b03fffSSascha Wildner.Op Fl e Ar name Ns = Ns Li value : Ns Ar name Ns = Ns Li value : Ns ...
51dd54cb3aSSascha Wildner.Op Fl i Ar file
5209b03fffSSascha Wildner.Op Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc
534af18995SSascha Wildner.Op Fl m Ar size
544af18995SSascha Wildner.Op Fl r Ar file
554af18995SSascha Wildner.Sh DESCRIPTION
564af18995SSascha WildnerThe
574af18995SSascha Wildner.Nm
584af18995SSascha Wildnerarchitecture allows for running
594af18995SSascha Wildner.Dx
604af18995SSascha Wildnerkernels in userland.
614af18995SSascha Wildner.Pp
624af18995SSascha WildnerThe following options are available:
634af18995SSascha Wildner.Bl -tag -width ".Fl m Ar size"
64*a72d8a9fSMatthew Dillon.It Fl c Ar file
65*a72d8a9fSMatthew DillonSpecify a readonly CDRom image
66*a72d8a9fSMatthew Dillon.Ar file
67*a72d8a9fSMatthew Dillonto be used by the kernel, with the first
68*a72d8a9fSMatthew Dillon.Fl c
69*a72d8a9fSMatthew Dillonoption defining
70*a72d8a9fSMatthew Dillon.Li vcd0 ,
71*a72d8a9fSMatthew Dillonthe second one
72*a72d8a9fSMatthew Dillon.Li vcd1 ,
73*a72d8a9fSMatthew Dillonand so on.  The first
74*a72d8a9fSMatthew Dillon.Fl r
75*a72d8a9fSMatthew Dillonor
76*a72d8a9fSMatthew Dillon.Fl c
77*a72d8a9fSMatthew Dillonoption specified on the command line will be the boot disk.
78*a72d8a9fSMatthew Dillonthe CD9660 filesystem is assumed when booting from this media.
7909b03fffSSascha Wildner.It Fl e Ar name Ns = Ns Li value : Ns Ar name Ns = Ns Li value : Ns ...
8009b03fffSSascha WildnerSpecify an environment to be used by the kernel.
81dd54cb3aSSascha Wildner.It Fl i Ar file
82dd54cb3aSSascha WildnerSpecify a memory image
83dd54cb3aSSascha Wildner.Ar file
84dd54cb3aSSascha Wildnerto be used by the virtual kernel.
85dd54cb3aSSascha WildnerIf no
86dd54cb3aSSascha Wildner.Fl i
87dd54cb3aSSascha Wildneroption is given, the kernel will generate a name of the form
88dd54cb3aSSascha Wildner.Pa /var/vkernel/memimg.XXXXXX ,
89dd54cb3aSSascha Wildnerwith the trailing
90dd54cb3aSSascha Wildner.Ql X Ns s
91dd54cb3aSSascha Wildnerbeing replaced by a sequential number, e.g.\&
92dd54cb3aSSascha Wildner.Pa memimg.000001 .
9309b03fffSSascha Wildner.It Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc
9409b03fffSSascha WildnerCreate a virtual network device, with the first
9509b03fffSSascha Wildner.Fl I
9609b03fffSSascha Wildneroption defining
970592e24dSSascha Wildner.Li vke0 ,
9809b03fffSSascha Wildnerthe second one
990592e24dSSascha Wildner.Li vke1 ,
10009b03fffSSascha Wildnerand so on.
10109b03fffSSascha Wildner.Pp
10209b03fffSSascha WildnerThe
10309b03fffSSascha Wildner.Ar interface
10409b03fffSSascha Wildnerargument is the name of a
10509b03fffSSascha Wildner.Xr tap 4
10609b03fffSSascha Wildnerdevice node.
10709b03fffSSascha WildnerThe
10809b03fffSSascha Wildner.Pa /dev/
10909b03fffSSascha Wildnerpath prefix does not have to be specified and will be automatically prepended.
11009b03fffSSascha WildnerSpecifying
11109b03fffSSascha Wildner.Cm auto
11209b03fffSSascha Wildnerwill pick the first unused
11309b03fffSSascha Wildner.Xr tap 4
11409b03fffSSascha Wildnerdevice.
11509b03fffSSascha Wildner.Pp
11609b03fffSSascha WildnerThe
11709b03fffSSascha Wildner.Ar address1
11809b03fffSSascha Wildnerand
11909b03fffSSascha Wildner.Ar address2
12009b03fffSSascha Wildnerarguments are the IP addresses of the
12109b03fffSSascha Wildner.Xr tap 4
12209b03fffSSascha Wildnerand
1230592e24dSSascha Wildner.Nm vke
12409b03fffSSascha Wildnerinterfaces.
12509b03fffSSascha WildnerOptionally,
12609b03fffSSascha Wildner.Ar address1
12709b03fffSSascha Wildnermay be of the form
12809b03fffSSascha Wildner.Li bridge Ns Em X
12909b03fffSSascha Wildnerin which case the
13009b03fffSSascha Wildner.Xr tap 4
13109b03fffSSascha Wildnerinterface is added to the specified
13209b03fffSSascha Wildner.Xr bridge 4
13309b03fffSSascha Wildnerinterface.
13409b03fffSSascha Wildner.Pp
13509b03fffSSascha WildnerThe
13609b03fffSSascha Wildner.Ar netmask
13709b03fffSSascha Wildnerargument applies to all interfaces for which an address is specified.
1384af18995SSascha Wildner.It Fl m Ar size
1394af18995SSascha WildnerSpecify the amount of memory to be used by the kernel in bytes,
1404af18995SSascha Wildner.Cm K
1413cea05a4SSascha Wildner.Pq kilobytes ,
1424af18995SSascha Wildner.Cm M
1433cea05a4SSascha Wildner.Pq megabytes
1443cea05a4SSascha Wildneror
1454af18995SSascha Wildner.Cm G
1463cea05a4SSascha Wildner.Pq gigabytes .
14709b03fffSSascha WildnerLowercase versions of
1484af18995SSascha Wildner.Cm K , M ,
1494af18995SSascha Wildnerand
1504af18995SSascha Wildner.Cm G
1514af18995SSascha Wildnerare allowed.
1524af18995SSascha Wildner.It Fl r Ar file
153*a72d8a9fSMatthew DillonSpecify a R/W disk image
1544af18995SSascha Wildner.Ar file
155ec1a8a4dSSascha Wildnerto be used by the kernel, with the first
156ec1a8a4dSSascha Wildner.Fl r
157ec1a8a4dSSascha Wildneroption defining
1580592e24dSSascha Wildner.Li vkd0 ,
159ec1a8a4dSSascha Wildnerthe second one
1600592e24dSSascha Wildner.Li vkd1 ,
161*a72d8a9fSMatthew Dillonand so on.  The first
162*a72d8a9fSMatthew Dillon.Fl r
163*a72d8a9fSMatthew Dillonor
164*a72d8a9fSMatthew Dillon.Fl c
165*a72d8a9fSMatthew Dillonoption specified on the command line will be the boot disk.
166c8e7d028SSascha Wildner.It Fl s
167c8e7d028SSascha WildnerBoot into single-user mode.
16803071031SSascha Wildner.It Fl U
16903071031SSascha WildnerEnable writing to kernel memory and module loading.
17003071031SSascha WildnerBy default, those are disabled for security reasons.
1714af18995SSascha Wildner.It Fl v
1724af18995SSascha WildnerTurn on verbose booting.
1734af18995SSascha Wildner.El
1740592e24dSSascha Wildner.Sh DEVICES
1750592e24dSSascha WildnerA number of virtual device drivers exist to supplement the virtual kernel.
1760592e24dSSascha WildnerTheir names start with
1770592e24dSSascha Wildner.Li vk .
1780592e24dSSascha Wildner.Ss Disk device
1790592e24dSSascha WildnerThe
1800592e24dSSascha Wildner.Nm vkd
1810592e24dSSascha Wildnerdriver allows for up to 16
1820592e24dSSascha Wildner.Xr vn 4
1830592e24dSSascha Wildnerbased disk devices.
1840592e24dSSascha WildnerThe root device will be
1850592e24dSSascha Wildner.Li vkd0
1860592e24dSSascha Wildner(see
1870592e24dSSascha Wildner.Sx EXAMPLES
1880592e24dSSascha Wildnerfor further information on how to prepare a root image).
1890592e24dSSascha Wildner.Ss Network interface
1900592e24dSSascha WildnerThe
1910592e24dSSascha Wildner.Nm vke
1920592e24dSSascha Wildnerdriver supports up to 16 virtual network interfaces which are associated with
1930592e24dSSascha Wildner.Xr tap 4
1940592e24dSSascha Wildnerdevices on the host.
1950592e24dSSascha WildnerFor each
1960592e24dSSascha Wildner.Nm vke
1970592e24dSSascha Wildnerdevice, the per-interface read only
1980592e24dSSascha Wildner.Xr sysctl 3
1990592e24dSSascha Wildnervariable
2000592e24dSSascha Wildner.Va hw.vke Ns Em X Ns Va .tap_unit
2010592e24dSSascha Wildnerholds the unit number of the associated
2020592e24dSSascha Wildner.Xr tap 4
2030592e24dSSascha Wildnerdevice.
2041e4d9fd9SSascha Wildner.Sh SIGNALS
2051e4d9fd9SSascha WildnerThe virtual kernel enables all terminal signals while in
2061e4d9fd9SSascha Wildner.Xr ddb 4
2071e4d9fd9SSascha Wildnermode but only enables
2081e4d9fd9SSascha Wildner.Ql \&^\e
2091e4d9fd9SSascha Wildner.Pq Dv SIGQUIT
2101e4d9fd9SSascha Wildnerwhile operating as a console which causes the virtual kernel to enter its
2111e4d9fd9SSascha Wildnerinternal
2121e4d9fd9SSascha Wildner.Xr ddb 4
2131e4d9fd9SSascha Wildnerdebugger.
214974b26bfSSascha Wildner.Sh DEBUGGING
215974b26bfSSascha WildnerIt is possible to directly gdb the virtual kernel's process.
216974b26bfSSascha WildnerIt is recommended that you do a
217974b26bfSSascha Wildner.Ql handle SIGSEGV noprint
218974b26bfSSascha Wildnerto ignore page faults processed by the virtual kernel itself.
219c8e7d028SSascha Wildner.Sh EXAMPLES
2204af18995SSascha WildnerA couple of steps are necessary in order to prepare the system to build and
2214af18995SSascha Wildnerrun a virtual kernel.
2224af18995SSascha Wildner.Ss Setting up the filesystem
2234af18995SSascha WildnerThe
2244af18995SSascha Wildner.Nm
2254af18995SSascha Wildnerarchitecture needs a number of files which reside in
2264af18995SSascha Wildner.Pa /var/vkernel .
2274af18995SSascha WildnerSince these files tend to get rather big and the
2284af18995SSascha Wildner.Pa /var
2294af18995SSascha Wildnerpartition is usually of limited size, we recommend the directory to be
2304af18995SSascha Wildnercreated in the
2314af18995SSascha Wildner.Pa /home
2324af18995SSascha Wildnerpartition with a link to it in
2334af18995SSascha Wildner.Pa /var :
234c8e7d028SSascha Wildner.Bd -literal
2354af18995SSascha Wildnermkdir /home/var.vkernel
2364af18995SSascha Wildnerln -s /home/var.vkernel /var/vkernel
2374af18995SSascha Wildner.Ed
2384af18995SSascha Wildner.Pp
2394af18995SSascha WildnerNext, a filesystem image to be used by the virtual kernel has to be
240c8e7d028SSascha Wildnercreated and populated (assuming world has been built previously):
241c8e7d028SSascha Wildner.Bd -literal
2424af18995SSascha Wildnerdd if=/dev/zero of=/var/vkernel/rootimg.01 bs=1m count=2048
2434af18995SSascha Wildnervnconfig -c -s labels vn0 /var/vkernel/rootimg.01
2444af18995SSascha Wildnerdisklabel -r -w vn0 auto
245c8e7d028SSascha Wildnerdisklabel -e vn0	# edit the label to create a vn0a partition
2464af18995SSascha Wildnernewfs /dev/vn0a
2474af18995SSascha Wildnermount /dev/vn0a /mnt
248c8e7d028SSascha Wildnercd /usr/src
249c8e7d028SSascha Wildnermake installworld DESTDIR=/mnt
250c8e7d028SSascha Wildnercd etc
251c8e7d028SSascha Wildnermake distribution DESTDIR=/mnt
2526a060312SSascha Wildnerecho '/dev/vkd0a / ufs rw 1 1' >/mnt/etc/fstab
253c8e7d028SSascha Wildnerecho 'console "/usr/libexec/getty Pc" cons25 on secure' >/mnt/etc/ttys
2544af18995SSascha Wildnerumount /mnt
2554af18995SSascha Wildnervnconfig -u vn0
2564af18995SSascha Wildner.Ed
2574af18995SSascha Wildner.Ss Compiling the virtual kernel
2584af18995SSascha WildnerIn order to compile a virtual kernel use the
2594af18995SSascha Wildner.Li VKERNEL
2604af18995SSascha Wildnerkernel configuration file residing in
2614af18995SSascha Wildner.Pa /usr/src/sys/config
2624af18995SSascha Wildner(or a configuration file derived thereof):
263c8e7d028SSascha Wildner.Bd -literal
2644af18995SSascha Wildnercd /usr/src
26509b03fffSSascha Wildnermake -DNO_MODULES buildkernel KERNCONF=VKERNEL
2664af18995SSascha Wildner.Ed
2674af18995SSascha Wildner.Ss Enabling virtual kernel operation
2684af18995SSascha WildnerA special
2694af18995SSascha Wildner.Xr sysctl 8 ,
2704af18995SSascha Wildner.Va vm.vkernel_enable ,
2714af18995SSascha Wildnermust be set to enable
2724af18995SSascha Wildner.Nm
2734af18995SSascha Wildneroperation:
274c8e7d028SSascha Wildner.Bd -literal
2754af18995SSascha Wildnersysctl vm.vkernel_enable=1
2764af18995SSascha Wildner.Ed
27709b03fffSSascha Wildner.Ss Configuring the network on the host system
27809b03fffSSascha WildnerIn order to access a network interface of the host system from the
27909b03fffSSascha Wildner.Nm ,
28009b03fffSSascha Wildneryou must add the interface to a
28109b03fffSSascha Wildner.Xr bridge 4
28209b03fffSSascha Wildnerdevice which will then be passed to the
28309b03fffSSascha Wildner.Fl I
28409b03fffSSascha Wildneroption:
28509b03fffSSascha Wildner.Bd -literal
28609b03fffSSascha Wildnerkldload if_bridge.ko
28709b03fffSSascha Wildnerkldload if_tap.ko
28809b03fffSSascha Wildnerifconfig bridge0 create
28909b03fffSSascha Wildnerifconfig bridge0 addm re0	# assuming re0 is the host's interface
29009b03fffSSascha Wildnerifconfig bridge0 up
29109b03fffSSascha Wildner.Ed
2924af18995SSascha Wildner.Ss Running the kernel
2934af18995SSascha WildnerFinally, the virtual kernel can be run:
294c8e7d028SSascha Wildner.Bd -literal
2954af18995SSascha Wildnercd /usr/obj/usr/src/sys/VKERNEL
29609b03fffSSascha Wildner\&./kernel.debug -m 64m -r /var/vkernel/rootimg.01 -I auto:bridge0
2974af18995SSascha Wildner.Ed
298c8e7d028SSascha Wildner.Pp
299c8e7d028SSascha WildnerThe
300c8e7d028SSascha Wildner.Xr reboot 8
301c8e7d028SSascha Wildnercommand can be used to stop a virtual kernel.
3024af18995SSascha Wildner.Sh SEE ALSO
30309b03fffSSascha Wildner.Xr bridge 4 ,
30409b03fffSSascha Wildner.Xr tap 4 ,
305c8e7d028SSascha Wildner.Xr vn 4 ,
306c8e7d028SSascha Wildner.Xr build 7 ,
307c8e7d028SSascha Wildner.Xr disklabel 8 ,
30809b03fffSSascha Wildner.Xr ifconfig 8 ,
309c8e7d028SSascha Wildner.Xr vnconfig 8
3104af18995SSascha Wildner.Sh HISTORY
3114af18995SSascha WildnerVirtual kernels were introduced in
3124af18995SSascha Wildner.Dx 1.7 .
3134af18995SSascha Wildner.Sh AUTHORS
3144af18995SSascha Wildner.An -nosplit
3154af18995SSascha Wildner.An Matt Dillon
3164af18995SSascha Wildnerthought up and implemented the
3174af18995SSascha Wildner.Nm
3180592e24dSSascha Wildnerarchitecture and wrote the
3190592e24dSSascha Wildner.Nm vkd
3200592e24dSSascha Wildnerdevice driver.
3210592e24dSSascha Wildner.An Sepherosa Ziehau
3220592e24dSSascha Wildnerwrote the
3230592e24dSSascha Wildner.Nm vke
3240592e24dSSascha Wildnerdevice driver.
3254af18995SSascha WildnerThis manual page was written by
3264af18995SSascha Wildner.An Sascha Wildner .
327