2011-05-04 02:02:04 -07:00
|
|
|
.TH REALEMU 8
|
2011-04-12 10:37:27 -07:00
|
|
|
.SH NAME
|
|
|
|
realemu \- software emulation of /dev/realmode
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.B aux/realemu
|
|
|
|
[
|
|
|
|
.B -Dpt
|
|
|
|
] [
|
|
|
|
.B -s
|
|
|
|
.I srvname
|
|
|
|
] [
|
|
|
|
.B -m
|
|
|
|
.I mountpoint
|
|
|
|
]
|
|
|
|
.SH DESCRIPTION
|
|
|
|
.PP
|
|
|
|
Originally, kernel provided
|
|
|
|
.B /dev/realmode
|
|
|
|
files with the
|
|
|
|
.IR arch (3)
|
|
|
|
device to access and call the
|
|
|
|
.SM BIOS.
|
|
|
|
.PP
|
|
|
|
Interrupts had to be disabled and the processor was switched in the
|
|
|
|
legacy 16-bit
|
|
|
|
.SM realmode
|
|
|
|
with memory protection disabled to execute
|
|
|
|
.SM BIOS
|
|
|
|
code.
|
|
|
|
.PP
|
|
|
|
This is problematic in case the
|
|
|
|
.SM BIOS
|
|
|
|
reprograms hardware currently
|
|
|
|
used by the operating system or when it reenables interrupts or just
|
|
|
|
crashes. This will freeze or reboot the machine with no way to
|
|
|
|
recover or diagnose the problem.
|
|
|
|
.PP
|
|
|
|
To avoid this,
|
|
|
|
.I realemu
|
|
|
|
is used to emulate the execution of the
|
|
|
|
.SM BIOS
|
|
|
|
routines by interpreting the machine instructions and intercepting
|
|
|
|
dangerous actions that would compromise the systems stability.
|
|
|
|
.PP
|
|
|
|
Running
|
|
|
|
.I realemu
|
|
|
|
with no arguments, it mounts itself before
|
|
|
|
.B /dev
|
|
|
|
and
|
|
|
|
replaces the original
|
|
|
|
.B /dev/realmode
|
|
|
|
file in the current namespace.
|
|
|
|
.PP
|
|
|
|
Then programs like
|
|
|
|
.IR vga (8)
|
|
|
|
can use it to make ther
|
|
|
|
.SM BIOS
|
|
|
|
calls.
|
|
|
|
.PP
|
|
|
|
The
|
|
|
|
.B D
|
|
|
|
flag will enable debug messages for 9P. The
|
|
|
|
.B p
|
|
|
|
and
|
|
|
|
.B t
|
|
|
|
flags
|
|
|
|
control tracing of i/o port access and cpu instructions to
|
|
|
|
stderr (fd 2).
|
|
|
|
.PP
|
|
|
|
When a
|
|
|
|
.I srvname
|
|
|
|
is given with the
|
|
|
|
.B s
|
|
|
|
argument, the default
|
|
|
|
.I mountpoint
|
|
|
|
is ignored and a
|
|
|
|
.SM 9P
|
|
|
|
channel is created in
|
|
|
|
.B /srv
|
|
|
|
that can be used to mount
|
|
|
|
the filesystem from another namespace. If a
|
|
|
|
.I mountpoint
|
|
|
|
is given before
|
|
|
|
the
|
|
|
|
.I srvname
|
|
|
|
argument then it is ignored, otherwise it will be used.
|
|
|
|
.SH EXAMPLES
|
|
|
|
The
|
|
|
|
.I realemu
|
|
|
|
process is only needed when accessing
|
|
|
|
.B /dev/realmode.
|
|
|
|
To invoke a subshell so that
|
|
|
|
.I realemu
|
|
|
|
exits normally after
|
|
|
|
.B aux/vga
|
|
|
|
completes:
|
|
|
|
.IP
|
|
|
|
.EX
|
|
|
|
% @{rfork n; aux/realemu; aux/vga -m vesa -l $vgasize}
|
2011-05-04 02:02:04 -07:00
|
|
|
.EE
|
2011-04-12 10:37:27 -07:00
|
|
|
.SH SOURCE
|
|
|
|
.B /sys/src/cmd/aux/realemu
|
|
|
|
.SH "SEE ALSO"
|
|
|
|
.IR vga (8),
|
|
|
|
.IR arch (3)
|