[libvirt-users] Trouble configuring with macvtap passthrough on Debian Wheezy / Jessie

Richard Gomes rgomes1997 at yahoo.co.uk
Sun Feb 2 16:08:21 UTC 2014


( Answering my own question )


*Support for macvtap*

In a nutshell, Debian Wheezy does not support macvtap due to two reasons:
    1. kernel 3.6+ is required, but Wheezy is based on kernel 3.2
    2. recent versions of libvirt and qemu are required.

In order to solve the trouble, you basically need to pull recent
versions of packages linux-image, qemu and libvirt from wheezy-backports.
Something like this on an /amd64/ host:

    $ apt-get install -t wheezy-backports linux-image-/amd64/ qemu-kvm
    virt-manager

I haven't tested this, actually. I've installed Debian Jessie from
scratch instead.


*Other aspects to consider*

You have to double check whether your host supports virtualization.
Despite this sounds silly... even if your hardware supports
virtualization, eventually you may not have virtualization enabled in
your host.

In an amd64 host, change IOMMU in grub defaults at //etc/default/grub/,
like shown below in *blue*:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet transparent_hugepage=always
    elevator=noop *iommu=on,calgary,noaperture*"

Then update grub and reboot:

    $ sudo update-grub
    $ sudo grub-install /dev/sda (or whatever your harddisk is)
    $ sudo reboot


I hope it helps

Richard Gomes
http://rgomes.info
http://www.linkedin.com/in/rgomes
mobile: +44(77)9955-6813
inum <http://www.inum.net/>: +883(5100)0800-9804
sip:rgomes at ippi.fr

On 31/01/14 19:06, Richard Gomes wrote:
> ( Posting again. Correct subject line now! )
>
> Hello,
>
> I'm trying to use macvtap on Debian Wheezy.
> Actually, I've installed a recent version of libvirt and qemu from
> Jessie, using 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 :)
> -- 
> Richard Gomes
> http://rgomes.info
> http://www.linkedin.com/in/rgomes
> mobile: +44(77)9955-6813
> inum <http://www.inum.net/>: +883(5100)0800-9804
> sip:rgomes at ippi.fr
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20140202/1799a92e/attachment.htm>


More information about the libvirt-users mailing list