diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2020-02-28 15:35:47 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2020-03-06 10:04:57 +0000 |
commit | 091479301f96d0e1df0ab12f18d1b265979cba47 (patch) | |
tree | f518e7b1ce0177459d8d54b41fe11e852ee39889 /qemu-doc.texi | |
parent | 6b02fca71329ed858423b710699952b7f017034e (diff) |
qemu-doc: convert user-mode emulation to a separate Sphinx manual
The final addition to the set of QEMU manuals is the user-mode emulation
manual, which right now is included in qemu-doc.texi. Extract it and
convert it to rST, so that qemu-doc.texi covers only full system emulation.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20200228153619.9906-2-peter.maydell@linaro.org
Message-id: 20200226113034.6741-2-pbonzini@redhat.com
[PMM: Fix makefile conflicts; add user manual to
index.rst and index.html.in; don't specify empty man_pages
list; fixed a few comments to say 'user' rather than 'system']
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'qemu-doc.texi')
-rw-r--r-- | qemu-doc.texi | 337 |
1 files changed, 0 insertions, 337 deletions
diff --git a/qemu-doc.texi b/qemu-doc.texi index 33b9597b1d..6636816b85 100644 --- a/qemu-doc.texi +++ b/qemu-doc.texi @@ -38,7 +38,6 @@ * Introduction:: * QEMU PC System emulator:: * QEMU System emulator for non PC targets:: -* QEMU User space emulator:: * System requirements:: * Security:: * Implementation notes:: @@ -2487,342 +2486,6 @@ so should only be used with trusted guest OS. @c man end -@node QEMU User space emulator -@chapter QEMU User space emulator - -@menu -* Supported Operating Systems :: -* Features:: -* Linux User space emulator:: -* BSD User space emulator :: -@end menu - -@node Supported Operating Systems -@section Supported Operating Systems - -The following OS are supported in user space emulation: - -@itemize @minus -@item -Linux (referred as qemu-linux-user) -@item -BSD (referred as qemu-bsd-user) -@end itemize - -@node Features -@section Features - -QEMU user space emulation has the following notable features: - -@table @strong -@item System call translation: -QEMU includes a generic system call translator. This means that -the parameters of the system calls can be converted to fix -endianness and 32/64-bit mismatches between hosts and targets. -IOCTLs can be converted too. - -@item POSIX signal handling: -QEMU can redirect to the running program all signals coming from -the host (such as @code{SIGALRM}), as well as synthesize signals from -virtual CPU exceptions (for example @code{SIGFPE} when the program -executes a division by zero). - -QEMU relies on the host kernel to emulate most signal system -calls, for example to emulate the signal mask. On Linux, QEMU -supports both normal and real-time signals. - -@item Threading: -On Linux, QEMU can emulate the @code{clone} syscall and create a real -host thread (with a separate virtual CPU) for each emulated thread. -Note that not all targets currently emulate atomic operations correctly. -x86 and ARM use a global lock in order to preserve their semantics. -@end table - -QEMU was conceived so that ultimately it can emulate itself. Although -it is not very useful, it is an important test to show the power of the -emulator. - -@node Linux User space emulator -@section Linux User space emulator - -@menu -* Quick Start:: -* Wine launch:: -* Command line options:: -* Other binaries:: -@end menu - -@node Quick Start -@subsection Quick Start - -In order to launch a Linux process, QEMU needs the process executable -itself and all the target (x86) dynamic libraries used by it. - -@itemize - -@item On x86, you can just try to launch any process by using the native -libraries: - -@example -qemu-i386 -L / /bin/ls -@end example - -@code{-L /} tells that the x86 dynamic linker must be searched with a -@file{/} prefix. - -@item Since QEMU is also a linux process, you can launch QEMU with -QEMU (NOTE: you can only do that if you compiled QEMU from the sources): - -@example -qemu-i386 -L / qemu-i386 -L / /bin/ls -@end example - -@item On non x86 CPUs, you need first to download at least an x86 glibc -(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that -@code{LD_LIBRARY_PATH} is not set: - -@example -unset LD_LIBRARY_PATH -@end example - -Then you can launch the precompiled @file{ls} x86 executable: - -@example -qemu-i386 tests/i386/ls -@end example -You can look at @file{scripts/qemu-binfmt-conf.sh} so that -QEMU is automatically launched by the Linux kernel when you try to -launch x86 executables. It requires the @code{binfmt_misc} module in the -Linux kernel. - -@item The x86 version of QEMU is also included. You can try weird things such as: -@example -qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \ - /usr/local/qemu-i386/bin/ls-i386 -@end example - -@end itemize - -@node Wine launch -@subsection Wine launch - -@itemize - -@item Ensure that you have a working QEMU with the x86 glibc -distribution (see previous section). In order to verify it, you must be -able to do: - -@example -qemu-i386 /usr/local/qemu-i386/bin/ls-i386 -@end example - -@item Download the binary x86 Wine install -(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page). - -@item Configure Wine on your account. Look at the provided script -@file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous -@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}. - -@item Then you can try the example @file{putty.exe}: - -@example -qemu-i386 /usr/local/qemu-i386/wine/bin/wine \ - /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe -@end example - -@end itemize - -@node Command line options -@subsection Command line options - -@example -@command{qemu-i386} [@option{-h]} [@option{-d]} [@option{-L} @var{path}] [@option{-s} @var{size}] [@option{-cpu} @var{model}] [@option{-g} @var{port}] [@option{-B} @var{offset}] [@option{-R} @var{size}] @var{program} [@var{arguments}...] -@end example - -@table @option -@item -h -Print the help -@item -L path -Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386) -@item -s size -Set the x86 stack size in bytes (default=524288) -@item -cpu model -Select CPU model (-cpu help for list and additional feature selection) -@item -E @var{var}=@var{value} -Set environment @var{var} to @var{value}. -@item -U @var{var} -Remove @var{var} from the environment. -@item -B offset -Offset guest address by the specified number of bytes. This is useful when -the address region required by guest applications is reserved on the host. -This option is currently only supported on some hosts. -@item -R size -Pre-allocate a guest virtual address space of the given size (in bytes). -"G", "M", and "k" suffixes may be used when specifying the size. -@end table - -Debug options: - -@table @option -@item -d item1,... -Activate logging of the specified items (use '-d help' for a list of log items) -@item -p pagesize -Act as if the host page size was 'pagesize' bytes -@item -g port -Wait gdb connection to port -@item -singlestep -Run the emulation in single step mode. -@end table - -Environment variables: - -@table @env -@item QEMU_STRACE -Print system calls and arguments similar to the 'strace' program -(NOTE: the actual 'strace' program will not work because the user -space emulator hasn't implemented ptrace). At the moment this is -incomplete. All system calls that don't have a specific argument -format are printed with information for six arguments. Many -flag-style arguments don't have decoders and will show up as numbers. -@end table - -@node Other binaries -@subsection Other binaries - -@cindex user mode (Alpha) -@command{qemu-alpha} TODO. - -@cindex user mode (ARM) -@command{qemu-armeb} TODO. - -@cindex user mode (ARM) -@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF -binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB -configurations), and arm-uclinux bFLT format binaries. - -@cindex user mode (ColdFire) -@cindex user mode (M68K) -@command{qemu-m68k} is capable of running semihosted binaries using the BDM -(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and -coldfire uClinux bFLT format binaries. - -The binary format is detected automatically. - -@cindex user mode (Cris) -@command{qemu-cris} TODO. - -@cindex user mode (i386) -@command{qemu-i386} TODO. -@command{qemu-x86_64} TODO. - -@cindex user mode (Microblaze) -@command{qemu-microblaze} TODO. - -@cindex user mode (MIPS) -@command{qemu-mips} executes 32-bit big endian MIPS binaries (MIPS O32 ABI). - -@command{qemu-mipsel} executes 32-bit little endian MIPS binaries (MIPS O32 ABI). - -@command{qemu-mips64} executes 64-bit big endian MIPS binaries (MIPS N64 ABI). - -@command{qemu-mips64el} executes 64-bit little endian MIPS binaries (MIPS N64 ABI). - -@command{qemu-mipsn32} executes 32-bit big endian MIPS binaries (MIPS N32 ABI). - -@command{qemu-mipsn32el} executes 32-bit little endian MIPS binaries (MIPS N32 ABI). - -@cindex user mode (NiosII) -@command{qemu-nios2} TODO. - -@cindex user mode (PowerPC) -@command{qemu-ppc64abi32} TODO. -@command{qemu-ppc64} TODO. -@command{qemu-ppc} TODO. - -@cindex user mode (SH4) -@command{qemu-sh4eb} TODO. -@command{qemu-sh4} TODO. - -@cindex user mode (SPARC) -@command{qemu-sparc} can execute Sparc32 binaries (Sparc32 CPU, 32 bit ABI). - -@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries -(Sparc64 CPU, 32 bit ABI). - -@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and -SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI). - -@node BSD User space emulator -@section BSD User space emulator - -@menu -* BSD Status:: -* BSD Quick Start:: -* BSD Command line options:: -@end menu - -@node BSD Status -@subsection BSD Status - -@itemize @minus -@item -target Sparc64 on Sparc64: Some trivial programs work. -@end itemize - -@node BSD Quick Start -@subsection Quick Start - -In order to launch a BSD process, QEMU needs the process executable -itself and all the target dynamic libraries used by it. - -@itemize - -@item On Sparc64, you can just try to launch any process by using the native -libraries: - -@example -qemu-sparc64 /bin/ls -@end example - -@end itemize - -@node BSD Command line options -@subsection Command line options - -@example -@command{qemu-sparc64} [@option{-h]} [@option{-d]} [@option{-L} @var{path}] [@option{-s} @var{size}] [@option{-bsd} @var{type}] @var{program} [@var{arguments}...] -@end example - -@table @option -@item -h -Print the help -@item -L path -Set the library root path (default=/) -@item -s size -Set the stack size in bytes (default=524288) -@item -ignore-environment -Start with an empty environment. Without this option, -the initial environment is a copy of the caller's environment. -@item -E @var{var}=@var{value} -Set environment @var{var} to @var{value}. -@item -U @var{var} -Remove @var{var} from the environment. -@item -bsd type -Set the type of the emulated BSD Operating system. Valid values are -FreeBSD, NetBSD and OpenBSD (default). -@end table - -Debug options: - -@table @option -@item -d item1,... -Activate logging of the specified items (use '-d help' for a list of log items) -@item -p pagesize -Act as if the host page size was 'pagesize' bytes -@item -singlestep -Run the emulation in single step mode. -@end table - @node System requirements @chapter System requirements |