endian register support
[qemu] / qemu-doc.texi
1 \input texinfo @c -*- texinfo -*-
2
3 @iftex
4 @settitle QEMU CPU Emulator User Documentation
5 @titlepage
6 @sp 7
7 @center @titlefont{QEMU CPU Emulator User Documentation}
8 @sp 3
9 @end titlepage
10 @end iftex
11
12 @chapter Introduction
13
14 @section Features
15
16 QEMU is a FAST! processor emulator using dynamic translation to
17 achieve good emulation speed.
18
19 QEMU has two operating modes:
20
21 @itemize @minus
22
23 @item 
24 Full system emulation. In this mode, QEMU emulates a full system (for
25 example a PC), including a processor and various peripherals. It can
26 be used to launch different Operating Systems without rebooting the
27 PC or to debug system code.
28
29 @item 
30 User mode emulation (Linux host only). In this mode, QEMU can launch
31 Linux processes compiled for one CPU on another CPU. It can be used to
32 launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
33 to ease cross-compilation and cross-debugging.
34
35 @end itemize
36
37 QEMU can run without an host kernel driver and yet gives acceptable
38 performance. 
39
40 For system emulation, the following hardware targets are supported:
41 @itemize
42 @item PC (x86 processor)
43 @item PREP (PowerPC processor)
44 @item PowerMac (PowerPC processor, in progress)
45 @item Sun4m (32-bit Sparc processor)
46 @item Sun4u (64-bit Sparc processor, in progress)
47 @end itemize
48
49 For user emulation, x86, PowerPC, ARM, and Sparc32/64 CPUs are supported.
50
51 @chapter Installation
52
53 If you want to compile QEMU yourself, see @ref{compilation}.
54
55 @section Linux
56
57 If a precompiled package is available for your distribution - you just
58 have to install it. Otherwise, see @ref{compilation}.
59
60 @section Windows
61
62 Download the experimental binary installer at
63 @url{http://www.freeoszoo.org/download.php}.
64
65 @section Mac OS X
66
67 Download the experimental binary installer at
68 @url{http://www.freeoszoo.org/download.php}.
69
70 @chapter QEMU PC System emulator invocation
71
72 @section Introduction
73
74 @c man begin DESCRIPTION
75
76 The QEMU System emulator simulates the
77 following PC peripherals:
78
79 @itemize @minus
80 @item 
81 i440FX host PCI bridge and PIIX3 PCI to ISA bridge
82 @item
83 Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
84 extensions (hardware level, including all non standard modes).
85 @item
86 PS/2 mouse and keyboard
87 @item 
88 2 PCI IDE interfaces with hard disk and CD-ROM support
89 @item
90 Floppy disk
91 @item 
92 NE2000 PCI network adapters
93 @item
94 Serial ports
95 @item
96 Soundblaster 16 card
97 @end itemize
98
99 QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
100 VGA BIOS.
101
102 @c man end
103
104 @section Quick Start
105
106 Download and uncompress the linux image (@file{linux.img}) and type:
107
108 @example
109 qemu linux.img
110 @end example
111
112 Linux should boot and give you a prompt.
113
114 @section Invocation
115
116 @example
117 @c man begin SYNOPSIS
118 usage: qemu [options] [disk_image]
119 @c man end
120 @end example
121
122 @c man begin OPTIONS
123 @var{disk_image} is a raw hard disk image for IDE hard disk 0.
124
125 General options:
126 @table @option
127 @item -fda file
128 @item -fdb file
129 Use @var{file} as floppy disk 0/1 image (@xref{disk_images}). You can
130 use the host floppy by using @file{/dev/fd0} as filename.
131
132 @item -hda file
133 @item -hdb file
134 @item -hdc file
135 @item -hdd file
136 Use @var{file} as hard disk 0, 1, 2 or 3 image (@xref{disk_images}).
137
138 @item -cdrom file
139 Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
140 @option{-cdrom} at the same time). You can use the host CD-ROM by
141 using @file{/dev/cdrom} as filename.
142
143 @item -boot [a|c|d]
144 Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is
145 the default.
146
147 @item -snapshot
148 Write to temporary files instead of disk image files. In this case,
149 the raw disk image you use is not written back. You can however force
150 the write back by pressing @key{C-a s} (@xref{disk_images}). 
151
152 @item -m megs
153 Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
154
155 @item -nographic
156
157 Normally, QEMU uses SDL to display the VGA output. With this option,
158 you can totally disable graphical output so that QEMU is a simple
159 command line application. The emulated serial port is redirected on
160 the console. Therefore, you can still use QEMU to debug a Linux kernel
161 with a serial console.
162
163 @item -k language
164
165 Use keyboard layout @var{language} (for example @code{fr} for
166 French). This option is only needed where it is not easy to get raw PC
167 keycodes (e.g. on Macs or with some X11 servers). You don't need to
168 use it on PC/Linux or PC/Windows hosts.
169
170 The available layouts are:
171 @example
172 ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
173 da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
174 de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
175 @end example
176
177 The default is @code{en-us}.
178
179 @item -enable-audio
180
181 The SB16 emulation is disabled by default as it may give problems with
182 Windows. You can enable it manually with this option.
183
184 @item -localtime
185 Set the real time clock to local time (the default is to UTC
186 time). This option is needed to have correct date in MS-DOS or
187 Windows.
188
189 @item -full-screen
190 Start in full screen.
191
192 @item -pidfile file
193 Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
194 from a script.
195
196 @end table
197
198 Network options:
199
200 @table @option
201
202 @item -n script      
203 Set TUN/TAP network init script [default=/etc/qemu-ifup]. This script
204 is launched to configure the host network interface (usually tun0)
205 corresponding to the virtual NE2000 card.
206
207 @item -nics n
208
209 Simulate @var{n} network cards (the default is 1).
210
211 @item -macaddr addr   
212
213 Set the mac address of the first interface (the format is
214 aa:bb:cc:dd:ee:ff in hexa). The mac address is incremented for each
215 new network interface.
216
217 @item -tun-fd fd
218 Assumes @var{fd} talks to a tap/tun host network interface and use
219 it. Read @url{http://bellard.org/qemu/tetrinet.html} to have an
220 example of its use.
221
222 @item -user-net 
223 Use the user mode network stack. This is the default if no tun/tap
224 network init script is found.
225
226 @item -tftp prefix
227 When using the user mode network stack, activate a built-in TFTP
228 server. All filenames beginning with @var{prefix} can be downloaded
229 from the host to the guest using a TFTP client. The TFTP client on the
230 guest must be configured in binary mode (use the command @code{bin} of
231 the Unix TFTP client). The host IP address on the guest is as usual
232 10.0.2.2.
233
234 @item -smb dir
235 When using the user mode network stack, activate a built-in SMB
236 server so that Windows OSes can access to the host files in @file{dir}
237 transparently.
238
239 In the guest Windows OS, the line:
240 @example
241 10.0.2.4 smbserver
242 @end example
243 must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
244 or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
245
246 Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
247
248 Note that a SAMBA server must be installed on the host OS in
249 @file{/usr/sbin/smbd}. QEMU was tested succesfully with smbd version
250 2.2.7a from the Red Hat 9.
251
252 @item -redir [tcp|udp]:host-port:[guest-host]:guest-port
253
254 When using the user mode network stack, redirect incoming TCP or UDP
255 connections to the host port @var{host-port} to the guest
256 @var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
257 is not specified, its value is 10.0.2.15 (default address given by the
258 built-in DHCP server).
259
260 For example, to redirect host X11 connection from screen 1 to guest
261 screen 0, use the following:
262
263 @example
264 # on the host
265 qemu -redir tcp:6001::6000 [...]
266 # this host xterm should open in the guest X11 server
267 xterm -display :1
268 @end example
269
270 To redirect telnet connections from host port 5555 to telnet port on
271 the guest, use the following:
272
273 @example
274 # on the host
275 qemu -redir tcp:5555::23 [...]
276 telnet localhost 5555
277 @end example
278
279 Then when you use on the host @code{telnet localhost 5555}, you
280 connect to the guest telnet server.
281
282 @item -dummy-net 
283 Use the dummy network stack: no packet will be received by the network
284 cards.
285
286 @end table
287
288 Linux boot specific. When using this options, you can use a given
289 Linux kernel without installing it in the disk image. It can be useful
290 for easier testing of various kernels.
291
292 @table @option
293
294 @item -kernel bzImage 
295 Use @var{bzImage} as kernel image.
296
297 @item -append cmdline 
298 Use @var{cmdline} as kernel command line
299
300 @item -initrd file
301 Use @var{file} as initial ram disk.
302
303 @end table
304
305 Debug/Expert options:
306 @table @option
307
308 @item -serial dev
309 Redirect the virtual serial port to host device @var{dev}. Available
310 devices are:
311 @table @code
312 @item vc
313 Virtual console
314 @item pty
315 [Linux only] Pseudo TTY (a new PTY is automatically allocated)
316 @item null
317 void device
318 @item stdio
319 [Unix only] standard input/output
320 @end table
321 The default device is @code{vc} in graphical mode and @code{stdio} in
322 non graphical mode.
323
324 This option can be used several times to simulate up to 4 serials
325 ports.
326
327 @item -monitor dev
328 Redirect the monitor to host device @var{dev} (same devices as the
329 serial port).
330 The default device is @code{vc} in graphical mode and @code{stdio} in
331 non graphical mode.
332
333 @item -s
334 Wait gdb connection to port 1234 (@xref{gdb_usage}). 
335 @item -p port
336 Change gdb connection port.
337 @item -S
338 Do not start CPU at startup (you must type 'c' in the monitor).
339 @item -d             
340 Output log in /tmp/qemu.log
341 @item -hdachs c,h,s,[,t]
342 Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
343 @var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
344 translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
345 all thoses parameters. This option is useful for old MS-DOS disk
346 images.
347
348 @item -isa
349 Simulate an ISA-only system (default is PCI system).
350 @item -std-vga
351 Simulate a standard VGA card with Bochs VBE extensions (default is
352 Cirrus Logic GD5446 PCI VGA)
353 @item -loadvm file
354 Start right away with a saved state (@code{loadvm} in monitor)
355 @end table
356
357 @c man end
358
359 @section Keys
360
361 @c man begin OPTIONS
362
363 During the graphical emulation, you can use the following keys:
364 @table @key
365 @item Ctrl-Alt-f
366 Toggle full screen
367
368 @item Ctrl-Alt-n
369 Switch to virtual console 'n'. Standard console mappings are:
370 @table @emph
371 @item 1
372 Target system display
373 @item 2
374 Monitor
375 @item 3
376 Serial port
377 @end table
378
379 @item Ctrl-Alt
380 Toggle mouse and keyboard grab.
381 @end table
382
383 In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
384 @key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
385
386 During emulation, if you are using the @option{-nographic} option, use
387 @key{Ctrl-a h} to get terminal commands:
388
389 @table @key
390 @item Ctrl-a h
391 Print this help
392 @item Ctrl-a x    
393 Exit emulatior
394 @item Ctrl-a s    
395 Save disk data back to file (if -snapshot)
396 @item Ctrl-a b
397 Send break (magic sysrq in Linux)
398 @item Ctrl-a c
399 Switch between console and monitor
400 @item Ctrl-a Ctrl-a
401 Send Ctrl-a
402 @end table
403 @c man end
404
405 @ignore
406
407 @setfilename qemu 
408 @settitle QEMU System Emulator
409
410 @c man begin SEEALSO
411 The HTML documentation of QEMU for more precise information and Linux
412 user mode emulator invocation.
413 @c man end
414
415 @c man begin AUTHOR
416 Fabrice Bellard
417 @c man end
418
419 @end ignore
420
421 @end ignore
422
423 @section QEMU Monitor
424
425 The QEMU monitor is used to give complex commands to the QEMU
426 emulator. You can use it to:
427
428 @itemize @minus
429
430 @item
431 Remove or insert removable medias images
432 (such as CD-ROM or floppies)
433
434 @item 
435 Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
436 from a disk file.
437
438 @item Inspect the VM state without an external debugger.
439
440 @end itemize
441
442 @subsection Commands
443
444 The following commands are available:
445
446 @table @option
447
448 @item help or ? [cmd]
449 Show the help for all commands or just for command @var{cmd}.
450
451 @item commit  
452 Commit changes to the disk images (if -snapshot is used)
453
454 @item info subcommand 
455 show various information about the system state
456
457 @table @option
458 @item info network
459 show the network state
460 @item info block
461 show the block devices
462 @item info registers
463 show the cpu registers
464 @item info history
465 show the command line history
466 @end table
467
468 @item q or quit
469 Quit the emulator.
470
471 @item eject [-f] device
472 Eject a removable media (use -f to force it).
473
474 @item change device filename
475 Change a removable media.
476
477 @item screendump filename
478 Save screen into PPM image @var{filename}.
479
480 @item log item1[,...]
481 Activate logging of the specified items to @file{/tmp/qemu.log}.
482
483 @item savevm filename
484 Save the whole virtual machine state to @var{filename}.
485
486 @item loadvm filename
487 Restore the whole virtual machine state from @var{filename}.
488
489 @item stop
490 Stop emulation.
491
492 @item c or cont
493 Resume emulation.
494
495 @item gdbserver [port]
496 Start gdbserver session (default port=1234)
497
498 @item x/fmt addr
499 Virtual memory dump starting at @var{addr}.
500
501 @item xp /fmt addr
502 Physical memory dump starting at @var{addr}.
503
504 @var{fmt} is a format which tells the command how to format the
505 data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
506
507 @table @var
508 @item count 
509 is the number of items to be dumped.
510
511 @item format
512 can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
513 c (char) or i (asm instruction).
514
515 @item size
516 can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
517 @code{h} or @code{w} can be specified with the @code{i} format to
518 respectively select 16 or 32 bit code instruction size.
519
520 @end table
521
522 Examples: 
523 @itemize
524 @item
525 Dump 10 instructions at the current instruction pointer:
526 @example 
527 (qemu) x/10i $eip
528 0x90107063:  ret
529 0x90107064:  sti
530 0x90107065:  lea    0x0(%esi,1),%esi
531 0x90107069:  lea    0x0(%edi,1),%edi
532 0x90107070:  ret
533 0x90107071:  jmp    0x90107080
534 0x90107073:  nop
535 0x90107074:  nop
536 0x90107075:  nop
537 0x90107076:  nop
538 @end example
539
540 @item
541 Dump 80 16 bit values at the start of the video memory.
542 @example 
543 (qemu) xp/80hx 0xb8000
544 0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
545 0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
546 0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
547 0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
548 0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
549 0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
550 0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
551 0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
552 0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
553 0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
554 @end example
555 @end itemize
556
557 @item p or print/fmt expr
558
559 Print expression value. Only the @var{format} part of @var{fmt} is
560 used.
561
562 @item sendkey keys
563
564 Send @var{keys} to the emulator. Use @code{-} to press several keys
565 simultaneously. Example:
566 @example
567 sendkey ctrl-alt-f1
568 @end example
569
570 This command is useful to send keys that your graphical user interface
571 intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
572
573 @item system_reset
574
575 Reset the system.
576
577 @end table
578
579 @subsection Integer expressions
580
581 The monitor understands integers expressions for every integer
582 argument. You can use register names to get the value of specifics
583 CPU registers by prefixing them with @emph{$}.
584
585 @node disk_images
586 @section Disk Images
587
588 Since version 0.6.1, QEMU supports many disk image formats, including
589 growable disk images (their size increase as non empty sectors are
590 written), compressed and encrypted disk images.
591
592 @subsection Quick start for disk image creation
593
594 You can create a disk image with the command:
595 @example
596 qemu-img create myimage.img mysize
597 @end example
598 where @var{myimage.img} is the disk image filename and @var{mysize} is its
599 size in kilobytes. You can add an @code{M} suffix to give the size in
600 megabytes and a @code{G} suffix for gigabytes.
601
602 @xref{qemu_img_invocation} for more information.
603
604 @subsection Snapshot mode
605
606 If you use the option @option{-snapshot}, all disk images are
607 considered as read only. When sectors in written, they are written in
608 a temporary file created in @file{/tmp}. You can however force the
609 write back to the raw disk images by using the @code{commit} monitor
610 command (or @key{C-a s} in the serial console).
611
612 @node qemu_img_invocation
613 @subsection @code{qemu-img} Invocation
614
615 @include qemu-img.texi
616
617 @section Network emulation
618
619 QEMU simulates up to 6 networks cards (NE2000 boards). Each card can
620 be connected to a specific host network interface.
621
622 @subsection Using tun/tap network interface
623
624 This is the standard way to emulate network. QEMU adds a virtual
625 network device on your host (called @code{tun0}), and you can then
626 configure it as if it was a real ethernet card.
627
628 As an example, you can download the @file{linux-test-xxx.tar.gz}
629 archive and copy the script @file{qemu-ifup} in @file{/etc} and
630 configure properly @code{sudo} so that the command @code{ifconfig}
631 contained in @file{qemu-ifup} can be executed as root. You must verify
632 that your host kernel supports the TUN/TAP network interfaces: the
633 device @file{/dev/net/tun} must be present.
634
635 See @ref{direct_linux_boot} to have an example of network use with a
636 Linux distribution.
637
638 @subsection Using the user mode network stack
639
640 By using the option @option{-user-net} or if you have no tun/tap init
641 script, QEMU uses a completely user mode network stack (you don't need
642 root priviledge to use the virtual network). The virtual network
643 configuration is the following:
644
645 @example
646
647 QEMU Virtual Machine    <------>  Firewall/DHCP server <-----> Internet
648      (10.0.2.x)            |          (10.0.2.2)
649                            |
650                            ---->  DNS server (10.0.2.3)
651                            |     
652                            ---->  SMB server (10.0.2.4)
653 @end example
654
655 The QEMU VM behaves as if it was behind a firewall which blocks all
656 incoming connections. You can use a DHCP client to automatically
657 configure the network in the QEMU VM.
658
659 In order to check that the user mode network is working, you can ping
660 the address 10.0.2.2 and verify that you got an address in the range
661 10.0.2.x from the QEMU virtual DHCP server.
662
663 Note that @code{ping} is not supported reliably to the internet as it
664 would require root priviledges. It means you can only ping the local
665 router (10.0.2.2).
666
667 When using the built-in TFTP server, the router is also the TFTP
668 server.
669
670 When using the @option{-redir} option, TCP or UDP connections can be
671 redirected from the host to the guest. It allows for example to
672 redirect X11, telnet or SSH connections.
673
674 @node direct_linux_boot
675 @section Direct Linux Boot
676
677 This section explains how to launch a Linux kernel inside QEMU without
678 having to make a full bootable image. It is very useful for fast Linux
679 kernel testing. The QEMU network configuration is also explained.
680
681 @enumerate
682 @item
683 Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
684 kernel and a disk image. 
685
686 @item Optional: If you want network support (for example to launch X11 examples), you
687 must copy the script @file{qemu-ifup} in @file{/etc} and configure
688 properly @code{sudo} so that the command @code{ifconfig} contained in
689 @file{qemu-ifup} can be executed as root. You must verify that your host
690 kernel supports the TUN/TAP network interfaces: the device
691 @file{/dev/net/tun} must be present.
692
693 When network is enabled, there is a virtual network connection between
694 the host kernel and the emulated kernel. The emulated kernel is seen
695 from the host kernel at IP address 172.20.0.2 and the host kernel is
696 seen from the emulated kernel at IP address 172.20.0.1.
697
698 @item Launch @code{qemu.sh}. You should have the following output:
699
700 @example
701 > ./qemu.sh 
702 Connected to host network interface: tun0
703 Linux version 2.4.21 (bellard@voyager.localdomain) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003
704 BIOS-provided physical RAM map:
705  BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
706  BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
707 32MB LOWMEM available.
708 On node 0 totalpages: 8192
709 zone(0): 4096 pages.
710 zone(1): 4096 pages.
711 zone(2): 0 pages.
712 Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe console=ttyS0
713 ide_setup: ide2=noprobe
714 ide_setup: ide3=noprobe
715 ide_setup: ide4=noprobe
716 ide_setup: ide5=noprobe
717 Initializing CPU#0
718 Detected 2399.621 MHz processor.
719 Console: colour EGA 80x25
720 Calibrating delay loop... 4744.80 BogoMIPS
721 Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, 0k highmem)
722 Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
723 Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
724 Mount cache hash table entries: 512 (order: 0, 4096 bytes)
725 Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
726 Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
727 CPU: Intel Pentium Pro stepping 03
728 Checking 'hlt' instruction... OK.
729 POSIX conformance testing by UNIFIX
730 Linux NET4.0 for Linux 2.4
731 Based upon Swansea University Computer Society NET3.039
732 Initializing RT netlink socket
733 apm: BIOS not found.
734 Starting kswapd
735 Journalled Block Device driver loaded
736 Detected PS/2 Mouse Port.
737 pty: 256 Unix98 ptys configured
738 Serial driver version 5.05c (2001-07-08) with no serial options enabled
739 ttyS00 at 0x03f8 (irq = 4) is a 16450
740 ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
741 Last modified Nov 1, 2000 by Paul Gortmaker
742 NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
743 eth0: NE2000 found at 0x300, using IRQ 9.
744 RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
745 Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
746 ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
747 hda: QEMU HARDDISK, ATA DISK drive
748 ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
749 hda: attached ide-disk driver.
750 hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63
751 Partition check:
752  hda:
753 Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
754 NET4: Linux TCP/IP 1.0 for NET4.0
755 IP Protocols: ICMP, UDP, TCP, IGMP
756 IP: routing cache hash table of 512 buckets, 4Kbytes
757 TCP: Hash tables configured (established 2048 bind 4096)
758 NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
759 EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
760 VFS: Mounted root (ext2 filesystem).
761 Freeing unused kernel memory: 64k freed
762  
763 Linux version 2.4.21 (bellard@voyager.localdomain) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003
764  
765 QEMU Linux test distribution (based on Redhat 9)
766  
767 Type 'exit' to halt the system
768  
769 sh-2.05b# 
770 @end example
771
772 @item
773 Then you can play with the kernel inside the virtual serial console. You
774 can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
775 about the keys you can type inside the virtual serial console. In
776 particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
777 the Magic SysRq key.
778
779 @item 
780 If the network is enabled, launch the script @file{/etc/linuxrc} in the
781 emulator (don't forget the leading dot):
782 @example
783 . /etc/linuxrc
784 @end example
785
786 Then enable X11 connections on your PC from the emulated Linux: 
787 @example
788 xhost +172.20.0.2
789 @end example
790
791 You can now launch @file{xterm} or @file{xlogo} and verify that you have
792 a real Virtual Linux system !
793
794 @end enumerate
795
796 NOTES:
797 @enumerate
798 @item 
799 A 2.5.74 kernel is also included in the archive. Just
800 replace the bzImage in qemu.sh to try it.
801
802 @item 
803 In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
804 qemu. qemu will automatically exit when the Linux shutdown is done.
805
806 @item 
807 You can boot slightly faster by disabling the probe of non present IDE
808 interfaces. To do so, add the following options on the kernel command
809 line:
810 @example
811 ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
812 @end example
813
814 @item 
815 The example disk image is a modified version of the one made by Kevin
816 Lawton for the plex86 Project (@url{www.plex86.org}).
817
818 @end enumerate
819
820 @node gdb_usage
821 @section GDB usage
822
823 QEMU has a primitive support to work with gdb, so that you can do
824 'Ctrl-C' while the virtual machine is running and inspect its state.
825
826 In order to use gdb, launch qemu with the '-s' option. It will wait for a
827 gdb connection:
828 @example
829 > qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
830 Connected to host network interface: tun0
831 Waiting gdb connection on port 1234
832 @end example
833
834 Then launch gdb on the 'vmlinux' executable:
835 @example
836 > gdb vmlinux
837 @end example
838
839 In gdb, connect to QEMU:
840 @example
841 (gdb) target remote localhost:1234
842 @end example
843
844 Then you can use gdb normally. For example, type 'c' to launch the kernel:
845 @example
846 (gdb) c
847 @end example
848
849 Here are some useful tips in order to use gdb on system code:
850
851 @enumerate
852 @item
853 Use @code{info reg} to display all the CPU registers.
854 @item
855 Use @code{x/10i $eip} to display the code at the PC position.
856 @item
857 Use @code{set architecture i8086} to dump 16 bit code. Then use
858 @code{x/10i $cs*16+*eip} to dump the code at the PC position.
859 @end enumerate
860
861 @section Target OS specific information
862
863 @subsection Linux
864
865 To have access to SVGA graphic modes under X11, use the @code{vesa} or
866 the @code{cirrus} X11 driver. For optimal performances, use 16 bit
867 color depth in the guest and the host OS.
868
869 When using a 2.6 guest Linux kernel, you should add the option
870 @code{clock=pit} on the kernel command line because the 2.6 Linux
871 kernels make very strict real time clock checks by default that QEMU
872 cannot simulate exactly.
873
874 When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
875 not activated because QEMU is slower with this patch. The QEMU
876 Accelerator Module is also much slower in this case. Earlier Fedora
877 Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporte this
878 patch by default. Newer kernels don't have it.
879
880 @subsection Windows
881
882 If you have a slow host, using Windows 95 is better as it gives the
883 best speed. Windows 2000 is also a good choice.
884
885 @subsubsection SVGA graphic modes support
886
887 QEMU emulates a Cirrus Logic GD5446 Video
888 card. All Windows versions starting from Windows 95 should recognize
889 and use this graphic card. For optimal performances, use 16 bit color
890 depth in the guest and the host OS.
891
892 @subsubsection CPU usage reduction
893
894 Windows 9x does not correctly use the CPU HLT
895 instruction. The result is that it takes host CPU cycles even when
896 idle. You can install the utility from
897 @url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
898 problem. Note that no such tool is needed for NT, 2000 or XP.
899
900 @subsubsection Windows 2000 disk full problems
901
902 Currently (release 0.6.0) QEMU has a bug which gives a @code{disk
903 full} error during installation of some releases of Windows 2000. The
904 workaround is to stop QEMU as soon as you notice that your disk image
905 size is growing too fast (monitor it with @code{ls -ls}). Then
906 relaunch QEMU to continue the installation. If you still experience
907 the problem, relaunch QEMU again.
908
909 Future QEMU releases are likely to correct this bug.
910
911 @subsubsection Windows XP security problems
912
913 Some releases of Windows XP install correctly but give a security
914 error when booting:
915 @example
916 A problem is preventing Windows from accurately checking the
917 license for this computer. Error code: 0x800703e6.
918 @end example
919 The only known workaround is to boot in Safe mode
920 without networking support. 
921
922 Future QEMU releases are likely to correct this bug.
923
924 @subsection MS-DOS and FreeDOS
925
926 @subsubsection CPU usage reduction
927
928 DOS does not correctly use the CPU HLT instruction. The result is that
929 it takes host CPU cycles even when idle. You can install the utility
930 from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
931 problem.
932
933 @chapter QEMU PowerPC System emulator invocation
934
935 Use the executable @file{qemu-system-ppc} to simulate a complete PREP
936 or PowerMac PowerPC system.
937
938 QEMU emulates the following PowerMac peripherals:
939
940 @itemize @minus
941 @item 
942 UniNorth PCI Bridge 
943 @item
944 PCI VGA compatible card with VESA Bochs Extensions
945 @item 
946 2 PMAC IDE interfaces with hard disk and CD-ROM support
947 @item 
948 NE2000 PCI adapters
949 @item
950 Non Volatile RAM
951 @item
952 VIA-CUDA with ADB keyboard and mouse.
953 @end itemize
954
955 QEMU emulates the following PREP peripherals:
956
957 @itemize @minus
958 @item 
959 PCI Bridge
960 @item
961 PCI VGA compatible card with VESA Bochs Extensions
962 @item 
963 2 IDE interfaces with hard disk and CD-ROM support
964 @item
965 Floppy disk
966 @item 
967 NE2000 network adapters
968 @item
969 Serial port
970 @item
971 PREP Non Volatile RAM
972 @item
973 PC compatible keyboard and mouse.
974 @end itemize
975
976 QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
977 @url{http://site.voila.fr/jmayer/OpenHackWare/index.htm}.
978
979 You can read the qemu PC system emulation chapter to have more
980 informations about QEMU usage.
981
982 @c man begin OPTIONS
983
984 The following options are specific to the PowerPC emulation:
985
986 @table @option
987
988 @item -prep
989 Simulate a PREP system (default is PowerMAC)
990
991 @item -g WxH[xDEPTH]  
992
993 Set the initial VGA graphic mode. The default is 800x600x15.
994
995 @end table
996
997 @c man end 
998
999
1000 More information is available at
1001 @url{http://jocelyn.mayer.free.fr/qemu-ppc/}.
1002
1003 @chapter Sparc32 System emulator invocation
1004
1005 Use the executable @file{qemu-system-sparc} to simulate a JavaStation
1006 (sun4m architecture). The emulation is somewhat complete.
1007
1008 QEMU emulates the following sun4m peripherals:
1009
1010 @itemize @minus
1011 @item
1012 IOMMU
1013 @item
1014 TCX Frame buffer
1015 @item 
1016 Lance (Am7990) Ethernet
1017 @item
1018 Non Volatile RAM M48T08
1019 @item
1020 Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1021 and power/reset logic
1022 @item
1023 ESP SCSI controller with hard disk and CD-ROM support
1024 @item
1025 Floppy drive
1026 @end itemize
1027
1028 The number of peripherals is fixed in the architecture.
1029
1030 QEMU uses the Proll, a PROM replacement available at
1031 @url{http://people.redhat.com/zaitcev/linux/}. The required
1032 QEMU-specific patches are included with the sources.
1033
1034 A sample Linux 2.6 series kernel and ram disk image are available on
1035 the QEMU web site. Please note that currently neither Linux 2.4
1036 series, NetBSD, nor OpenBSD kernels work.
1037
1038 @c man begin OPTIONS
1039
1040 The following options are specific to the Sparc emulation:
1041
1042 @table @option
1043
1044 @item -g WxH
1045
1046 Set the initial TCX graphic mode. The default is 1024x768.
1047
1048 @end table
1049
1050 @c man end 
1051
1052 @chapter Sparc64 System emulator invocation
1053
1054 Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine.
1055 The emulator is not usable for anything yet.
1056
1057 @chapter QEMU User space emulator invocation
1058
1059 @section Quick Start
1060
1061 In order to launch a Linux process, QEMU needs the process executable
1062 itself and all the target (x86) dynamic libraries used by it. 
1063
1064 @itemize
1065
1066 @item On x86, you can just try to launch any process by using the native
1067 libraries:
1068
1069 @example 
1070 qemu-i386 -L / /bin/ls
1071 @end example
1072
1073 @code{-L /} tells that the x86 dynamic linker must be searched with a
1074 @file{/} prefix.
1075
1076 @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):
1077
1078 @example 
1079 qemu-i386 -L / qemu-i386 -L / /bin/ls
1080 @end example
1081
1082 @item On non x86 CPUs, you need first to download at least an x86 glibc
1083 (@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
1084 @code{LD_LIBRARY_PATH} is not set:
1085
1086 @example
1087 unset LD_LIBRARY_PATH 
1088 @end example
1089
1090 Then you can launch the precompiled @file{ls} x86 executable:
1091
1092 @example
1093 qemu-i386 tests/i386/ls
1094 @end example
1095 You can look at @file{qemu-binfmt-conf.sh} so that
1096 QEMU is automatically launched by the Linux kernel when you try to
1097 launch x86 executables. It requires the @code{binfmt_misc} module in the
1098 Linux kernel.
1099
1100 @item The x86 version of QEMU is also included. You can try weird things such as:
1101 @example
1102 qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1103 @end example
1104
1105 @end itemize
1106
1107 @section Wine launch
1108
1109 @itemize
1110
1111 @item Ensure that you have a working QEMU with the x86 glibc
1112 distribution (see previous section). In order to verify it, you must be
1113 able to do:
1114
1115 @example
1116 qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1117 @end example
1118
1119 @item Download the binary x86 Wine install
1120 (@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page). 
1121
1122 @item Configure Wine on your account. Look at the provided script
1123 @file{/usr/local/qemu-i386/bin/wine-conf.sh}. Your previous
1124 @code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
1125
1126 @item Then you can try the example @file{putty.exe}:
1127
1128 @example
1129 qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1130 @end example
1131
1132 @end itemize
1133
1134 @section Command line options
1135
1136 @example
1137 usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1138 @end example
1139
1140 @table @option
1141 @item -h
1142 Print the help
1143 @item -L path   
1144 Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1145 @item -s size
1146 Set the x86 stack size in bytes (default=524288)
1147 @end table
1148
1149 Debug options:
1150
1151 @table @option
1152 @item -d
1153 Activate log (logfile=/tmp/qemu.log)
1154 @item -p pagesize
1155 Act as if the host page size was 'pagesize' bytes
1156 @end table
1157
1158 @node compilation
1159 @chapter Compilation from the sources
1160
1161 @section Linux/Unix
1162
1163 @subsection Compilation
1164
1165 First you must decompress the sources:
1166 @example
1167 cd /tmp
1168 tar zxvf qemu-x.y.z.tar.gz
1169 cd qemu-x.y.z
1170 @end example
1171
1172 Then you configure QEMU and build it (usually no options are needed):
1173 @example
1174 ./configure
1175 make
1176 @end example
1177
1178 Then type as root user:
1179 @example
1180 make install
1181 @end example
1182 to install QEMU in @file{/usr/local}.
1183
1184 @subsection Tested tool versions
1185
1186 In order to compile QEMU succesfully, it is very important that you
1187 have the right tools. The most important one is gcc. I cannot guaranty
1188 that QEMU works if you do not use a tested gcc version. Look at
1189 'configure' and 'Makefile' if you want to make a different gcc
1190 version work.
1191
1192 @example
1193 host      gcc      binutils      glibc    linux       distribution
1194 ----------------------------------------------------------------------
1195 x86       3.2      2.13.2        2.1.3    2.4.18
1196           2.96     2.11.93.0.2   2.2.5    2.4.18      Red Hat 7.3
1197           3.2.2    2.13.90.0.18  2.3.2    2.4.20      Red Hat 9
1198
1199 PowerPC   3.3 [4]  2.13.90.0.18  2.3.1    2.4.20briq
1200           3.2
1201
1202 Alpha     3.3 [1]  2.14.90.0.4   2.2.5    2.2.20 [2]  Debian 3.0
1203
1204 Sparc32   2.95.4   2.12.90.0.1   2.2.5    2.4.18      Debian 3.0
1205
1206 ARM       2.95.4   2.12.90.0.1   2.2.5    2.4.9 [3]   Debian 3.0
1207
1208 [1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1209     for gcc version >= 3.3.
1210 [2] Linux >= 2.4.20 is necessary for precise exception support
1211     (untested).
1212 [3] 2.4.9-ac10-rmk2-np1-cerf2
1213
1214 [4] gcc 2.95.x generates invalid code when using too many register
1215 variables. You must use gcc 3.x on PowerPC.
1216 @end example
1217
1218 @section Windows
1219
1220 @itemize
1221 @item Install the current versions of MSYS and MinGW from
1222 @url{http://www.mingw.org/}. You can find detailed installation
1223 instructions in the download section and the FAQ.
1224
1225 @item Download 
1226 the MinGW development library of SDL 1.2.x
1227 (@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
1228 @url{http://www.libsdl.org}. Unpack it in a temporary place, and
1229 unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1230 directory. Edit the @file{sdl-config} script so that it gives the
1231 correct SDL directory when invoked.
1232
1233 @item Extract the current version of QEMU.
1234  
1235 @item Start the MSYS shell (file @file{msys.bat}).
1236
1237 @item Change to the QEMU directory. Launch @file{./configure} and 
1238 @file{make}.  If you have problems using SDL, verify that
1239 @file{sdl-config} can be launched from the MSYS command line.
1240
1241 @item You can install QEMU in @file{Program Files/Qemu} by typing 
1242 @file{make install}. Don't forget to copy @file{SDL.dll} in
1243 @file{Program Files/Qemu}.
1244
1245 @end itemize
1246
1247 @section Cross compilation for Windows with Linux
1248
1249 @itemize
1250 @item
1251 Install the MinGW cross compilation tools available at
1252 @url{http://www.mingw.org/}.
1253
1254 @item 
1255 Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1256 unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1257 variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1258 the QEMU configuration script.
1259
1260 @item 
1261 Configure QEMU for Windows cross compilation:
1262 @example
1263 ./configure --enable-mingw32
1264 @end example
1265 If necessary, you can change the cross-prefix according to the prefix
1266 choosen for the MinGW tools with --cross-prefix. You can also use
1267 --prefix to set the Win32 install path.
1268
1269 @item You can install QEMU in the installation directory by typing 
1270 @file{make install}. Don't forget to copy @file{SDL.dll} in the
1271 installation directory. 
1272
1273 @end itemize
1274
1275 Note: Currently, Wine does not seem able to launch
1276 QEMU for Win32.
1277
1278 @section Mac OS X
1279
1280 The Mac OS X patches are not fully merged in QEMU, so you should look
1281 at the QEMU mailing list archive to have all the necessary
1282 information.
1283