13 mayo 2010

netvm de Qubes funcionando

Hola chica/s, por fin hemos conseguido hacer que funcione la netvm de Qubes en nuestro hardware.

Nuestra eth0 usa el módulo atl1c  en el bus PCI 08:00.0. Básicamente vamos a hacer que dom0 no haga uso de eth0 para hacer un pass-through del dispositivo y que sea visible (y usable :) por netvm.

Nos aseguramos que Qubes está arrancando con soporte VT-d.
[hielo@cubitera ~]$ xm dm | egrep 'DMAR|VMX'
(XEN) ACPI: DMAR BFF8E8C0, 0108 (r1 081309 DMAR1426 20090813 MSFT       97)
(XEN) VMX: Supported advanced features:
(XEN) HVM: VMX enabled

A los parámetros de arranque del kelmer añadimos:
iommu=pv iommu_inclusive_mapping=1 xen-pciback.hide=(08:00.0)

Creamos /etc/modprobe.d/xen-pciback.conf con:
options xen-pciback hide=(08:00.0) verbose_request=1
install atl1c /sbin/modprobe xen-pciback ; /sbin/modprobe --first-time --ignore-install atl1c

Ahora al cargar el módulo aparece en la salida de dmesg:
[root@cubitera ~]# dmesg -c
pciback 0000:08:00.0: seizing device
pciback 0000:08:00.0: enabling device (0000 -> 0003)
xen: registering gsi 17 triggering 0 polarity 1
xen_allocate_pirq: returning irq 17 for gsi 17
xen: --> irq=17
Already setup the GSI :17
pciback 0000:08:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17

Configuramos Qubes para que use como default-netvm netvm en lugar de dom0.
[root@cubitera ~]# /etc/init.d/network stop
Shutting down interface wlan0:                             [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Disabling IPv4 packet forwarding:  net.ipv4.ip_forward = 0
                                                           [  OK  ]
[root@cubitera ~]# qvm-set-default-netvm netvm
[root@cubitera ~]# /etc/init.d/network start
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Device eth0 does not seem to be present, delaying initialization.
                                                           [FAILED]
[root@cubitera ~]# qvm-ls 
---------------+----+---------+-------+------+-----------+--------+--------+
          name | on |   state | updbl | type |  template |  netvm |  label |
---------------+----+---------+-------+------+-----------+--------+--------+
        {dom0} |  * | Running |   Yes |  Net |       n/a |    n/a |   gray |
       {netvm} |    |  Halted |   Yes |  Net |       n/a |    n/a |    red |
 =>[linux-x64] |    |  Halted |   Yes |  Tpl |       n/a | *netvm |   gray |
      personal |    |  Halted |       |      | linux-x64 | *netvm | yellow |
[root@cubitera ~]# 

Y añadimos en /var/lib/quebes/servicevm/netvm.conf el parámetro de arranque del kernel:
iommu=soft

Ya tenemos a la VM personal recorriendo la peligrosa selva de internet a través de netvm.



-- 
Saludos de #linux, tu canal donde siempre hay un operador de guardia.

No hay comentarios:

Publicar un comentario