QEMU is a FAST! processor emulator using dynamic translation to achieve
good emulation speed.
QEMU has two operating modes:
* Full system emulation. In this mode, QEMU emulates a full system
(for example a PC), including a processor and various peripherials.
It can be used to launch different Operating Systems without rebooting
the PC or to debug system code.
* User mode emulation (Linux host only). In this mode, QEMU can launch
Linux processes compiled for one CPU on another CPU. It can be used to
launch the Wine Windows API emulator or to ease cross-compilation and
cross-debugging.
As QEMU requires no host kernel patches to run, it is very safe and easy to use.
===> The following configuration options are available for qemu-devel-11.1.20260930:
CAPSTONE=on: Disassembly framework support
CDROM_DMA=on: IDE CDROM DMA
CURL=on: Data transfer support via cURL
DOCS=on: Build and/or install documentation
GNUTLS=on: gnutls dependency (vnc encryption)
GTK3=on: GTK 3 GUI toolkit support
JPEG=on: jpeg dependency (vnc lossy compression)
OPENGL=on: 2D/3D rendering support via OpenGL
PNG=on: png dependency (vnc compression)
SAMBA=off: samba dependency (for -smb)
SASL=on: cyrus-sasl dependency (vnc encryption)
STATIC_LINK=off: Statically link the executables
USBREDIR=off: usb device network redirection (experimental!)
VDE=on: vde dependency (for vde networking)
X11=on: X11 (graphics) support
X86_TARGETS=off: Build only x86 system targets
====> Console (text) interface support: you have to select exactly one of them
NCURSES_DEFAULT=on: Depend on ncurses (ports if installed, otherwise base)
NCURSES_BASE=off: Depend on ncurses in base
NCURSES_PORT=off: Depend on devel/ncurses in ports
===> Use 'make config' to modify these settings
FreeBSD host notes
==================
- Needs to set net.link.tap.user_open sysctl in order to use /dev/tap*
networking as non-root. Don't forget to adjust device node
permissions in /etc/devfs.rules.
- slirp (usermode networking) is fixed now, you still have to manually
do: echo nameserver 10.0.2.3 >/etc/resolv.conf but that is normal. 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.
- The -smb option (smb-export local dir to guest using the default slirp
networking) needs the samba port/package installed in addition to
qemu. (SAMBA knob.)
- If you want to use usb devices connected to the host in the guest
you can use usbredir over the network (see below); also unless you are
running qemu as root you then need to fix permissions for /dev/ugen*
device nodes: 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"
- If you want to test the new usb network redirection (USBREDIR option)
see this thread by Hans de Goede <hdegoede <at> redhat.com>:
http://thread.gmane.org/gmane.comp.emulators.qemu/110176/focus=110183
Quote:
Example usage:
1) Start usbredirserver for a usb device:
sudo usbredirserver 045e:0772
2) Start qemu with usb2 support + a chardev talking to usbredirserver +
a usb-redir device using this chardev:
qemu -usb \
-readconfig docs/ich9-ehci-uhci.cfg \
-chardev socket,id=usbredirchardev,host=localhost,port=4000 \
-device usb-redir,chardev=usbredirchardev,id=usbredirdev ...
[you would replace docs/ich9-ehci-uhci.cfg with e.g.
/usr/local/share/doc/qemu/docs/ich9-ehci-uhci.cfg, but turns out
ehci was broken for me here with FreeBSD guests and the previous
qemu version at least, I got:
FETCHENTRY: entry at 22C5484 is of type 2 which is not supported yet
processing error - resetting ehci HC
Assertion failed: (0), function ehci_advance_state, file /data/ports/emulators/qemu-devel/work/qemu-0.15.0/hw/usb-ehci.c, line 2045.
The new qemu version works better tho.]
- 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. [Not sure
if this still applies to the new libusb host code used on recent
10-current.]
- 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. [Looks like this is fixed in recent
FreeBSD guest versions.]
- If you build qemu wihout SDL and then get crashes running it try passing it
-nographic.
- 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 recent btx code because
of the real mode boot problem, so use at least pxeboot from there.
- 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.
- (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; and meanwhile there
also is the new qed format - I don't know how stable that one is.]
- (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 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
)
emulators/qemu-devel: Make the port a bit more in line with emulators/qemu and
enable testing
Approved by: bofh (maintainer)
Differential Revision: https://reviews.freebsd.org/D55511
gnome.mk: rename gdkpixbuf2 to gdkpixbuf to prepare for port move
The GTK 1-based gdk-pixbuf has not existed for some time.
No functional or package changes.
python: bump all USE_PYTHON=distutils consumers after RUN_DEPENDS removal
Any missed ports, feel free to bump.
Any ports that need setuptools at runtime can have the devel/py-setuptools
manually added back to RUN_DEPENDS, but understand that this practice
is deprecated; see CHANGES for details.
emulators/qemu-devel: Unbreak on powerpc64le
Although it fails to build on the quarterly but it build fine on HEAD
so add back to build.
Reported by: pkubaj
*/*: Sunset 12.4-RELEASE/12-STABLE from ports tree
- Remove all references to defunct ARCH arm
- Remove all references to defunct ARCH sparc64
- Remove x11-drivers/xf86-video-sunffb which requires defunct sparc64
ARCH
- Remove sysutils/afbinit requires defunct sparc64 ARCH
- Remove all references to bktr driver
- Remove all references to defunct FreeBSD_12
- Remove all references to OSVERSION/OSREL corresponding to 12
- Remove conditionals in Mk/Uses/cabal.mk
- Remove sparc reference from Mk/Uses/qt-dist.mk
- Remove BROKEN_sparc64/NOT_FOR_ARCH=sparc64
- Remove BROKEN_FreeBSD_12* from:
- Remove OpenSSL patches from:
- Remove conditional flags for OSVERSION >= 1300000 to fixed flags.
Also move conditional flags for non sparc64/arm ARCH to fixed flags.
Reviewed by: brooks, jbeich, rene, salvadore
Differential Revision: https://reviews.freebsd.org/D42068
bsd.sites.mk: Update all ports using USE_GITLAB
Replace GL_COMMIT by GL_TAGNAME in all ports. The new GL_TAGNAME is
backwards-compatible (accepting any commit hash as before), but also
understands an actual tag name. Moving to tag names where appropriate is
left to individual ports' maintainers.
Approved by: portmgr (tcberner, mentor)
Differential Revision: https://reviews.freebsd.org/D37077
accessibility/at-spi2-core: update to 2.46.0
What's new in at-spi2-core 2.46.0:
* Fix GetInterfaces documentation on org.a11y.atspi.Accessible
interface.
What's new in at-spi2-core 2.45.91:
* Send device event controller events using the same signature as other
events.
* Document the Accessible, Action, and Cache dbus interfaces.
* Fix license of atspi-gmain.c (#87).
What's new in at-spi2-core 2.45.90:
* xml: Add some documentation.
* xml: Fix event arguments.
(Only the first 15 lines of the commit message are shown above )
Remove WWW entries moved into port Makefiles
Commit b7f05445c00f has added WWW entries to port Makefiles based on
WWW: lines in pkg-descr files.
This commit removes the WWW: lines of moved-over URLs from these
pkg-descr files.
Approved by: portmgr (tcberner)
Add WWW entries to port Makefiles
It has been common practice to have one or more URLs at the end of the
ports' pkg-descr files, one per line and prefixed with "WWW:". These
URLs should point at a project website or other relevant resources.
Access to these URLs required processing of the pkg-descr files, and
they have often become stale over time. If more than one such URL was
present in a pkg-descr file, only the first one was tarnsfered into
the port INDEX, but for many ports only the last line did contain the
port specific URL to further information.
There have been several proposals to make a project URL available as
a macro in the ports' Makefiles, over time.
(Only the first 15 lines of the commit message are shown above )
emulators: remove 'Created by' lines
A big Thank You to the original contributors of these ports:
* Akinori MUSHA aka knu <knu@idaemons.org>
* Alejandro Pulver <alejandro@varnet.biz>
* Alexander Best <arundel@gmx.net>
* Alexander Nedotsukov <bland@FreeBSD.org>
* Alexey Dokuchaev <danfe@FreeBSD.org>
* Alexey V. Antipovsky <kemm@in-line.ru>
* Alonso Cardenas Marquez <acm@FreeBSD.org>
* Brian Gaeke <brg@dgate.org>
* Danilo Egea Gondolfo <danilo@FreeBSD.org>
* David Naylor <naylor.b.david@gmail.com>
* David O'Brien (obrien@cs.ucdavis.edu)
(Only the first 15 lines of the commit message are shown above )
textproc/libxml2: bump all LIB_DEPENDS consumers
This is a separate commit to facilitate easier cherry-picking for
quarterly.
PR: 262853, 262940, 262877, 263126
Approved by: fluffy (mentor)
textproc/libxml2: bump all dependencies
This should make sure that all dependent ports will pick
up the new version commited with a13ec21cd733f67a9fc0dc00ab45268bdc236246
INSTALLS_ICONS: retire the macro and rework the related dependencies
While here, make sure gtk-update-icon-cache is only on run dependency
where added as a dependency
Enforce gtk3 to depend on gtk-update-icon-cache (previously it was
inheriting the dependency)
graphics/mesa-libs: Bump reverse deps for libglvnd
Per discussion with bapt on helping pkg handle the changing of these
deps and avoiding impossible upgrade senarios.
PR: 246767
Reviewed by: manu, bapt
Approved by: x11
Differential Revision: https://reviews.freebsd.org/D30824
emulators/qemu-devel: enable on powerp64le
Additionally, add bash to BUILD_DEPENDS.
It looks like, at least, on powerpc64le, bash is required to build.
Approved by: tier 2 blanket
emulators/qemu-devel: Update version 4.2.0=>5.1.0.20200909
- Move to SNAPSHOT versions of qemu
- Remove i386 support temporarily as build is failing on i386
- Change MASTER_SITES to GITHUB
- Mark IGNORE for 11.X as it cannot build Position Independent Code on 11
- OPTIONIZE NCURSES for support of both base and ports [1]
- Add OPTIONS CAPSTONE and use CAPSTONE from ports
- Remove PCAP related patches as was unable to create PANIC while using TSO
- Fixes for the RISC-V PLIC that are required to boot FreeBSD/riscv64 HEAD
after r362977
PR: 245997 [1]
Submitted by: lab+bsd@thinkum.space [1]
Reported by: lwhsu jhb
Switch default version of samba to 4.7
Samba 4.6 will be discontinued in a few weeks
Reviewed by: mat
Differential Revision: https://reviews.freebsd.org/D16904
Revision bump of all ports with USE_GL after consolidation of mesa-libs
Approved by: swills (mentor)
Differential Revision: https://reviews.freebsd.org/D10845
Assume "pkg-config libusb*" works after 9.x EOL
FreeBSD appears to use different pkg-config name for 0.1.x API but it
doesn't matter much as 0.1, 1.0 and 2.0 share CFLAGS/LIBS.