|
Kernel command line switches
This is a list of the UML-specific command line arguments, plus a few
generic ones which deserve mention here.
This causes UML to print a usage message and exit.
This causes UML to print its version and exit.
This causes UML to print the config file it was built with and exit.
con=channel
attaches one or more UML consoles to the
named channel. The format of the channel is described
here.
Starts up the kernel under the control of gdb. See the
kernel debugging
tutorial and the
debugging session pages for more information. Another form of
this switch is debug=go which is the same as debug
except that the kernel runs instead of stopping at the beginning of
start_kernel.
If you're using ddd to debug UML, you will want to specify
debug=parent as well as gdb-pid (see below).
This switch is specific to tt
mode and has no effect in skas mode.
Causes the tracing thread to pause until it is attached by a debugger
and continued. This is mostly for debugging crashes early during
boot, and should be pretty much obsoleted by the debug switch.
This switch is specific to tt
mode and has no effect in skas mode.
dsp=host dsp
tells the UML sound driver what the
filename of the host dsp is so that it can relay to it. The default
is "/dev/sound/dsp".
ethn=host interface
enables a virtual ethernet
device inside UML. See the
networking HOWTO
for more information on setting up UML networking.
Causes the ubd device to put its partition information in
/proc/partitions under the device name "hd" rather than "ubd". Again,
this is to fake out installation procedures which are overly picky in
their sanity-checking.
fake_ide causes the ubd driver to install realistic-looking
entries into /proc/ide. This is useful for convincing some
distribution installation procedures to run inside UML.
gdb-pid=pid
, when used with debug, specifies the pid of
an already running debugger that UML should attach to. This can be used
to debug UML with a gdb wrapper such as emacs or ddd, as well as with debuggers
other than gdb. See the
debugging page for more information.
This switch is specific to tt
mode and has no effect in skas mode.
honeypot causes UML to rearrange its address space in order to
put process stacks in the same location as on the host. This allows
stack smash exploits to work against UML just as they do against the
host. This option enables jail, since it is most unlikely that
a honeypot UML should run without it enabled.
This switch is specific to tt
mode and has no effect in skas mode. Honeypots should be run
in skas mode anyway, since they will perform far better, and the
security model is much simpler, making it less likely that there will
be exploitable bugs that will allow an attacker to break out.
initrd=image
sets the filename of the initrd image that
UML will boot from.
iomem=name,file
makes file available to be
mapped by a driver inside UML. See
this page for more information.
jail enables protection of UML kernel memory from UML
processes. This is disabled by default for performance reasons.
Without it, it is fairly simple to break out of UML by changing the
right pieces of UML kernel data.
This switch is specific to tt
mode and has no effect in skas mode. skas mode doesn't have
the same problems with processes being able to break out to the host,
so this switch isn't needed. Effectively, 'jail' mode is always
enabled in skas mode.
mconsole=notify:socket
asks the mconsole driver to send
the name of its socket to the Unix socket named by this switch. This
is intended for the use of scripts which want to know when they can
start using the mconsole and what socket they should send commands to.
mem=size
controls how much "physical" memory the kernel
allocates for the system. The size is specified as a number followed by one
of 'k', 'K", 'm', 'M", which have the obvious meanings. This is not related
to the amount of memory in the physical machine. It can be more, and
the excess, if it's ever used, will just be swapped out.
In its default configuration, UML has a maximum physical memory size
of just under 512M. If you specify more than that, it will be shrunk,
and a warning printed out. If your UML is configured with highmem
support (CONFIG_HIGHMEM) enabled, then any physical memory beyond what
can be directly mapped in to the kernel address space will become
highmem. In this case, the current limit on UML physical memory is 4G.
Something to note if you have a small /tmp is that UML creates a file
in /tmp which is the same size as the memory you specified. It is not
visible because UML unlinks it after creating it. This can cause /tmp
to mysteriously become full. UML respects the TMP, TEMP, and TMPDIR
environment variables, so you can avoid this problem by specifying an
alternate temp directory.
Something else to note is that UML is noticably faster with a tmpfs
/tmp than with a disk-based /tmp such as ext2 or ext3.
mixer=host mixer
tells the UML sound driver what the
filename of the host mixer is so that it can relay to it. The default
is "/dev/sound/mixer".
mode=tt forces UML to run in tt mode (see
this page for the
details) even when skas support is built in to UML and the host.
Using this switch without both tt and skas modes built in to UML will
have no effect aside from producing a warning during boot.
ncpus=number
tells an SMP kernel how many virtual processors to
start. This switch will only take effect if CONFIG_UML_SMP is enabled
in the UML configuration.
ssl=channel
attaches one or more UML serial lines to the
named channel. The format of the channel is described
here.
root=root device
is actually used by the generic kernel in
exactly the same way as in any other kernel. If you configure a number of
block devices and want to boot off something other than ubd0, you would use something like:
root=/dev/ubd5
tty_log_dir=directory
changes the directory to which UML
writes tty logging files. This requires that tty logging be
configured into UML. See the
tty logging page
for more details.
tty_log_fd=file descriptor
causes tty logging records to
be written to the file descriptor specified. This descriptor must be
opened before UML is run and passed in to UML. See the
tty logging page
for more details.
ubd=number
causes the ubd device to take over a different major
number than the one assigned to it. This is useful for making it appear to
be an "hd" device.
ubdn=filename
is used to associate a device with a file
in the underlying filesystem. Usually, there is a filesystem in the file,
but that's not required. Swap devices containing swap files can be specified
like this. Also, a file which doesn't contain a filesystem can have
its contents read in the virtual machine by running dd on the device.
n must be in the range 0 to 7. Appending an 'r' to the number will
cause that device to be mounted read-only. Appending an 's' will
cause that device to do all IO to the host synchronously. If both 'r'
and 's' are specified, it must be as 'rs'.
Inside UML, if you are not using devfs, the devices are accessible
with minor numbers 0, 16, ..., with the other minor numbers being used
for partitions. So, the device that is ubd1 on the UML command line
becomes /dev/ubd16 inside UML.
ubdn=cow-file,backing-file
is used to layer a COW
file on another, possibly readonly, file. This is useful in a number
of ways. See this
page for all the details.
umid=name
is used to assign a name to a virtual machine. This
is intended to make it easy for UIs to manage multiple UMLs. Currently, the
only effect of this is that UML writes its tracing thread pid in
/tmp/uml/name.
uml_dir=directory
sets the directory in which UML will
put the umid directory, which in turn will contain the pid file and
mconsole socket.
umn=ip-address
sets the ip address of the host side of the slip
device that the umn device configures. This is necessary if you want to set up
networking, but your local net isn't 192.168.0.x, or you want to run
multiple virtual machines on a network, in which case, you need to
assign different ip addresses to the different machines. See the
networking tutorial for more information.
xterm=terminal emulator,title switch,exec
switch
allows you to specify an alternate terminal emulator for
UML to use for the debugger, consoles, and serial lines. terminal
emulator is the emulator itself, title switch is the switch
it uses to set its title, and exec switch is the switch it uses
to specify a command line to exec. The two switches need to have the
same syntax and semantics of xterm's "-T" and "-e". The default
value is "xterm=xterm,-T,-e". To use gnome-terminal, you would
specify "xterm=gnome-terminal,-t,-x". If any fields are left blank,
the default values will be used. So, to use "myxterm", which has the
same switches as xterm, "xterm=myxterm" will suffice.
|