qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

main.rst (6332B)


      1 QEMU User space emulator
      2 ========================
      3 
      4 Supported Operating Systems
      5 ---------------------------
      6 
      7 The following OS are supported in user space emulation:
      8 
      9 -  Linux (referred as qemu-linux-user)
     10 
     11 -  BSD (referred as qemu-bsd-user)
     12 
     13 Features
     14 --------
     15 
     16 QEMU user space emulation has the following notable features:
     17 
     18 **System call translation:**
     19    QEMU includes a generic system call translator. This means that the
     20    parameters of the system calls can be converted to fix endianness and
     21    32/64-bit mismatches between hosts and targets. IOCTLs can be
     22    converted too.
     23 
     24 **POSIX signal handling:**
     25    QEMU can redirect to the running program all signals coming from the
     26    host (such as ``SIGALRM``), as well as synthesize signals from
     27    virtual CPU exceptions (for example ``SIGFPE`` when the program
     28    executes a division by zero).
     29 
     30    QEMU relies on the host kernel to emulate most signal system calls,
     31    for example to emulate the signal mask. On Linux, QEMU supports both
     32    normal and real-time signals.
     33 
     34 **Threading:**
     35    On Linux, QEMU can emulate the ``clone`` syscall and create a real
     36    host thread (with a separate virtual CPU) for each emulated thread.
     37    Note that not all targets currently emulate atomic operations
     38    correctly. x86 and Arm use a global lock in order to preserve their
     39    semantics.
     40 
     41 QEMU was conceived so that ultimately it can emulate itself. Although it
     42 is not very useful, it is an important test to show the power of the
     43 emulator.
     44 
     45 Linux User space emulator
     46 -------------------------
     47 
     48 Command line options
     49 ~~~~~~~~~~~~~~~~~~~~
     50 
     51 ::
     52 
     53    qemu-i386 [-h] [-d] [-L path] [-s size] [-cpu model] [-g port] [-B offset] [-R size] program [arguments...]
     54 
     55 ``-h``
     56    Print the help
     57 
     58 ``-L path``
     59    Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
     60 
     61 ``-s size``
     62    Set the x86 stack size in bytes (default=524288)
     63 
     64 ``-cpu model``
     65    Select CPU model (-cpu help for list and additional feature
     66    selection)
     67 
     68 ``-E var=value``
     69    Set environment var to value.
     70 
     71 ``-U var``
     72    Remove var from the environment.
     73 
     74 ``-B offset``
     75    Offset guest address by the specified number of bytes. This is useful
     76    when the address region required by guest applications is reserved on
     77    the host. This option is currently only supported on some hosts.
     78 
     79 ``-R size``
     80    Pre-allocate a guest virtual address space of the given size (in
     81    bytes). \"G\", \"M\", and \"k\" suffixes may be used when specifying
     82    the size.
     83 
     84 Debug options:
     85 
     86 ``-d item1,...``
     87    Activate logging of the specified items (use '-d help' for a list of
     88    log items)
     89 
     90 ``-p pagesize``
     91    Act as if the host page size was 'pagesize' bytes
     92 
     93 ``-g port``
     94    Wait gdb connection to port
     95 
     96 ``-singlestep``
     97    Run the emulation in single step mode.
     98 
     99 Environment variables:
    100 
    101 QEMU_STRACE
    102    Print system calls and arguments similar to the 'strace' program
    103    (NOTE: the actual 'strace' program will not work because the user
    104    space emulator hasn't implemented ptrace). At the moment this is
    105    incomplete. All system calls that don't have a specific argument
    106    format are printed with information for six arguments. Many
    107    flag-style arguments don't have decoders and will show up as numbers.
    108 
    109 Other binaries
    110 ~~~~~~~~~~~~~~
    111 
    112 -  user mode (Alpha)
    113 
    114    * ``qemu-alpha`` TODO.
    115 
    116 -  user mode (Arm)
    117 
    118    * ``qemu-armeb`` TODO.
    119 
    120    * ``qemu-arm`` is also capable of running Arm \"Angel\" semihosted ELF
    121      binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
    122      configurations), and arm-uclinux bFLT format binaries.
    123 
    124 -  user mode (ColdFire)
    125 
    126 -  user mode (M68K)
    127 
    128    * ``qemu-m68k`` is capable of running semihosted binaries using the BDM
    129      (m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
    130      coldfire uClinux bFLT format binaries.
    131 
    132    The binary format is detected automatically.
    133 
    134 -  user mode (Cris)
    135 
    136    * ``qemu-cris`` TODO.
    137 
    138 -  user mode (i386)
    139 
    140    * ``qemu-i386`` TODO.
    141    * ``qemu-x86_64`` TODO.
    142 
    143 -  user mode (Microblaze)
    144 
    145    * ``qemu-microblaze`` TODO.
    146 
    147 -  user mode (MIPS)
    148 
    149    * ``qemu-mips`` executes 32-bit big endian MIPS binaries (MIPS O32 ABI).
    150 
    151    * ``qemu-mipsel`` executes 32-bit little endian MIPS binaries (MIPS O32 ABI).
    152 
    153    * ``qemu-mips64`` executes 64-bit big endian MIPS binaries (MIPS N64 ABI).
    154 
    155    * ``qemu-mips64el`` executes 64-bit little endian MIPS binaries (MIPS N64
    156      ABI).
    157 
    158    * ``qemu-mipsn32`` executes 32-bit big endian MIPS binaries (MIPS N32 ABI).
    159 
    160    * ``qemu-mipsn32el`` executes 32-bit little endian MIPS binaries (MIPS N32
    161      ABI).
    162 
    163 -  user mode (NiosII)
    164 
    165    * ``qemu-nios2`` TODO.
    166 
    167 -  user mode (PowerPC)
    168 
    169    * ``qemu-ppc64`` TODO.
    170    * ``qemu-ppc`` TODO.
    171 
    172 -  user mode (SH4)
    173 
    174    * ``qemu-sh4eb`` TODO.
    175    * ``qemu-sh4`` TODO.
    176 
    177 -  user mode (SPARC)
    178 
    179    * ``qemu-sparc`` can execute Sparc32 binaries (Sparc32 CPU, 32 bit ABI).
    180 
    181    * ``qemu-sparc32plus`` can execute Sparc32 and SPARC32PLUS binaries
    182      (Sparc64 CPU, 32 bit ABI).
    183 
    184    * ``qemu-sparc64`` can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
    185      SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
    186 
    187 BSD User space emulator
    188 -----------------------
    189 
    190 BSD Status
    191 ~~~~~~~~~~
    192 
    193 -  target Sparc64 on Sparc64: Some trivial programs work.
    194 
    195 Quick Start
    196 ~~~~~~~~~~~
    197 
    198 In order to launch a BSD process, QEMU needs the process executable
    199 itself and all the target dynamic libraries used by it.
    200 
    201 -  On Sparc64, you can just try to launch any process by using the
    202    native libraries::
    203 
    204       qemu-sparc64 /bin/ls
    205 
    206 Command line options
    207 ~~~~~~~~~~~~~~~~~~~~
    208 
    209 ::
    210 
    211    qemu-sparc64 [-h] [-d] [-L path] [-s size] [-bsd type] program [arguments...]
    212 
    213 ``-h``
    214    Print the help
    215 
    216 ``-L path``
    217    Set the library root path (default=/)
    218 
    219 ``-s size``
    220    Set the stack size in bytes (default=524288)
    221 
    222 ``-ignore-environment``
    223    Start with an empty environment. Without this option, the initial
    224    environment is a copy of the caller's environment.
    225 
    226 ``-E var=value``
    227    Set environment var to value.
    228 
    229 ``-U var``
    230    Remove var from the environment.
    231 
    232 ``-bsd type``
    233    Set the type of the emulated BSD Operating system. Valid values are
    234    FreeBSD, NetBSD and OpenBSD (default).
    235 
    236 Debug options:
    237 
    238 ``-d item1,...``
    239    Activate logging of the specified items (use '-d help' for a list of
    240    log items)
    241 
    242 ``-p pagesize``
    243    Act as if the host page size was 'pagesize' bytes
    244 
    245 ``-singlestep``
    246    Run the emulation in single step mode.