hello,
I'm trying to use macvtap on Debian Wheezy.
Actually, I've installed a recent version of libvirt and qemu from
wheezy-backports.
$ virsh version
Compiled against library: libvirt 1.2.1
Using library: libvirt 1.2.1
Using API: QEMU 1.2.1
Running hypervisor: QEMU 1.7.0
I'm trying to configure a macvtap interface like this:
<interface type='direct'>
<mac address='52:54:00:7b:05:cd'/>
<source dev='eth1' mode='passthrough'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x08' function='0x0'/>
</interface>
The interface eth1 is used exclusively by this VM, so as far as I
understand, mode 'passthrough' is enough since I'd like to "plug"
the VM straight onto a public static IP.
On my /etc/networks/interfaces, I have this:
# start :: define eth1
iface eth1 inet manual
# end :: define eth1
It does not matter whether eth1 is up or down, when I try to start
the VM, I get the following error:
Error
starting domain: Cannot create macvlan devices on this
platform: Function not implemented
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/asyncjob.py", line
45, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File "/usr/share/virt-manager/virtManager/asyncjob.py", line
66, in tmpcb
callback(*args, **kwargs)
File "/usr/share/virt-manager/virtManager/domain.py", line
1114, in startup
self._backend.create()
File "/usr/lib/python2.7/dist-packages/libvirt.py", line
866, in create
if ret == -1: raise libvirtError ('virDomainCreate()
failed', dom=self)
libvirtError: Cannot create macvlan devices on this platform:
Function not implemented
Trying to solve the issue, I found this:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=737097
I've tried to rebuild the package from Debian sources, but
apparently, macvtap is already defined, as I've reported to
another mailing list.
For your information:
I'm new to building packages from Debian
sources, so I followed instructions from
https://wiki.debian.org/HowToPackageForDebian#Building_Debian_packages
$ apt-get -t wheezy-backports source libvirt
$ cd libvirt-0.9.12.3/
$ sudo apt-get build-dep libvirt
$ debuild -i -us -uc -b
So... yes, it works and builds without any errors.
Next step now is applying the changes mentioned.
But I'm confused because apparently debian/rules is
already the way it should be.
ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux))
WITH_STORAGE_LVM = --with-storage-lvm
WITH_STORAGE_ISCSI = --with-storage-iscsi
WITH_STORAGE_DISK = --with-storage-disk
WITH_UDEV = --with-udev --without-hal
WITH_CAPNG = --with-capng
WITH_POLKIT = --with-polkit
WITH_MACVTAP = --with-macvtap
WITH_NETWORK = --with-network
WITH_QEMU = --with-qemu
WITH_OPENVZ = --with-openvz
WITH_NETCF = --with-netcf
ifneq (,$(findstring $(DEB_HOST_ARCH), amd64 i386 ia64 mips mipsel powerpc))
WITH_NUMA = --with-numactl
else
WITH_NUMA = --without-numactl
endif
ifneq (,$(findstring $(DEB_HOST_ARCH), ia64))
WITH_LXC = --without-lxc
else
WITH_LXC = --with-lxc
endif
else
WITH_STORAGE_LVM = --without-storage-lvm
WITH_STORAGE_ISCSI = --without-storage-iscsi
WITH_STORAGE_DISK = --without-storage-disk
WITH_UDEV = --without-udev --with-hal
WITH_CAPNG = --without-capng
WITH_POLKIT = --without-polkit
WITH_MACVTAP = --without-macvtap
WITH_NETWORK = --without-network
WITH_QEMU = --without-qemu
WITH_LXC = --without-lxc
WITH_NUMA = --without-numactl
WITH_NETCF = --without-netcf
endif
I suppose that nothing has to be changed, correct? ... since the
then branch already has the change mentioned and
the else branch probably means that nothing
related to networking would be enabled anyway.
Am I missing something ?
Thoughts?
Thanks a lot :)