PyGrub/es

From Xen
Revision as of 16:38, 23 April 2012 by Lars.kurth (talk | contribs) (Ficheros de Configuración Soportados por el Cargador de Arranque)


¿Por qué?

PyGrub permite que puedas arrancar domUs de Linux con un kernel dentro del domU en vez de usar el sistema de archivos del dom0. Esto simplifica la administración - cada domU gestiona su propio kernel e initrd, significa que puedes usar el gestor de paquetes que viene con el sistema para actualizar los kernels, en vez de tener que hacer un seguimiento y actualizar los kernels guardados en tu dom0. También permite una fácil migración de los Linux que funcionen por HVM - no hay necesidad de extraer el kernel instalado y su initrd.

Concepto

Se usa como cargador de arranque y lo proporciona Xen. PyGrub se comporta como Grub y lee del fichero estándar menu.lst del Grub (o del grub.cfg del Grub2) para proporcionar al proceso de xen create de los parámetros requeridos y las sentencias SXP.

Por eso que su utilización es bastante sencilla.

PyGrub accede al sistema de ficheros usando un espacio de usuario con una librería de sistema de archivos (derivados en parte de los módulos de l sistema de ficheros de grub y también del libe2fs) el cual se utiliza para extraer la configuración necesaria, el kernel y el initrd para que lo use el constructor de dominios. Esto significa que leyendo el sistema de ficheros del invitado no necesita de que se monte el sistema de ficheros y se ejecuta con privilegios de nivel de usuario, lo que significa que un sistema de ficheros corrupto o malicioso no puede comprometer tu domain 0.

¿Cómo?

En tu domU

  1. Instala Grub
  2. Instala una imagen de xen para linux de tu elección.
  3. Cree el directorio /boot/grub si este no está presente.
  4. Déjele crear su menu.lst por defecto (update-grub en Debian)

En tu dom0

Cambia tu domU.cfg:

  • elimine la orden del kernel y el initrd
  • añade la orden para el cargador de arranque, por ejemplo, bootloader = '/usr/bin/pygrub'

Nota: Necesita saber dónde reside pygrub en su sistema. Por ejemplo, para los usuarios de Debian está en /usr/lib/xen-$version/bin/pygrub o algo así, en vez de la ruta que se muestra arriba.

Advertencia importante / Consejo

En tu linea para el disco, por ejemplo,

disk = ['file:/vserver/mail/guest_base2G.img,hda1,w','file:/vserver/mail/guest_swap256M.img,hda2,w','phy:data/mail,hda3,w']

asegúrate de que la partición/lvm/contenedor que contiene el kernel e initrd viene después. Xend le pasa la *primera* entrada a pyGrub. (Al menos para la Version 3.2.1) Si la primera entrada del disco no contiene un kernel, lo más seguro es que te encuentres con

Error: Boot loader didn't return any data

Si te encuentras con este error, tendrás que mirar en /var/log/xen/xend.log. Puedes ver aquí cuales son los parámetros pasados a pyGrub, puedes probarlos a mano y ver si obtienes lo deseado para el arranque del domU. (Se parecen un poco a las entradas del grub LISPificadas, en formato SXP).

Gracias a (Lo siguiente está tomado de http://lists.xensource.com/archives/html/xen-users/2007-09/msg00524.html y la experiencia propia) para la primera referencia de pyGrub.

Sistemas de Ficheros soportados

PyGrub soporta los siguientes sistemas de ficheros via libfsimage:

  • Ext2/3/4
  • FAT
  • ISO9660
  • REISERFS
  • UFS
  • ZFS

Ficheros de Configuración Soportados por el Cargador de Arranque

PyGrub soporta la sintaxis de los ficheros de configuración de los siguientes cargadores de arranques nativos:

  • Grub 1 & Grub 2
  • LILO
  • ExtLinux