Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 9 Mar 2008 12:46:23 +0100 (CET)
From:      Per Hedeland <per@hedeland.org>
To:        sfourman@gmail.com
Cc:        freebsd-emulation@freebsd.org
Subject:   Re: Qemu: bridging on FreeBSD 7.0-STABLE
Message-ID:  <200803091146.m29BkNhk078445@pluto.hedeland.org>
In-Reply-To: <11167f520803090103j1dc61e7ap89eb21347e22557e@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
"Sam Fourman Jr." <sfourman@gmail.com> wrote:
>
>I am confused a bit,
>
>so what would I have to put in /etc/sysctl.conf so that qemu would
>have bridging for a user, automatically on bootup
>
>would I have to have a shell script of some sort? and would it not
>have to test if there already is a tap0?
>
>I have been trying to get this to work for awhile, if anyone has
>config files they could post I would very much appreciate it.
>
>esp if you could get multiple qemu's to bridge at once

Here's the setup I use:

0. In /boot/loader.conf:

if_tap_load="YES"

   This may actually be redundant though, I haven't tried w/o it.

1. In /etc/sysctl.conf:

# Allow user open of tap device for qemu networking
net.link.tap.user_open=1

2. In /etc/devfs.rules:

[localrules=10]
# devfs starts before NIS, so need numerical uid here (if you use NIS)
add path 'tap*' user 1016

3. In /etc/rc.conf:

devfs_system_ruleset="localrules"

cloned_interfaces="bridge0"
ifconfig_bridge0="addm bge0 up"

   I.e. this is one-time stuff, you can of course do it manually instead
   when testing:

   ifconfig bridge0 create
   ifconfig bridge0 addm bge0 up

   Use the name of your physical ethernet interface instead of "bge0",
   of course.

4. /etc/qemu-ifup:

#!/bin/sh
sudo /sbin/ifconfig $1 up
case "`ifconfig bridge0`" in
    *" $1 "*) ;;      # already in the bridge 
    *) sudo /sbin/ifconfig bridge0 addm $1 ;;
esac


Finally, to run multiple qemus with bridged networking you *must* assign
them different MAC addresses via -net nic,macaddr=52:54:00:XX:XX:XX
(well, one of them can have the default of course). I just hardwire
them, but in an earlier discussion here, Bakul Shah posted a nice trick
to auto-generate the MAC address:


   Right. I use a shell function to create a macaddress based on
   directory of the image file. Something like:
   
   macaddr() {
           echo 52:54:0:$(echo $1|md5 |cut -c1-6|sed 's/\(..\)\(..\)/\1:\2:/')
   }
   qemu -net nic,macaddr=$(macaddr $(dirname $(realpath $1))) -hda $*
   
   And invoke it as, for example,
   
   my-qemu /usr/oszoo/plan9 ...


Incidentally that post can *not* be found by searching the
freebsd-emulation archives at freebsd.org, but there's always google...

--Per



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200803091146.m29BkNhk078445>