summaryrefslogtreecommitdiff
path: root/emulators/qemu-devel/pkg-message
blob: c73c056be38128a7c8fd8dd6a2dcb0c5f40c4edf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
FreeBSD host notes
==================

- Needs to run as root in order to use /dev/tap* networking (why?) (actually
  RELENG_6 and above now has a sysctl net.link.tap.user_open to allow users to
  use it too.  Don't forget to adjust device node permissions in
  /etc/devfs.rules.)

- slirp (usermode networking) is fixed now in cvs, on FreeSBIE 1.0 guests you
  still have to manually do: echo nameserver 10.0.2.3 >/etc/resolv.conf but
  i've been told that that's normal.  (fixed on FreeSBIE 1.1.) And you have
  to wait a bit for dhclient to do its thing; traffic to address 10.0.2.2 is
  routed to 127.1 on the host.

- Expect timer problems when guest kernel HZ is > hosts, for example time
  sleep 1 takes 49 seconds and booting sleeps for minutes at the acd0 probe
  with a FreeSBIE 1.0 guest, thats because its kernel is built with HZ=5000,
  and FreeBSD's default is 100...  (no longer a problem with FreeSBIE 1.1.)
  The linux 2.6 kernel uses 1000 by default btw.  (changed to 250 later, and
  recent linux kernels now no longer have a fixed HZ, aka `tickless
  kernel'...)  Enabling /dev/rtc doesn't seem to help either (not included
  since it needs a patch to emulators/rtc.)

- update: the above problem has gotten worse with FreeBSD guests somewhere
  before 8.0, mainly since the kernel now usually wants double or even
  quadruple number of timer irqs compared to HZ if it detects an apic (and at
  least early versions of FreeBSD 8 had a bug that essentially halved qemu's
  clock rate too); the only reason you usually don't see symptoms of this with
  FreeBSD 8 guests is they automatically reduce their HZ to 100 when running
  in a VM while the default for the host kernel is still HZ=1000.
  workarounds:  for i386 guests you can disable the apic in the guest by
  setting

	hint.apic.0.disabled=1

  in loader.conf(5) (or manually at the loader prompt), otherwise the only thing
  you can do is either reduce the guest's HZ to, say, 100 by setting e.g.

	kern.hz="100"

  from the loader as above (which usually is a good idea in a VM anyway and
  FreeBSD 8 now does by itself as mentioned), or if that's not possible
  increase the host's HZ to 2000 or even 4000 from the loader in the same way.

- The -smb option (smb-export local dir to guest) needs the net/samba3
  port/package installed in addition to qemu.

- If you want to use usb devices connected to the host in the guest
  (usb_add host:... monitor command; this doesn't work on FreeBSD 8 and
  -current atm because of the new usb stack - help updating the usb-bsd.c code
  is more than welcome here!) you need to make sure the host isn't claiming
  them, e.g. for umass devices (like memory sticks or external harddrives)
  make sure umass isn't in the kernel (you can then still load it as a kld
  when needed), also unless you are running qemu as root you then need to fix
  permissions for /dev/ugen* device nodes: if you are on 5.x or later (devfs)
  put a rule in /etc/devfs.rules, activate it in /etc/rc.conf and run
  /etc/rc.d/devfs restart.  Example devfs.rules:

	[ugen_ruleset=20]
	add path 'ugen*' mode 660 group operator

  corresponding rc.conf line:

	devfs_system_ruleset="ugen_ruleset"

- Still usb: since the hub is no longer attached to the uchi controller and
  the wakeup mechanism, resume interrupt is not implemented yet linux guests
  will suspend the bus, i.e. they wont see devices usb_add'ed after its
  (linux') uhci module got loaded.  Workaround: either add devices before
  linux loads the module or rmmod and modprobe it afterwards.

- To avoid panics or non-working re(4) nics with FreeBSD guests if you use
  qemu -net nic,model=rtl8139 -net user or tap ... enable the emulated rtl8139
  timer by building the port with RTL8139_TIMER enabled.   (The rtl8139c+ that
  model=rtl8139 emulates needs less cpu than qemu's default ne2k nic which is
  driven by ed(4), it has not been made default only because it may not work
  with all guests yet.  Btw qemu now also can emulate a few intel eepro100 and
  e1000 nics which seem to be a tad more efficient even, and at least i82557b
  and e1000 work without tweaks for FreeBSD guests - driven by fxp(4) and
  em(4) repectively - and Linux guests too.)

- If you get repeated `atapi_poll called!' console messages with FreeBSD
  guests or other weird cdrom problems then thats probably because the guest
  has atapicam loaded, which for reasons still to be determined has problems
  with qemu's now by default enabled cdrom dma.  You can build the port with
  CDROM_DMA disabled to disable it.

- If you build qemu wihout SDL and then get crashes running it try passing it
  -nographic.  This should probably be default in that case...

- Perhaps it should be noted that if you want to use qemu with -m 512 or
  larger on 6.x/i386 hosts you need to increase the kern.maxdsiz tunable in
  loader.conf(5) since the default is 512 MB, and qemu needs memory for itself
  also.  (7.0 and up now use jemalloc which uses mmap(2) and isn't affected by
  kern.maxdsiz anymore.)

- qemu's network boot roms (-boot n) have a bug when bootfiles sizes are a
  multiple of blksize, if this affects you (like with FreeBSD's /boot/pxeboot)
  you can do like

	cp /boot/pxeboot pxeboot-qemu && chmod +w pxeboot-qemu && echo >>pxeboot-qemu

  and then use pxeboot-qemu.  Actually you need latest -stable or -current btx
  code (from after 7.0 was released) because of the real mode boot problem, so
  use at least pxeboot from there.  And I just did that for the pxeboot
  extracted out of

	ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/200805/7.0-STABLE-200805-i386-bootonly.iso

  and placed it here:

	http://people.freebsd.org/~nox/qemu/pxeboot-qemu

- If you use slirp (usernet, the default) and want to mount nfs into the guest
  and you are not running qemu as root, then mountd(8) on the exporting box
  needs to be run with -n in order to accept requests from ports >= 1024.

- The new (optional) pcap code cannot talk to the host on 6.x because the
  necessary bpf feature (BIOCFEEDBACK) hasn't (yet?) been merged there.

- (not FreeBSD-specific:) There have been reports of qcow2 corruption with (at
  least) win2k guests on recent kvm (which uses similar qcow2 code than qemu
  now, see this thread:

	http://lists.gnu.org/archive/html/qemu-devel/2009-02/msg00713.html -

  the consensus on that thread seems to be that qcow(2) code has always been
  experimental and you should use raw images if you want reliability; raw is
  also usually faster.)  You should be able to migrate existing images to raw
  using qemu-img(1)'s convert function; raw doesn't support advanced features
  like snapshots tho.  [a few important qcow2 bugfixed have been committed in
  the meantime so this _might_ be less of an issue now.]

- (also not FreeBSD-specific:)  It is recommended to pass raw images using the
  new -drive syntax, specifying format=raw explicitly in order to avoid
  malicious guests being able to exploit the format autodetection thats
  otherwise getting used.  (Not that you should run malicious guests anyway,
  but this eleminates at least a known attack vector.)

- qemu now has improved physical cdrom support, but still there still is at
  least one known problem: you need to have the guest eject the disc if you
  want to change it/take it out, or otherwise the guest may continue using
  state (like size) of the old disc.  (You can also do like `change ide1-cd0
  /dev/acd0' in the monitor after taking out the disc if a guest cannot eject
  it itself.)

- The default configuration location (qemu-ifup script etc.) has been changed
  from /etc to PREFIX/etc (usually /usr/local/etc).  Move your files
  accordingly.

- The pcap code (-net nic... -net pcap,ifname=...) should work properly now,
  with only one exception:  Advanced features like TSO used on the host
  interface can cause oversize packets which now do get truncated to avoid
  confusing/panicing guests but of course still will cause retransmissions.
  So if you see slow throughput and `pcap_send: packet size > ..., truncating'
  messages on qemu's tty try disabling TSO etc on the host interface at least
  while using pcap.

- kqemu is no longer supported in qemu upstream after the 0.11 branch
  was created, which means also not in this version.  (Linux has moved
  on to kvm now for qemu(-like) virtualization needs, so if you want qemu
  to go faster and don't want to switch to virtualbox or stick to the older
  emulators/qemu port which is at 0.11.1 atm and as such still supports
  kqemu you should help getting the FreeBSD kvm port updated and
  completed:

	http://wiki.freebsd.org/FabioChecconi/PortingLinuxKVMToFreeBSD

  )