xref: /dflybsd-src/share/man/man7/vkernel.7 (revision 8988c073ae661910c6490de0fcb2f47ee413e527)
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.\"
32959b80b5SAntonio Huete Jimenez.Dd September 28, 2013
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
481a92ebbbSSamuel J. Greear.Pa /var/vkernel/boot/kernel/kernel
49959b80b5SAntonio Huete Jimenez.Op Fl hsUvd
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
53cbbd1e6dSAntonio Huete Jimenez.Op Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc Ns Oo Ar =mac Oc
54702acf06SJoe Talbott.Op Fl l Ar cpulock
554af18995SSascha Wildner.Op Fl m Ar size
569bea6114SMihai Carabas.Op Fl n Ar numcpus Ns Op Ar :lbits Ns Oo Ar :cbits Oc
57bc3cc25eSMatthew Dillon.Op Fl p Ar pidfile
582a4f37b8SAntonio Huete Jimenez.Op Fl r Ar file Ns Op Ar :serno
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.
86974f8ffeSAntonio Huete JimenezThis option can be specified more than once.
87278c4e67SSamuel J. Greear.It Fl h
88278c4e67SSamuel J. GreearShows a list of available options, each with a short description.
89dd54cb3aSSascha Wildner.It Fl i Ar file
90dd54cb3aSSascha WildnerSpecify a memory image
91dd54cb3aSSascha Wildner.Ar file
92dd54cb3aSSascha Wildnerto be used by the virtual kernel.
93dd54cb3aSSascha WildnerIf no
94dd54cb3aSSascha Wildner.Fl i
95dd54cb3aSSascha Wildneroption is given, the kernel will generate a name of the form
96dd54cb3aSSascha Wildner.Pa /var/vkernel/memimg.XXXXXX ,
97dd54cb3aSSascha Wildnerwith the trailing
98dd54cb3aSSascha Wildner.Ql X Ns s
99dd54cb3aSSascha Wildnerbeing replaced by a sequential number, e.g.\&
100dd54cb3aSSascha Wildner.Pa memimg.000001 .
10186d2b040SAntonio Huete Jimenez.It Fl I Ar interface Ns Op Ar :address1 Ns Oo Ar :address2 Oc Ns Oo Ar /netmask Oc Ns Oo Ar =MAC Oc
10209b03fffSSascha WildnerCreate a virtual network device, with the first
10309b03fffSSascha Wildner.Fl I
10409b03fffSSascha Wildneroption defining
1050592e24dSSascha Wildner.Li vke0 ,
10609b03fffSSascha Wildnerthe second one
1070592e24dSSascha Wildner.Li vke1 ,
10809b03fffSSascha Wildnerand so on.
10909b03fffSSascha Wildner.Pp
11009b03fffSSascha WildnerThe
11109b03fffSSascha Wildner.Ar interface
11209b03fffSSascha Wildnerargument is the name of a
11309b03fffSSascha Wildner.Xr tap 4
114bc3cc25eSMatthew Dillondevice node or the path to a
115bc3cc25eSMatthew Dillon.Xr vknetd 8
116bc3cc25eSMatthew Dillonsocket.
11709b03fffSSascha WildnerThe
11809b03fffSSascha Wildner.Pa /dev/
119bc3cc25eSMatthew Dillonpath prefix does not have to be specified and will be automatically prepended
120bc3cc25eSMatthew Dillonfor a device node.
12109b03fffSSascha WildnerSpecifying
12209b03fffSSascha Wildner.Cm auto
12309b03fffSSascha Wildnerwill pick the first unused
12409b03fffSSascha Wildner.Xr tap 4
12509b03fffSSascha Wildnerdevice.
12609b03fffSSascha Wildner.Pp
12709b03fffSSascha WildnerThe
12809b03fffSSascha Wildner.Ar address1
12909b03fffSSascha Wildnerand
13009b03fffSSascha Wildner.Ar address2
13109b03fffSSascha Wildnerarguments are the IP addresses of the
13209b03fffSSascha Wildner.Xr tap 4
13309b03fffSSascha Wildnerand
1340592e24dSSascha Wildner.Nm vke
13509b03fffSSascha Wildnerinterfaces.
13609b03fffSSascha WildnerOptionally,
13709b03fffSSascha Wildner.Ar address1
13809b03fffSSascha Wildnermay be of the form
13909b03fffSSascha Wildner.Li bridge Ns Em X
14009b03fffSSascha Wildnerin which case the
14109b03fffSSascha Wildner.Xr tap 4
14209b03fffSSascha Wildnerinterface is added to the specified
14309b03fffSSascha Wildner.Xr bridge 4
14409b03fffSSascha Wildnerinterface.
145a8cc122dSSascha WildnerThe
146a8cc122dSSascha Wildner.Nm vke
147a8cc122dSSascha Wildneraddress is not assigned until the interface is brought up in the guest.
14809b03fffSSascha Wildner.Pp
14909b03fffSSascha WildnerThe
15009b03fffSSascha Wildner.Ar netmask
15109b03fffSSascha Wildnerargument applies to all interfaces for which an address is specified.
152bc3cc25eSMatthew Dillon.Pp
15386d2b040SAntonio Huete JimenezThe
15486d2b040SAntonio Huete Jimenez.Ar MAC
15586d2b040SAntonio Huete Jimenezargument is the MAC address of the
15686d2b040SAntonio Huete Jimenez.Xr vke 4
15786d2b040SAntonio Huete Jimenezinterface.
15886d2b040SAntonio Huete JimenezIf not specified, a pseudo-random one will be generated.
15986d2b040SAntonio Huete Jimenez.Pp
160bc3cc25eSMatthew DillonWhen running multiple vkernels it is often more convenient to simply
161bc3cc25eSMatthew Dillonconnect to a
162bc3cc25eSMatthew Dillon.Xr vknetd 8
163c6e9e022SSascha Wildnersocket and let vknetd deal with the tap and/or bridge.
164c6e9e022SSascha WildnerAn example of this would be
165c6e9e022SSascha Wildner.Pa /var/run/vknet:0.0.0.0:10.2.0.2/16 .
166702acf06SJoe Talbott.It Fl l Ar cpulock
167702acf06SJoe TalbottSpecify which, if any, real CPUs to lock virtual CPUs to.
168702acf06SJoe Talbott.Ar cpulock
169702acf06SJoe Talbottis one of
170702acf06SJoe Talbott.Cm any ,
17126ea2793SSascha Wildner.Cm map Ns Op Ns , Ns Ar startCPU ,
17226ea2793SSascha Wildneror
17326ea2793SSascha Wildner.Ar CPU .
174702acf06SJoe Talbott.Pp
175702acf06SJoe Talbott.Cm any
17626ea2793SSascha Wildnerdoes not map virtual CPUs to real CPUs.
17726ea2793SSascha WildnerThis is the default.
178702acf06SJoe Talbott.Pp
179702acf06SJoe Talbott.Cm map Ns Op Ns , Ns Ar startCPU
180702acf06SJoe Talbottmaps each virtual CPU to a real CPU starting with real CPU 0 or
181702acf06SJoe Talbott.Ar startCPU
182702acf06SJoe Talbottif specified.
183702acf06SJoe Talbott.Pp
184702acf06SJoe Talbott.Ar CPU
18526ea2793SSascha Wildnerlocks all virtual CPUs to the real CPU specified by
18626ea2793SSascha Wildner.Ar CPU .
1874af18995SSascha Wildner.It Fl m Ar size
1884af18995SSascha WildnerSpecify the amount of memory to be used by the kernel in bytes,
1894af18995SSascha Wildner.Cm K
1903cea05a4SSascha Wildner.Pq kilobytes ,
1914af18995SSascha Wildner.Cm M
1923cea05a4SSascha Wildner.Pq megabytes
1933cea05a4SSascha Wildneror
1944af18995SSascha Wildner.Cm G
1953cea05a4SSascha Wildner.Pq gigabytes .
19609b03fffSSascha WildnerLowercase versions of
1974af18995SSascha Wildner.Cm K , M ,
1984af18995SSascha Wildnerand
1994af18995SSascha Wildner.Cm G
2004af18995SSascha Wildnerare allowed.
2019bea6114SMihai Carabas.It Fl n Ar numcpus Ns Op Ar :lbits Ns Oo Ar :cbits Oc
2029bea6114SMihai Carabas.Ar numcpus
2039bea6114SMihai Carabasspecifies the number of CPUs you wish to emulate.
2046e837288SSascha WildnerUp to 16 CPUs are supported with 2 being the default unless otherwise
2056e837288SSascha Wildnerspecified.
2069bea6114SMihai Carabas.Ar lbits
2079bea6114SMihai Carabasspecifies the number of bits within APICID(=CPUID) needed for representing
2089bea6114SMihai Carabasthe logical ID.
2099bea6114SMihai CarabasControls the number of threads/core (0bits - 1 thread, 1bit - 2 threads).
2109bea6114SMihai CarabasThis parameter is optional (mandatory only if
2119bea6114SMihai Carabas.Ar cbits
2129bea6114SMihai Carabasis specified).
2139bea6114SMihai Carabas.Ar cbits
2149bea6114SMihai Carabasspecifies the number of bits within APICID(=CPUID) needed for representing
2159bea6114SMihai Carabasthe core ID.
2169bea6114SMihai CarabasControls the number of core/package (0bits - 1 core, 1bit - 2 cores).
2179bea6114SMihai CarabasThis parameter is optional.
218bc3cc25eSMatthew Dillon.It Fl p Ar pidfile
219bc3cc25eSMatthew DillonSpecify a pidfile in which to store the process ID.
220bc3cc25eSMatthew DillonScripts can use this file to locate the vkernel pid for the purpose of
221bc3cc25eSMatthew Dillonshutting down or killing it.
222bc3cc25eSMatthew Dillon.Pp
223bc3cc25eSMatthew DillonThe vkernel will hold a lock on the pidfile while running.
224bc3cc25eSMatthew DillonScripts may test for the lock to determine if the pidfile is valid or
22567cdc5a5SSascha Wildnerstale so as to avoid accidentally killing a random process.
226bc3cc25eSMatthew DillonSomething like '/usr/bin/lockf -ks -t 0 pidfile echo -n' may be used
227bc3cc25eSMatthew Dillonto test the lock.
228bc3cc25eSMatthew DillonA non-zero exit code indicates that the pidfile represents a running
229bc3cc25eSMatthew Dillonvkernel.
230bc3cc25eSMatthew Dillon.Pp
231bc3cc25eSMatthew DillonAn error is issued and the vkernel exits if this file cannot be opened for
232bc3cc25eSMatthew Dillonwriting or if it is already locked by an active vkernel process.
2332a4f37b8SAntonio Huete Jimenez.It Fl r Ar file Ns Op Ar :serno
234a72d8a9fSMatthew DillonSpecify a R/W disk image
2354af18995SSascha Wildner.Ar file
236ec1a8a4dSSascha Wildnerto be used by the kernel, with the first
237ec1a8a4dSSascha Wildner.Fl r
238ec1a8a4dSSascha Wildneroption defining
2390592e24dSSascha Wildner.Li vkd0 ,
240ec1a8a4dSSascha Wildnerthe second one
2410592e24dSSascha Wildner.Li vkd1 ,
24262aea38eSSascha Wildnerand so on.
2432a4f37b8SAntonio Huete JimenezA serial number for the virtual disk can be specified in
2442a4f37b8SAntonio Huete Jimenez.Ar serno .
2452a4f37b8SAntonio Huete Jimenez.Pp
24662aea38eSSascha WildnerThe first
247a72d8a9fSMatthew Dillon.Fl r
248a72d8a9fSMatthew Dillonor
249a72d8a9fSMatthew Dillon.Fl c
250a72d8a9fSMatthew Dillonoption specified on the command line will be the boot disk.
251c8e7d028SSascha Wildner.It Fl s
252c8e7d028SSascha WildnerBoot into single-user mode.
253959b80b5SAntonio Huete Jimenez.It Fl d
254959b80b5SAntonio Huete JimenezDisables hardware pagetable for vkernel.
25503071031SSascha Wildner.It Fl U
25603071031SSascha WildnerEnable writing to kernel memory and module loading.
25703071031SSascha WildnerBy default, those are disabled for security reasons.
2584af18995SSascha Wildner.It Fl v
2594af18995SSascha WildnerTurn on verbose booting.
2604af18995SSascha Wildner.El
2610592e24dSSascha Wildner.Sh DEVICES
2620592e24dSSascha WildnerA number of virtual device drivers exist to supplement the virtual kernel.
2630592e24dSSascha Wildner.Ss Disk device
2640592e24dSSascha WildnerThe
2650592e24dSSascha Wildner.Nm vkd
2660592e24dSSascha Wildnerdriver allows for up to 16
2670592e24dSSascha Wildner.Xr vn 4
2680592e24dSSascha Wildnerbased disk devices.
2690592e24dSSascha WildnerThe root device will be
2700592e24dSSascha Wildner.Li vkd0
2710592e24dSSascha Wildner(see
2720592e24dSSascha Wildner.Sx EXAMPLES
2730592e24dSSascha Wildnerfor further information on how to prepare a root image).
27498b2ba80SSascha Wildner.Ss CD-ROM device
27598b2ba80SSascha WildnerThe
27698b2ba80SSascha Wildner.Nm vcd
27798b2ba80SSascha Wildnerdriver allows for up to 16 virtual CD-ROM devices.
27898b2ba80SSascha WildnerBasically this is a read only
27998b2ba80SSascha Wildner.Nm vkd
28098b2ba80SSascha Wildnerdevice with a block size of 2048.
2810592e24dSSascha Wildner.Ss Network interface
2820592e24dSSascha WildnerThe
2830592e24dSSascha Wildner.Nm vke
2840592e24dSSascha Wildnerdriver supports up to 16 virtual network interfaces which are associated with
2850592e24dSSascha Wildner.Xr tap 4
2860592e24dSSascha Wildnerdevices on the host.
2870592e24dSSascha WildnerFor each
2880592e24dSSascha Wildner.Nm vke
2890592e24dSSascha Wildnerdevice, the per-interface read only
2900592e24dSSascha Wildner.Xr sysctl 3
2910592e24dSSascha Wildnervariable
2920592e24dSSascha Wildner.Va hw.vke Ns Em X Ns Va .tap_unit
2930592e24dSSascha Wildnerholds the unit number of the associated
2940592e24dSSascha Wildner.Xr tap 4
2950592e24dSSascha Wildnerdevice.
29633c27d6cSAntonio Huete Jimenez.Pp
29733c27d6cSAntonio Huete JimenezBy default, half of the total mbuf clusters available is distributed equally
298c6e9e022SSascha Wildneramong all the vke devices up to 256.
29949af6f0fSSascha WildnerThis can be overridden with the tunable
30033c27d6cSAntonio Huete Jimenez.Va hw.vke.max_ringsize .
30133c27d6cSAntonio Huete JimenezTake into account the number passed will be aligned to the lower power of two.
3021e4d9fd9SSascha Wildner.Sh SIGNALS
303bb195a01SMatthew DillonThe virtual kernel only enables
304bb195a01SMatthew Dillon.Dv SIGQUIT
305bb195a01SMatthew Dillonand
306bb195a01SMatthew Dillon.Dv SIGTERM
307bb195a01SMatthew Dillonwhile operating in regular console mode.
308bb195a01SMatthew DillonSending
3091e4d9fd9SSascha Wildner.Ql \&^\e
3101e4d9fd9SSascha Wildner.Pq Dv SIGQUIT
311bb195a01SMatthew Dillonto the virtual kernel causes the virtual kernel to enter its internal
3121e4d9fd9SSascha Wildner.Xr ddb 4
313bb195a01SMatthew Dillondebugger and re-enable all other terminal signals.
314bb195a01SMatthew DillonSending
315bb195a01SMatthew Dillon.Dv SIGTERM
316bb195a01SMatthew Dillonto the virtual kernel triggers a clean shutdown by passing a
317bb195a01SMatthew Dillon.Dv SIGUSR2
318bb195a01SMatthew Dillonto the virtual kernel's
319bb195a01SMatthew Dillon.Xr init 8
320bb195a01SMatthew Dillonprocess.
321974b26bfSSascha Wildner.Sh DEBUGGING
322974b26bfSSascha WildnerIt is possible to directly gdb the virtual kernel's process.
323974b26bfSSascha WildnerIt is recommended that you do a
324974b26bfSSascha Wildner.Ql handle SIGSEGV noprint
3254010bf94SNicolas Theryto ignore page faults processed by the virtual kernel itself and
326e7c2f376SNicolas Thery.Ql handle SIGUSR1 noprint
32720ce32a9SSascha Wildnerto ignore signals used for simulating inter-processor interrupts.
328b96eeefdSSascha Wildner.Sh PROFILING
329b96eeefdSSascha WildnerTo compile a vkernel with profiling support, the
330b96eeefdSSascha Wildner.Va CONFIGARGS
331b96eeefdSSascha Wildnervariable needs to be used to pass
332b96eeefdSSascha Wildner.Fl p
333b96eeefdSSascha Wildnerto
334b96eeefdSSascha Wildner.Xr config 8 .
335b96eeefdSSascha Wildner.Bd -literal
336b96eeefdSSascha Wildnercd /usr/src
337b96eeefdSSascha Wildnermake -DNO_MODULES CONFIGARGS=-p buildkernel KERNCONF=VKERNEL
338b96eeefdSSascha Wildner.Ed
339a154d422SThomas Nikolajsen.Sh FILES
340a154d422SThomas Nikolajsen.Bl -tag -width ".It Pa /sys/config/VKERNEL" -compact
341a154d422SThomas Nikolajsen.It Pa /sys/config/VKERNEL
342163fd4e7SAntonio Huete Jimenez.It Pa /sys/config/VKERNEL64
343a154d422SThomas Nikolajsen.El
344163fd4e7SAntonio Huete Jimenez.Pp
345163fd4e7SAntonio Huete JimenezPer architecture
346163fd4e7SAntonio Huete Jimenez.Nm
347163fd4e7SAntonio Huete Jimenezconfiguration files, for
348163fd4e7SAntonio Huete Jimenez.Xr config 8 .
349a68e0df0SSascha Wildner.Sh CONFIGURATION FILES
350a68e0df0SSascha WildnerYour virtual kernel is a complete
351a68e0df0SSascha Wildner.Dx
352a68e0df0SSascha Wildnersystem, but you might not want to run all the services a normal kernel runs.
353a68e0df0SSascha WildnerHere is what a typical virtual kernel's
354a68e0df0SSascha Wildner.Pa /etc/rc.conf
355a68e0df0SSascha Wildnerfile looks like, with some additional possibilities commented out.
356a68e0df0SSascha Wildner.Bd -literal
357a68e0df0SSascha Wildnerhostname="vkernel"
358a68e0df0SSascha Wildnernetwork_interfaces="lo0 vke0"
359a68e0df0SSascha Wildnerifconfig_vke0="DHCP"
360a68e0df0SSascha Wildnersendmail_enable="NO"
361a68e0df0SSascha Wildner#syslog_enable="NO"
362a68e0df0SSascha Wildnerblanktime="NO"
363a68e0df0SSascha Wildner.Ed
364163fd4e7SAntonio Huete Jimenez.Sh DISKLESS OPERATION
365163fd4e7SAntonio Huete JimenezTo boot a
366163fd4e7SAntonio Huete Jimenez.Nm
367163fd4e7SAntonio Huete Jimenezfrom a NFS root, a number of tunables need to be set:
368163fd4e7SAntonio Huete Jimenez.Bl -tag -width indent
369163fd4e7SAntonio Huete Jimenez.It Va boot.netif.ip
370163fd4e7SAntonio Huete JimenezIP address to be set in the vkernel interface.
371163fd4e7SAntonio Huete Jimenez.It Va boot.netif.netmask
372163fd4e7SAntonio Huete JimenezNetmask for the IP to be set.
373163fd4e7SAntonio Huete Jimenez.It Va boot.netif.name
374163fd4e7SAntonio Huete JimenezNetwork interface name inside the vkernel.
375163fd4e7SAntonio Huete Jimenez.It Va boot.nfsroot.server
376163fd4e7SAntonio Huete JimenezHost running
377163fd4e7SAntonio Huete Jimenez.Xr nfsd 8 .
378163fd4e7SAntonio Huete Jimenez.It Va boot.nfsroot.path
379163fd4e7SAntonio Huete JimenezHost path where a world and distribution
380163fd4e7SAntonio Huete Jimeneztargets are properly installed.
381163fd4e7SAntonio Huete Jimenez.El
382163fd4e7SAntonio Huete Jimenez.Pp
383163fd4e7SAntonio Huete JimenezSee an example on how to boot a diskless
384163fd4e7SAntonio Huete Jimenez.Nm
385163fd4e7SAntonio Huete Jimenezin the
386163fd4e7SAntonio Huete Jimenez.Sx EXAMPLES
387163fd4e7SAntonio Huete Jimenezsection.
388c8e7d028SSascha Wildner.Sh EXAMPLES
3894af18995SSascha WildnerA couple of steps are necessary in order to prepare the system to build and
3904af18995SSascha Wildnerrun a virtual kernel.
3914af18995SSascha Wildner.Ss Setting up the filesystem
3924af18995SSascha WildnerThe
3934af18995SSascha Wildner.Nm
3944af18995SSascha Wildnerarchitecture needs a number of files which reside in
3954af18995SSascha Wildner.Pa /var/vkernel .
3964af18995SSascha WildnerSince these files tend to get rather big and the
3974af18995SSascha Wildner.Pa /var
3984af18995SSascha Wildnerpartition is usually of limited size, we recommend the directory to be
3994af18995SSascha Wildnercreated in the
4004af18995SSascha Wildner.Pa /home
4014af18995SSascha Wildnerpartition with a link to it in
4024af18995SSascha Wildner.Pa /var :
403c8e7d028SSascha Wildner.Bd -literal
404c009fcfaSThomas Nikolajsenmkdir -p /home/var.vkernel/boot
4054af18995SSascha Wildnerln -s /home/var.vkernel /var/vkernel
4064af18995SSascha Wildner.Ed
4074af18995SSascha Wildner.Pp
4084af18995SSascha WildnerNext, a filesystem image to be used by the virtual kernel has to be
40962aea38eSSascha Wildnercreated and populated (assuming world has been built previously).
41062aea38eSSascha WildnerIf the image is created on a UFS filesystem you might want to pre-zero it.
41149802d4eSMatthew DillonOn a HAMMER filesystem you should just truncate-extend to the image size
41249802d4eSMatthew Dillonas HAMMER does not re-use data blocks already present in the file.
413c8e7d028SSascha Wildner.Bd -literal
414f73862c5SSascha Wildnervnconfig -c -S 2g -T vn0 /var/vkernel/rootimg.01
41558c55700SSascha Wildnerdisklabel -r -w vn0s0 auto
416c009fcfaSThomas Nikolajsendisklabel -e vn0s0	# add `a' partition with fstype `4.2BSD'
41758c55700SSascha Wildnernewfs /dev/vn0s0a
41858c55700SSascha Wildnermount /dev/vn0s0a /mnt
419c8e7d028SSascha Wildnercd /usr/src
420c8e7d028SSascha Wildnermake installworld DESTDIR=/mnt
421c8e7d028SSascha Wildnercd etc
422c8e7d028SSascha Wildnermake distribution DESTDIR=/mnt
4237a3238b8SMatthew Dillonecho '/dev/vkd0s0a	/	ufs	rw	1  1' >/mnt/etc/fstab
4247a3238b8SMatthew Dillonecho 'proc		/proc	procfs	rw	0  0' >>/mnt/etc/fstab
4257834fbccSSascha Wildner.Ed
4267834fbccSSascha Wildner.Pp
4277834fbccSSascha WildnerEdit
4287834fbccSSascha Wildner.Pa /mnt/etc/ttys
4297834fbccSSascha Wildnerand replace the
4307834fbccSSascha Wildner.Li console
4317834fbccSSascha Wildnerentry with the following line and turn off all other gettys.
4327834fbccSSascha Wildner.Bd -literal
4337834fbccSSascha Wildnerconsole	"/usr/libexec/getty Pc"		cons25	on  secure
4347834fbccSSascha Wildner.Ed
4357834fbccSSascha Wildner.Pp
436eed435ddSStathis KamperisReplace
437eed435ddSStathis Kamperis.Li \&Pc
438eed435ddSStathis Kamperiswith
439eed435ddSStathis Kamperis.Li al.Pc
440eed435ddSStathis Kamperisif you would like to automatically log in as root.
441eed435ddSStathis Kamperis.Pp
4427834fbccSSascha WildnerThen, unmount the disk.
4437834fbccSSascha Wildner.Bd -literal
4444af18995SSascha Wildnerumount /mnt
4454af18995SSascha Wildnervnconfig -u vn0
4464af18995SSascha Wildner.Ed
4474af18995SSascha Wildner.Ss Compiling the virtual kernel
4484af18995SSascha WildnerIn order to compile a virtual kernel use the
4494af18995SSascha Wildner.Li VKERNEL
4504af18995SSascha Wildnerkernel configuration file residing in
451a154d422SThomas Nikolajsen.Pa /sys/config
4524af18995SSascha Wildner(or a configuration file derived thereof):
453c8e7d028SSascha Wildner.Bd -literal
4544af18995SSascha Wildnercd /usr/src
45509b03fffSSascha Wildnermake -DNO_MODULES buildkernel KERNCONF=VKERNEL
45679b58aaeSMatthew Dillonmake -DNO_MODULES installkernel KERNCONF=VKERNEL DESTDIR=/var/vkernel
4574af18995SSascha Wildner.Ed
4584af18995SSascha Wildner.Ss Enabling virtual kernel operation
4594af18995SSascha WildnerA special
4604af18995SSascha Wildner.Xr sysctl 8 ,
4614af18995SSascha Wildner.Va vm.vkernel_enable ,
4624af18995SSascha Wildnermust be set to enable
4634af18995SSascha Wildner.Nm
4644af18995SSascha Wildneroperation:
465c8e7d028SSascha Wildner.Bd -literal
4664af18995SSascha Wildnersysctl vm.vkernel_enable=1
4674af18995SSascha Wildner.Ed
46809b03fffSSascha Wildner.Ss Configuring the network on the host system
46909b03fffSSascha WildnerIn order to access a network interface of the host system from the
47009b03fffSSascha Wildner.Nm ,
47109b03fffSSascha Wildneryou must add the interface to a
47209b03fffSSascha Wildner.Xr bridge 4
47309b03fffSSascha Wildnerdevice which will then be passed to the
47409b03fffSSascha Wildner.Fl I
47509b03fffSSascha Wildneroption:
47609b03fffSSascha Wildner.Bd -literal
47709b03fffSSascha Wildnerkldload if_bridge.ko
47809b03fffSSascha Wildnerkldload if_tap.ko
47909b03fffSSascha Wildnerifconfig bridge0 create
48009b03fffSSascha Wildnerifconfig bridge0 addm re0	# assuming re0 is the host's interface
48109b03fffSSascha Wildnerifconfig bridge0 up
48209b03fffSSascha Wildner.Ed
4834af18995SSascha Wildner.Ss Running the kernel
4844af18995SSascha WildnerFinally, the virtual kernel can be run:
485c8e7d028SSascha Wildner.Bd -literal
48679b58aaeSMatthew Dilloncd /var/vkernel
4871a92ebbbSSamuel J. Greear\&./boot/kernel/kernel -m 64m -r rootimg.01 -I auto:bridge0
4884af18995SSascha Wildner.Ed
489c8e7d028SSascha Wildner.Pp
49079b58aaeSMatthew DillonYou can issue the
49179b58aaeSMatthew Dillon.Xr reboot 8 ,
49279b58aaeSMatthew Dillon.Xr halt 8 ,
49379b58aaeSMatthew Dillonor
49479b58aaeSMatthew Dillon.Xr shutdown 8
49579b58aaeSMatthew Dilloncommands from inside a virtual kernel.
49679b58aaeSMatthew DillonAfter doing a clean shutdown the
497c8e7d028SSascha Wildner.Xr reboot 8
49879b58aaeSMatthew Dilloncommand will re-exec the virtual kernel binary while the other two will
49979b58aaeSMatthew Dilloncause the virtual kernel to exit.
500163fd4e7SAntonio Huete Jimenez.Ss Diskless operation
501163fd4e7SAntonio Huete JimenezBooting a
502163fd4e7SAntonio Huete Jimenez.Nm
503163fd4e7SAntonio Huete Jimenezwith a
504163fd4e7SAntonio Huete Jimenez.Xr vknetd 8
505163fd4e7SAntonio Huete Jimeneznetwork configuration:
506163fd4e7SAntonio Huete Jimenez.Bd -literal
507163fd4e7SAntonio Huete Jimenez\&./boot/kernel/kernel -m 64m -m -i memimg.0000 -I /var/run/vknet
508163fd4e7SAntonio Huete Jimenez	-e boot.netif.ip=172.1.0.4
509163fd4e7SAntonio Huete Jimenez	-e boot.netif.netmask=255.255.0.0
510163fd4e7SAntonio Huete Jimenez	-e boot.netif.name=vke0
511163fd4e7SAntonio Huete Jimenez	-e boot.nfsroot.server=172.1.0.1
512163fd4e7SAntonio Huete Jimenez	-e boot.nfsroot.path=/home/vkernel/vkdiskless
513163fd4e7SAntonio Huete Jimenez.Ed
51434caba04SMatthew Dillon.Sh BUILDING THE WORLD UNDER A VKERNEL
51534caba04SMatthew DillonThe virtual kernel platform does not have all the header files expected
51634caba04SMatthew Dillonby a world build, so the easiest thing to do right now is to specify a
517b6a66df5SSascha Wildnerpc32 (in a 32 bit vkernel) or pc64 (in a 64 bit vkernel) target when
518b6a66df5SSascha Wildnerbuilding the world under a virtual kernel, like this:
51934caba04SMatthew Dillon.Bd -literal
52034caba04SMatthew Dillonvkernel# make MACHINE_PLATFORM=pc32 buildworld
52134caba04SMatthew Dillonvkernel# make MACHINE_PLATFORM=pc32 installworld
52234caba04SMatthew Dillon.Ed
5234af18995SSascha Wildner.Sh SEE ALSO
524666855caSSascha Wildner.Xr vknet 1 ,
52509b03fffSSascha Wildner.Xr bridge 4 ,
526*8988c073SSascha Wildner.Xr ifmedia 4 ,
52709b03fffSSascha Wildner.Xr tap 4 ,
528c8e7d028SSascha Wildner.Xr vn 4 ,
529a154d422SThomas Nikolajsen.Xr sysctl.conf 5 ,
530c8e7d028SSascha Wildner.Xr build 7 ,
531b96eeefdSSascha Wildner.Xr config 8 ,
532c8e7d028SSascha Wildner.Xr disklabel 8 ,
53309b03fffSSascha Wildner.Xr ifconfig 8 ,
534dbfd168bSMatthew Dillon.Xr vknetd 8 ,
535c8e7d028SSascha Wildner.Xr vnconfig 8
536c203b6f9SSascha Wildner.Rs
537c203b6f9SSascha Wildner.%A Aggelos Economopoulos
538c203b6f9SSascha Wildner.%D March 2007
539c203b6f9SSascha Wildner.%T "A Peek at the DragonFly Virtual Kernel"
540c203b6f9SSascha Wildner.Re
5414af18995SSascha Wildner.Sh HISTORY
5424af18995SSascha WildnerVirtual kernels were introduced in
5434af18995SSascha Wildner.Dx 1.7 .
5444af18995SSascha Wildner.Sh AUTHORS
5454af18995SSascha Wildner.An -nosplit
5464af18995SSascha Wildner.An Matt Dillon
5474af18995SSascha Wildnerthought up and implemented the
5484af18995SSascha Wildner.Nm
5490592e24dSSascha Wildnerarchitecture and wrote the
5500592e24dSSascha Wildner.Nm vkd
5510592e24dSSascha Wildnerdevice driver.
5520592e24dSSascha Wildner.An Sepherosa Ziehau
5530592e24dSSascha Wildnerwrote the
5540592e24dSSascha Wildner.Nm vke
5550592e24dSSascha Wildnerdevice driver.
5564af18995SSascha WildnerThis manual page was written by
5574af18995SSascha Wildner.An Sascha Wildner .
558