Hi, Update to 0.13.0. fmt the documentation and sync with reality. Comments? OK?
f.- Index: Makefile =================================================================== RCS file: /cvs/ports/emulators/qemu/Makefile,v retrieving revision 1.58 diff -N -u -p Makefile --- Makefile 15 Nov 2010 23:22:08 -0000 1.58 +++ Makefile 21 Nov 2010 14:58:28 -0000 @@ -5,8 +5,7 @@ ONLY_FOR_ARCHS = i386 amd64 sparc64 COMMENT = multi system emulator -DISTNAME = qemu-0.12.5 -REVISION = 1 +DISTNAME = qemu-0.13.0 CATEGORIES = emulators HOMEPAGE = http://www.qemu.org/ @@ -17,23 +16,33 @@ PERMIT_PACKAGE_FTP = Yes PERMIT_DISTFILES_CDROM = Yes PERMIT_DISTFILES_FTP = Yes -WANTLIB = c m ossaudio pthread util z +WANTLIB = c jpeg m ossaudio png pthread util z MASTER_SITES = ${MASTER_SITE_SAVANNAH:=qemu/} BUILD_DEPENDS = textproc/texi2html +LIB_DEPENDS = graphics/jpeg \ + graphics/png +MAKE_ENV += V=1 + USE_GMAKE = Yes -USE_GROFF = Yes +USE_GROFF = Yes CONFIGURE_STYLE = simple CONFIGURE_ARGS = --prefix=${PREFIX} \ + --sysconfdir=${PREFIX}/share \ + --mandir=${PREFIX}/man \ + --extra-cflags="-I${LOCALBASE}/include \ + -I${LOCALBASE}/include/libpng" \ + --extra-ldflags=-L${LOCALBASE}/lib \ --disable-vnc-tls \ + --disable-vnc-sasl \ --disable-curses \ --disable-curl \ --disable-bsd-user \ --disable-guest-base \ - --extra-cflags=-fno-stack-protector + --disable-uuid FLAVORS = debug no_x11 FLAVOR ?= @@ -41,11 +50,12 @@ FLAVOR ?= .if ${FLAVOR:L:Mno_x11} CONFIGURE_ARGS += --disable-sdl .else -LIB_DEPENDS = devel/sdl +LIB_DEPENDS += devel/sdl WANTLIB += SDL X11 .endif .if ${FLAVOR:L:Mdebug} +VMEM_WARNING = yes CONFIGURE_ARGS += --enable-debug .endif Index: distinfo =================================================================== RCS file: /cvs/ports/emulators/qemu/distinfo,v retrieving revision 1.12 diff -N -u -p distinfo --- distinfo 26 Aug 2010 13:44:29 -0000 1.12 +++ distinfo 21 Nov 2010 14:58:28 -0000 @@ -1,5 +1,5 @@ -MD5 (qemu-0.12.5.tar.gz) = HQLuCgTfriiUNAJzNywd5A== -RMD160 (qemu-0.12.5.tar.gz) = xOui5km0KOjdQycYRD6YYFfmktc= -SHA1 (qemu-0.12.5.tar.gz) = WWpnPzpml+qP2Q9PI5gSQcwTvcM= -SHA256 (qemu-0.12.5.tar.gz) = pqezC1NZHhYLXH/ZMZmFZzF06epHsYLb5jvJk1d0H1g= -SIZE (qemu-0.12.5.tar.gz) = 4291741 +MD5 (qemu-0.13.0.tar.gz) = OXoNZl2oup07lYNinz1kIQ== +RMD160 (qemu-0.13.0.tar.gz) = Sm+q841WFvt77cGmQI3h27PsNgw= +SHA1 (qemu-0.13.0.tar.gz) = JQu6H9tQWnh8SDMbawL1QoLt/HY= +SHA256 (qemu-0.13.0.tar.gz) = Hm9YUbBc6m43fINfRmhAjUEkz7hF+ZSNkigIdDxf2Hc= +SIZE (qemu-0.13.0.tar.gz) = 5184531 Index: patches/patch-configure =================================================================== RCS file: /cvs/ports/emulators/qemu/patches/patch-configure,v retrieving revision 1.14 diff -N -u -p patches/patch-configure --- patches/patch-configure 17 Jun 2010 09:57:55 -0000 1.14 +++ patches/patch-configure 21 Nov 2010 14:58:28 -0000 @@ -1,7 +1,7 @@ $OpenBSD: patch-configure,v 1.14 2010/06/17 09:57:55 fgsch Exp $ ---- configure.orig Tue May 4 16:27:48 2010 -+++ configure Wed Jun 16 21:24:04 2010 -@@ -34,12 +34,12 @@ interp_prefix="/usr/gnemul/qemu-%M" +--- configure.orig Fri Oct 15 21:56:09 2010 ++++ configure Thu Nov 18 21:05:53 2010 +@@ -69,12 +69,12 @@ interp_prefix="/usr/gnemul/qemu-%M" static="no" sparc_cpu="" cross_prefix="" @@ -16,37 +16,56 @@ $OpenBSD: patch-configure,v 1.14 2010/06/17 09:57:55 f ar="ar" make="make" install="install" -@@ -93,7 +93,7 @@ ld="${cross_prefix}${ld}" +@@ -128,15 +128,15 @@ ld="${cross_prefix}${ld}" # default flags for all hosts QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS" -CFLAGS="-g $CFLAGS" +CFLAGS="$CFLAGS" QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" - QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" +-QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" ++QEMU_CFLAGS="-Wstrict-prototypes $QEMU_CFLAGS" QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" -@@ -1788,7 +1788,9 @@ fi + QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS" + QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS" + LDFLAGS="-g $LDFLAGS" + +-gcc_flags="-Wold-style-declaration -Wold-style-definition -fstack-protector-all" ++gcc_flags="-Wold-style-definition" + cat > $TMPC << EOF + int main(void) { return 0; } + EOF +@@ -1300,7 +1300,7 @@ int main(void) { + } + EOF + vnc_png_cflags="" +- vnc_png_libs="-lpng" ++ vnc_png_libs="-lpng -lz -lm" + if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then + vnc_png=yes + libs_softmmu="$vnc_png_libs $libs_softmmu" +@@ -1677,7 +1677,7 @@ fi + + ########################################## + # pthread probe +-PTHREADLIBS_LIST="-lpthread -lpthreadGC2" ++PTHREADLIBS_LIST="-pthread" + + pthread=no + cat > $TMPC << EOF +@@ -2061,7 +2061,9 @@ fi # After here, no more $cc or $ld runs if test "$debug" = "no" ; then - CFLAGS="-O2 $CFLAGS" + CFLAGS="$CFLAGS" +else -+ CFLAGS="-g $CFLAGS" ++ CFLAGS="-O0 -g $CFLAGS" fi # Consult white-list to determine whether to enable werror -@@ -1836,7 +1838,7 @@ else - if test -z "$prefix" ; then - prefix="/usr/local" - fi -- mansuffix="/share/man" -+ mansuffix="/man" - datasuffix="/share/qemu" - docsuffix="/share/doc/qemu" - binsuffix="/bin" -@@ -2167,7 +2169,7 @@ echo "datadir=\${prefix}$datasuffix" >> $config_host_m - echo "docdir=\${prefix}$docsuffix" >> $config_host_mak +@@ -2452,7 +2454,7 @@ echo "TOOLS=$tools" >> $config_host_mak + echo "ROMS=$roms" >> $config_host_mak echo "MAKE=$make" >> $config_host_mak echo "INSTALL=$install" >> $config_host_mak -echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak @@ -54,7 +73,7 @@ $OpenBSD: patch-configure,v 1.14 2010/06/17 09:57:55 f echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak echo "CC=$cc" >> $config_host_mak -@@ -2575,7 +2577,11 @@ if test "$gprof" = "yes" ; then +@@ -2889,7 +2891,11 @@ if test "$gprof" = "yes" ; then fi fi Index: patches/patch-exec_c =================================================================== RCS file: /cvs/ports/emulators/qemu/patches/patch-exec_c,v retrieving revision 1.8 diff -N -u -p patches/patch-exec_c --- patches/patch-exec_c 8 Jun 2010 01:08:20 -0000 1.8 +++ patches/patch-exec_c 21 Nov 2010 14:58:28 -0000 @@ -1,7 +1,7 @@ $OpenBSD: patch-exec_c,v 1.8 2010/06/08 01:08:20 fgsch Exp $ ---- exec.c.orig Sun May 9 23:33:36 2010 -+++ exec.c Sun May 9 23:34:16 2010 -@@ -463,7 +463,8 @@ static void code_gen_alloc(unsigned long tb_size) +--- exec.c.orig Fri Oct 15 21:56:09 2010 ++++ exec.c Thu Nov 18 09:21:58 2010 +@@ -524,7 +524,8 @@ static void code_gen_alloc(unsigned long tb_size) exit(1); } } Index: patches/patch-hw_rtl8139_c =================================================================== RCS file: /cvs/ports/emulators/qemu/patches/patch-hw_rtl8139_c,v retrieving revision 1.5 diff -N -u -p patches/patch-hw_rtl8139_c --- patches/patch-hw_rtl8139_c 27 May 2010 17:55:05 -0000 1.5 +++ /dev/null 21 Nov 2010 14:57:01 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-hw_rtl8139_c,v 1.5 2010/05/27 17:55:05 fgsch Exp $ ---- hw/rtl8139.c.orig Mon Mar 8 15:01:40 2010 -+++ hw/rtl8139.c Mon Mar 8 15:01:46 2010 -@@ -61,7 +61,7 @@ - #define RTL8139_CALCULATE_RXCRC 1 - - /* Uncomment to enable on-board timer interrupts */ --//#define RTL8139_ONBOARD_TIMER 1 -+#define RTL8139_ONBOARD_TIMER 1 - - #if defined(RTL8139_CALCULATE_RXCRC) - /* For crc32 */ Index: patches/patch-net_tap-bsd_c =================================================================== RCS file: /cvs/ports/emulators/qemu/patches/patch-net_tap-bsd_c,v retrieving revision 1.1 diff -N -u -p patches/patch-net_tap-bsd_c --- patches/patch-net_tap-bsd_c 27 May 2010 17:55:05 -0000 1.1 +++ patches/patch-net_tap-bsd_c 21 Nov 2010 14:58:28 -0000 @@ -1,7 +1,7 @@ $OpenBSD: patch-net_tap-bsd_c,v 1.1 2010/05/27 17:55:05 fgsch Exp $ ---- net/tap-bsd.c.orig Mon Mar 22 23:29:35 2010 -+++ net/tap-bsd.c Mon Mar 22 23:30:23 2010 -@@ -46,7 +46,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_ +--- net/tap-bsd.c.orig Fri Oct 15 21:56:09 2010 ++++ net/tap-bsd.c Thu Nov 18 09:21:58 2010 +@@ -47,7 +47,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_ char *dev; struct stat s; @@ -10,7 +10,7 @@ $OpenBSD: patch-net_tap-bsd_c,v 1.1 2010/05/27 17:55:0 /* if no ifname is given, always start the search from tap0. */ int i; char dname[100]; -@@ -55,7 +55,11 @@ int tap_open(char *ifname, int ifname_size, int *vnet_ +@@ -56,7 +56,11 @@ int tap_open(char *ifname, int ifname_size, int *vnet_ if (*ifname) { snprintf(dname, sizeof dname, "/dev/%s", ifname); } else { Index: patches/patch-qemu-timer_c =================================================================== RCS file: patches/patch-qemu-timer_c diff -N -u -p patches/patch-qemu-timer_c --- /dev/null 21 Nov 2010 07:58:28 -0000 +++ patches/patch-qemu-timer_c 21 Nov 2010 14:58:28 -0000 @@ -0,0 +1,23 @@ +$OpenBSD$ +--- qemu-timer.c.orig Thu Nov 18 09:27:07 2010 ++++ qemu-timer.c Thu Nov 18 09:27:26 2010 +@@ -108,7 +108,8 @@ static void init_get_clock(void) + { + use_rt_clock = 0; + #if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) \ +- || defined(__DragonFly__) || defined(__FreeBSD_kernel__) ++ || defined(__DragonFly__) || defined(__FreeBSD_kernel__) \ ++ || defined(__OpenBSD__) + { + struct timespec ts; + if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) { +@@ -121,7 +122,8 @@ static void init_get_clock(void) + static int64_t get_clock(void) + { + #if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) \ +- || defined(__DragonFly__) || defined(__FreeBSD_kernel__) ++ || defined(__DragonFly__) || defined(__FreeBSD_kernel__) \ ++ || defined(__OpenBSD__) + if (use_rt_clock) { + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); Index: patches/patch-rules_mak =================================================================== RCS file: /cvs/ports/emulators/qemu/patches/patch-rules_mak,v retrieving revision 1.1 diff -N -u -p patches/patch-rules_mak --- patches/patch-rules_mak 27 May 2010 17:55:05 -0000 1.1 +++ /dev/null 21 Nov 2010 14:57:01 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-rules_mak,v 1.1 2010/05/27 17:55:05 fgsch Exp $ ---- rules.mak.orig Mon Mar 8 22:53:58 2010 -+++ rules.mak Mon Mar 8 22:54:18 2010 -@@ -31,7 +31,7 @@ LINK = $(call quiet-command,$(CC) $(QEMU_CFLAGS) $(CFL - %.a: - $(call quiet-command,rm -f $@ && $(AR) rcs $@ $^," AR $(TARGET_DIR)$@") - --quiet-command = $(if $(V),$1,$(if $(2),@echo $2 && $1, @$1)) -+quiet-command = $1 - - # cc-option - # Usage: CFLAGS+=$(call cc-option, -falign-functions=0, -malign-functions=0) Index: patches/patch-slirp_slirp_config_h =================================================================== RCS file: /cvs/ports/emulators/qemu/patches/patch-slirp_slirp_config_h,v retrieving revision 1.5 diff -N -u -p patches/patch-slirp_slirp_config_h --- patches/patch-slirp_slirp_config_h 27 May 2010 17:55:05 -0000 1.5 +++ patches/patch-slirp_slirp_config_h 21 Nov 2010 14:58:28 -0000 @@ -1,6 +1,6 @@ $OpenBSD: patch-slirp_slirp_config_h,v 1.5 2010/05/27 17:55:05 fgsch Exp $ ---- slirp/slirp_config.h.orig Mon Mar 8 15:02:00 2010 -+++ slirp/slirp_config.h Mon Mar 8 15:00:19 2010 +--- slirp/slirp_config.h.orig Fri Oct 15 21:56:09 2010 ++++ slirp/slirp_config.h Thu Nov 18 09:21:58 2010 @@ -89,7 +89,7 @@ #undef BAD_SPRINTF @@ -28,7 +28,7 @@ $OpenBSD: patch-slirp_slirp_config_h,v 1.5 2010/05/27 /* Define if you have sys/stropts.h */ #undef HAVE_SYS_STROPTS_H -@@ -194,7 +194,7 @@ +@@ -188,7 +188,7 @@ #undef HAVE_GRANTPT /* Define if you have fchmod */ Index: patches/patch-target-sparc_translate_c =================================================================== RCS file: /cvs/ports/emulators/qemu/patches/patch-target-sparc_translate_c,v retrieving revision 1.1 diff -N -u -p patches/patch-target-sparc_translate_c --- patches/patch-target-sparc_translate_c 17 Jun 2010 09:57:55 -0000 1.1 +++ /dev/null 21 Nov 2010 14:57:01 -0000 @@ -1,42 +0,0 @@ -$OpenBSD: patch-target-sparc_translate_c,v 1.1 2010/06/17 09:57:55 fgsch Exp $ ---- target-sparc/translate.c.orig Tue May 4 16:27:48 2010 -+++ target-sparc/translate.c Wed Jun 16 23:36:33 2010 -@@ -1663,27 +1663,27 @@ static inline TCGv get_src2(unsigned int insn, TCGv de - #ifdef TARGET_SPARC64 - static inline void gen_load_trap_state_at_tl(TCGv_ptr r_tsptr, TCGv_ptr cpu_env) - { -- TCGv r_tl = tcg_temp_new(); -+ TCGv_i32 r_tl = tcg_temp_new_i32(); - - /* load env->tl into r_tl */ -- { -- TCGv_i32 r_tl_tmp = tcg_temp_new_i32(); -- tcg_gen_ld_i32(r_tl_tmp, cpu_env, offsetof(CPUSPARCState, tl)); -- tcg_gen_ext_i32_tl(r_tl, r_tl_tmp); -- tcg_temp_free_i32(r_tl_tmp); -- } -+ tcg_gen_ld_i32(r_tl, cpu_env, offsetof(CPUSPARCState, tl)); - - /* tl = [0 ... MAXTL_MASK] where MAXTL_MASK must be power of 2 */ -- tcg_gen_andi_tl(r_tl, r_tl, MAXTL_MASK); -+ tcg_gen_andi_i32(r_tl, r_tl, MAXTL_MASK); - - /* calculate offset to current trap state from env->ts, reuse r_tl */ -- tcg_gen_muli_tl(r_tl, r_tl, sizeof (trap_state)); -+ tcg_gen_muli_i32(r_tl, r_tl, sizeof (trap_state)); - tcg_gen_addi_ptr(r_tsptr, cpu_env, offsetof(CPUState, ts)); - - /* tsptr = env->ts[env->tl & MAXTL_MASK] */ -- tcg_gen_add_ptr(r_tsptr, r_tsptr, r_tl); -+ { -+ TCGv_ptr r_tl_tmp = tcg_temp_new_ptr(); -+ tcg_gen_ext_i32_ptr(r_tl_tmp, r_tl); -+ tcg_gen_add_ptr(r_tsptr, r_tsptr, r_tl_tmp); -+ tcg_temp_free_ptr(r_tl_tmp); -+ } - -- tcg_temp_free(r_tl); -+ tcg_temp_free_i32(r_tl); - } - #endif - Index: patches/patch-vl_c =================================================================== RCS file: /cvs/ports/emulators/qemu/patches/patch-vl_c,v retrieving revision 1.22 diff -N -u -p patches/patch-vl_c --- patches/patch-vl_c 28 May 2010 00:02:52 -0000 1.22 +++ /dev/null 21 Nov 2010 14:57:01 -0000 @@ -1,23 +0,0 @@ -$OpenBSD: patch-vl_c,v 1.22 2010/05/28 00:02:52 fgsch Exp $ ---- vl.c.orig Tue Feb 23 13:54:38 2010 -+++ vl.c Thu May 27 17:04:47 2010 -@@ -652,7 +652,8 @@ static void init_get_clock(void) - { - use_rt_clock = 0; - #if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) \ -- || defined(__DragonFly__) || defined(__FreeBSD_kernel__) -+ || defined(__DragonFly__) || defined(__FreeBSD_kernel__) \ -+ || defined(__OpenBSD__) - { - struct timespec ts; - if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) { -@@ -665,7 +666,8 @@ static void init_get_clock(void) - static int64_t get_clock(void) - { - #if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) \ -- || defined(__DragonFly__) || defined(__FreeBSD_kernel__) -+ || defined(__DragonFly__) || defined(__FreeBSD_kernel__) \ -+ || defined(__OpenBSD__) - if (use_rt_clock) { - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/emulators/qemu/pkg/PLIST,v retrieving revision 1.15 diff -N -u -p pkg/PLIST --- pkg/PLIST 12 Nov 2010 14:43:13 -0000 1.15 +++ pkg/PLIST 21 Nov 2010 14:58:28 -0000 @@ -1,8 +1,10 @@ @comment $OpenBSD: PLIST,v 1.15 2010/11/12 14:43:13 jasper Exp $ +...@conflict qemu-* @pkgpath emulators/qemu,kqemu @bin bin/qemu @bin bin/qemu-img @bin bin/qemu-io +...@bin bin/qemu-nbd @bin bin/qemu-system-arm @bin bin/qemu-system-cris @bin bin/qemu-system-m68k @@ -38,6 +40,8 @@ share/examples/qemu/qemu-ifup share/qemu/ share/qemu/bamboo.dtb share/qemu/bios.bin +share/qemu/gpxe-eepro100-80861209.rom +share/qemu/gpxe-eepro100-80861229.rom share/qemu/keymaps/ share/qemu/keymaps/ar share/qemu/keymaps/common @@ -82,11 +86,12 @@ share/qemu/openbios-sparc64 share/qemu/petalogix-s3adsp1800.dtb share/qemu/ppc_rom.bin share/qemu/pxe-e1000.bin -share/qemu/pxe-i82559er.bin share/qemu/pxe-ne2k_pci.bin share/qemu/pxe-pcnet.bin share/qemu/pxe-rtl8139.bin share/qemu/pxe-virtio.bin +share/qemu/s390-zipl.rom +share/qemu/target-x86_64.conf share/qemu/vgabios-cirrus.bin share/qemu/vgabios.bin share/qemu/video.x Index: pkg/README =================================================================== RCS file: /cvs/ports/emulators/qemu/pkg/README,v retrieving revision 1.1 diff -N -u -p pkg/README --- pkg/README 12 Nov 2010 14:43:13 -0000 1.1 +++ pkg/README 21 Nov 2010 14:58:28 -0000 @@ -5,186 +5,192 @@ README for OpenBSD users ==> Quick Start -NOTE: amd64 cannot use '-net user' without SEGV'ing, to work around - this, either run qemu as root by replacing - qemu -m 32 .. - in this quick start section with - sudo env ETHER=em0 qemu -net nic,model=rtl8139 -net tap -m 32 .. - or by reading the 'tap mode' section below. +1. Get a bootable CDROM image: -1. Get a bootable CDROM image - $ ftp ftp://ftp.openbsd.org/pub/OpenBSD/snapshots/i386/cd48.iso 2. Create a virtual disk image: $ qemu-img create -f qcow2 virtual.img 10G -3. Install the os: +3. Install the OS: $ qemu -m 32 -monitor stdio -no-fd-bootchk -hda virtual.img \ -cdrom cd48.iso -boot d - NOTE: start this inside an xterm or equivalent - NOTE: be sure to choose serial console during install - NOTE: -no-fd-bootchk permits booting faster when no floppy is in use + NOTE: start this inside an xterm or equivalent. + NOTE: be sure to choose serial console during install. + NOTE: -no-fd-bootchk permits booting faster when no floppy is + in use. 4. Compress the virtual disk: - $ qemu-img convert -c -O qcow2 virtual.img v.tmp && mv v.tmp virtual.img + $ qemu-img convert -c -O qcow2 virtual.img v.tmp && \ + mv v.tmp virtual.img - NOTE: do not do this while qemu is running / using this virtual disk + NOTE: do not do this while qemu is running / using this virtual + disk. 5. Boot normally from the virtual disk: - $ qemu -m 32 -nographic -no-fd-bootchk -hda virtual.img + $ qemu -m 32 -nographic -no-fd-bootchk -hda virtual.img ==> Networking -1. Default Settings +1. Default Settings - By default, qemu sets up the equivalent of the following networking: + By default, qemu sets up the equivalent of the following networking: - -net nic,vlan=0,model=rtl8139,macaddr=52:54:00:12:34:56 + -net nic,vlan=0,model=e1000,macaddr=52:54:00:12:34:56 -net user,vlan=0 - Also, inside this virtual usermode network, it uses the 10.0.2.0/24 and - serves dhcp from inside this virtual network. Static address can be used - if one cannot or does not want to do dhcp in the guest os: + Also, inside this virtual usermode network, it uses the 10.0.2.0/24 + and serves dhcp from inside this virtual network. Static address + can be used if one cannot or does not want to do dhcp in the + guest OS: Guest OS IP : 10.0.2.15 Default Gateway : 10.0.2.2 Nameserver : 10.0.2.3 - It is sufficient for most operations, qemu itself performs NAT and then - makes userland network calls for tcp/udp operations. icmp and other things - are not possible in this mode. + It is sufficient for most operations, qemu itself performs NAT + and then makes userland network calls for tcp/udp operations. + icmp and other things are not possible in this mode. - NOTE: If you use one '-net' cmdline argument, qemu assumes you know what you - want and clears defaults for the rest of the -net defaults. + NOTE: If you use one '-net' cmdline argument, qemu assumes you + know what you want and clears defaults for the rest of the + -net defaults. - NOTE: The guest mode networking does not currently support IPv6, and - qemu will complain that it cannot find a dns server if - /etc/resolv.conf contains only IPv6 dns servers. + NOTE: The guest mode networking does not currently support IPv6, + and qemu will complain that it cannot find a dns server + if /etc/resolv.conf contains only IPv6 dns servers. -2. tap mode +2. tap mode - Sometimes it is desirable to configure qemu to access a network via layer2 - directly. One way of doing this without having to run qemu as root is to - let root open /dev/tunN and pass the file descriptor to qemu. The tun(4) - interface should preferrably be configured before starting qemu: + Sometimes it is desirable to configure qemu to access a network + via layer2 directly. One way of doing this without having to run + qemu as root is to let root open /dev/tunN and pass the file + descriptor to qemu. The tun(4) interface should preferrably be + configured before starting qemu: - $ sudo ifconfig tun0 192.168.0.254 link0 + $ sudo ifconfig tun0 192.168.0.254 link0 - The interface can also be configured as part of a bridge(4), in which case - the ip address can be omitted: + The interface can also be configured as part of a bridge(4), in + which case the ip address can be omitted: - $ sudo ifconfig tun0 link0 - $ sudo ifconfig bridge0 create - $ sudo ifconfig bridge0 add tun0 add em0 up + $ sudo ifconfig tun0 link0 + $ sudo ifconfig bridge0 add tun0 add em0 up - The tunnel and bridge interfaces can also be configured at system startup by - editing /etc/hostname.tunN and /etc/bridgename.bridgeN, - respectively (see hostname.if(5)). + The tunnel and bridge interfaces can also be configured at system + startup by editing /etc/hostname.tunN and /etc/hostname.bridgeN, + respectively (see hostname.if(5)). - After configuring the virtual network we can use sudo to let root open the - tunnel device and then use sudo again to drop privileges and start qemu: + After configuring the virtual network we can use sudo to let + root open the tunnel device and then use sudo again to drop + privileges and start qemu: - $ sudo sh -c "sudo -u $USER qemu -nographic -net nic -net tap,fd=3 \ - -no-fd-bootchk -hda virtual.img 3<>/dev/tun0" + $ sudo sh -c "sudo -u $USER qemu -nographic -net nic \ + -net tap,fd=3 -no-fd-bootchk -hda virtual.img 3<>/dev/tun0" - NOTE: sudo calls closefrom(2). In order to have more than one fd passed - tap interface, a line to sudoers akin to: + NOTE: sudo calls closefrom(2). In order to have more than one + fd passed tap interface, a line to sudoers akin to: Defaults closefrom_override - then calling sudo via 'sudo -C 5 -u $USER qemu ..' is required. - See sudoers(5) and sudo(8) for details. + then calling sudo via 'sudo -C 5 -u $USER qemu ..' is + required. See sudoers(5) and sudo(8) for details. - An alternative to the procedure described above is to have qemu set up the - network via ${SYSCONFDIR}/qemu-ifup. This is not recommended however, since - you would have to run qemu as root, and there is no way to drop from root - privileges at this point. + An alternative to the procedure described above is to have qemu + set up the network via ${SYSCONFDIR}/qemu-ifup. This is not + recommended however, since you would have to run qemu as root, + and there is no way to drop from root privileges at this point. - ${SYSCONFDIR}/qemu-ifup contains some default settings that permit one to do - the following: + ${SYSCONFDIR}/qemu-ifup contains some default settings that + permit one to do the following: - # qemu -net nic -net tap -no-fd-bootchk -hda virtual.img + # qemu -net nic -net tap -no-fd-bootchk -hda virtual.img - It presumes you wish the tun(4) interface to talk to the interface - holding the default IPv4 route (falling back to trunk0 if no route is - found), and that you want 'bridge0' to be used to bridge the two. + It presumes you wish the tun(4) interface to talk to the interface + holding the default IPv4 route (falling back to trunk0 if no + route is found), and that you want 'bridge0' to be used to bridge + the two. - If you wish to over-ride these settings, setting the environment variables - ETHER and BRIDGE will over-ride these settings, respectively. + Setting the environment variables ETHER and BRIDGE will override + these settings, respectively. - When starting qemu, the script attempts to output useful information, but - there are also error messages that occur as well. On my laptop, I want to - route / nat natively using pf and also have layer2 access to the qemu - networks. I thus have this as /etc/hostname.trunk101: + When starting qemu, the script attempts to output useful + information, but there are also error messages that occur as + well. On my laptop, I want to route / nat natively using pf and + also have layer2 access to the qemu networks. I thus have this + as /etc/hostname.trunk101: inet6 fe80::1c 64 lladdr 00:03:25:0d:7a:2c inet 10.7.255.1 255.255.255.0 inet6 alias 2001:240:58a:45::1c - I have dhcpd configured to run on trunk101, and also run rtadvd. For qemu, - the startup looks like this: + I have dhcpd configured to run on trunk101, and also run rtadvd. + For qemu, the startup looks like this: - # export ETHER=trunk101 - # export BRIDGE=bridge101 - # qemu -net nic,vlan=0,model=rtl8139,macaddr=52:54:00:12:35:00 \ + # export ETHER=trunk101 + # export BRIDGE=bridge101 + # qemu -net nic,vlan=0,model=e1000,macaddr=52:54:00:12:35:00 \ -net tap,vlan=0 -vnc :0 -localtime -usb -usbdevice tablet \ -m 256 -no-fd-bootchk -hda virtual.img -monitor stdio - {tun0 (bridge101 <-> trunk101)ifconfig: bridge101: No such process - ifconfig: bridge101: No such process - } - (qemu) + {tun0 (bridge101 <-> trunk101)ifconfig: bridge101: No such process + ifconfig: bridge101: No such process + } + (qemu) - The errors are normal and should be ignored. One can verify the networking - is properly configured by verifying the bridge interface: + The errors are normal and should be ignored. One can verify the + networking is properly configured by verifying the bridge + interface: - $ ifconfig bridge101 - bridge101: flags=41<UP,RUNNING> - priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp - designated: id 00:00:00:00:00:00 priority 0 - tun0 flags=3<LEARNING,DISCOVER> - port 16 ifpriority 0 ifcost 0 - trunk101 flags=3<LEARNING,DISCOVER> - port 6 ifpriority 0 ifcost 0 - Addresses (max cache: 100, timeout: 240): + $ ifconfig bridge101 + bridge101: flags=41<UP,RUNNING> + groups: bridge + priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp + designated: id 00:00:00:00:00:00 priority 0 + tun0 flags=3<LEARNING,DISCOVER> + port 16 ifpriority 0 ifcost 0 + trunk101 flags=3<LEARNING,DISCOVER> + port 6 ifpriority 0 ifcost 0 + Addresses (max cache: 100, timeout: 240): - NOTE: When running multiple qemu sessions simultaneously on the same bridge, - care must be taken because the network mac address defaults to - 52:54:00:12:34:56 for every qemu instance. To change this, observe - the macaddr= syntax in the above example and choose a unique lladdr - per qemu nic. + NOTE: When running multiple qemu sessions simultaneously on the + same bridge, care must be taken because the network mac + address defaults to 52:54:00:12:34:56 for every qemu + instance. To change this, observe the macaddr= syntax in + the above example and choose a unique lladdr per qemu nic. ==> Mice - NOTE: Certain OS's work much better with the tablet usb device than - the normal ps2 mouse handling. See the above example for usage. + NOTE: Certain OS's work much better with the tablet usb device + than the normal ps2 mouse handling. See the above example + for usage. ==> Serial Console - 1. Installing OpenBSD via serial console is sometimes desirable. X may not - be available, and so on. There are two ways to accomplish this, both in - effect the same solution: + Installing OpenBSD via serial console is sometimes desirable. + X may not be available, and so on. There are two ways to + accomplish this, both in effect the same solution: - a. qemu -vnc :0 -serial stdio .. virtual.img -cdrom install43.iso -boot d + a. qemu -vnc :0 -serial stdio .. virtual.img \ + -cdrom install43.iso -boot d - - this option permits you to use vnc from some system to connect to - the qemu instance and 'set tty com0' at the 'boot>' prompt. - - you may then disconnect vnc and use the terminal from which you - started qemu to do the install + - this option permits you to use vnc from some system to + connect to the qemu instance and 'set tty com0' at the + 'boot>' prompt. + - you may then disconnect vnc and use the terminal from + which you started qemu to do the install. b. qemu -nographic .. virtual.img -fda floppy48.fs -boot a - - this maps both the serial port and the (qemu) monitor prompt to - the terminal qemu was started on - - to flip between them, Ctrl-a c; see the qemu man page for other - commands that work in -nographic mode. - - preparation of the floppy image to force serial console mode is - straightforward: + - this maps both the serial port and the (qemu) monitor + prompt to the terminal qemu was started on. + - to flip between them, Ctrl-a c; see the qemu man page for + other commands that work in -nographic mode. + - preparation of the floppy image to force serial console + mode is straightforward: vnconfig svnd0 floppy48.fs mount /dev/svnd0c /mnt @@ -193,47 +199,48 @@ NOTE: amd64 cannot use '-net user' without SEGV'ing, t umount /mnt vnconfig -u svnd0 - .. be sure to choose 'yes' for setting com0 to be the serial console. + .. be sure to choose 'yes' for setting com0 to be the serial + console. - NOTE: OpenBSD poweroff does work with qemu, which actually causes qemu - itself to exit. This is a good thing, as it is currently not - possible to set what block device is booted from at runtime from - qemu. So if you start an installation booting from a cdrom, you - will always boot off a cdrom every time you reboot that qemu session - until you exit and start qemu again booting off the virtual hard - drive. + NOTE: OpenBSD poweroff does work with qemu, which actually causes + qemu itself to exit. This is a good thing, as it is + currently not possible to set what block device is booted + from at runtime from qemu. So if you start an installation + booting from a cdrom, you will always boot off a cdrom + every time you reboot that qemu session until you exit and + start qemu again booting off the virtual hard drive. ==> daemonized qemu Sometimes you want qemu to start as part of a system script. - Adding to some of the above, the -daemonize option comes in handy, - as well as the telnet: designator for -serial and monitor. This - is a complete example that may be cut-and-pasted into rc.local: + Adding to some of the above, the -daemonize option comes in + handy, as well as the telnet: designator for -serial and monitor. + This is a complete example that may be cut-and-pasted into + rc.local: hddir=/var/vm USER=qemu if [ -x ${TRUEPREFIX}/bin/qemu ]; then - echo -n 'Qemu: vmi386' - ( - ifconfig tun0 link0 - ifconfig bridge101 create - ifconfig bridge101 add trunk101 add tun0 up + echo -n 'Qemu: vmi386' + ( + ifconfig tun0 link0 + ifconfig bridge101 add trunk101 add tun0 up sh -c "sudo -u $USER \ - ${TRUEPREFIX}/bin/qemu \ + ${TRUEPREFIX}/bin/qemu \ -daemonize \ -nographic \ - -net nic,vlan=0,model=rtl8139,macaddr=52:54:00:4e:62:8f \ + -net nic,vlan=0,model=e1000,macaddr=52:54:00:4e:62:8f \ -net tap,vlan=0,fd=3 \ -m 128 \ -hda $hddir/virtual.img \ -serial telnet:127.0.0.1:1080,server,nowait \ -monitor telnet:127.0.0.1:1081,server,nowait \ - -no-fd-bootchk 3<>/dev/tun0" - ) - echo "." + -no-fd-bootchk 3<>/dev/tun0" + ) + echo "." fi - NOTE: this presumes the user `qemu' exists, create it or set USER= to an - existing user to use this example. + NOTE: this presumes the user `qemu' exists, create it or set + USER= to an existing user to use this example.
