Traducciones de esta página:

Debian en un dominio lógico LDOMs de OpenSolaris

Introducción

En este artículo detallamos todo el proceso seguido para crear un Dominio Lógico apto para Debian Lenny, y a continuación instalarlo. Los Dominio Lógicos (LDoms) son el sistema de virtualización provisto en las versiones del chip Multi-Threading (CMT) de la arquitectura Sparc.

Cuidado: Este procedimiento incluye acciones sobre tablas de partición que pueden dejar, si no se siguen correctamente los pasos, inutilizado un disco virtual. Por favor, es necesario seguir los pasos con mucho cuidado ;-)

Creación del dominio lógico

Para crear el dominio lógico, seguiremos los pasos habituales pero, una vez creado el disco virtual, debemos, después de hacer el bind, sobreeescribir la tabla de particiones con 512 bytes nulos. La razón es que en la versión de LDOMs que tenemos en Opensolaris 2009.06 sobreescribe las tablas al hacer bind con una VTOC de Sun que estropeará las particiones Linux del disco virtual.

Así pues, vamos con los pasos. A nuestro dominio de prueba le asignaremos 1 Gb de RAM, 1 thread como CPU y un disco virtual de 4 Gb. Empecemos:

global# ldm list-domain
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      8     4G       0.2%  10m
global# ldm add-domain debiandom
global# ldm add-vcpu 1 debiandom
global# ldm add-memory 1024m debiandom
global# ldm add-vnet vnet1 primary-vsw0 debiandom
global# mkfile 4G /export/ldomsvdisks/debian01.img
global# ldm add-vdsdev /export/ldomsvdisks/debian01.img vol2@primary-vds0
global# ldm add-vdisk vdisk1 vol2@primary-vds0 debiamdom
global# ldm bind debiandom

Una vez hecho el bind, escribimos 512 bytes nulos al principio del disco:

global# dd if=/dev/zero of=/export/ldomsvdisks/debian01.img conv=notrunc count=1

Por último, quitamos la variable auto-boot=true para que podamos manejar el arranque a nuestro antojo hasta que esté instalado:

global# ldm set-variable auto-boot\?=false debiandom

Ya tenemos el dominio listo, con un disco virtual de 4Gb. Procedemos a instalar Debian por red.

Instalación por red

No podemos instalar Debian con CDROM de momento, así que lo haremos con la opción más básica (y compatible) de las instalaciones por red: con TFTP.

Preparación del servidor de red

Tenemos que instalar y configurar, RARP y TFTP. Empecemos por TFTP, sirviendo el fichero boot.img de Debian Lenny para Sparc:

global# mkdir /tftpboot ; cd /tftpboot
global# http://ftp.us.debian.org/debian/dists/lenny/main/installer-sparc/current/images/netboot/boot.img

Ahora creamos un link más en el /tftpboot que es dependiente de la dirección IP asignada a la instalación, que es 192.168.91.2. Es decir, haremos lo siguiente:

global# cd /tftpboot
global# ln -sf boot.img `printf %02x 192 168 91 2|tr [:lower:] [:upper:]`
global# ls -l
...
lrwxrwxrwx   1 root     root          15 Sep 18 19:42 C0A85B02 -> boot.img
...

Configuramos el servicio tftp:

global# echo "tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot" > ~/tftp.inetd.conf
global# inetconv -i tftp.inetd.conf
global# svcs -a|grep tftp
online         19:05:45 svc:/network/tftp/udp6:default

Instalamos y configuramos RARP:

global# pkg install SUNWbs

Guardamos la dirección MAC de la máquina en /etc/ethers y activamos el rarp:

global# ldm ls -l debiandom |grep vnet1
    vnet1            primary-vsw0@primary        network@0  00:14:4f:fb:02:4a        1                         1500 

Por tanto, guardamos esta MAC en /etc/ethers y ponemos la dirección IP en el /etc/hosts. En nuestro caso:

global# echo "00:14:4f:fb:02:4a debiandom" > /etc/ethers
global# echo "192.168.91.2    debiandom" >> /etc/hosts
global# svcadm enable rarp

Además, si no hemos configurado aun NAT en el dominio de control, lo haremos para que nuestra Debian encuentre por red los restantes archivos. Por ejemplo, tendremos activada una IP en el switch virtual (que permitirá que nuestra Debian tenga un gateway predeterminado):

global# ifconfig vsw0 plumb ; ifconfig vsw0 192.168.91.1 netmask 255.255.255.0 up

Y añadiremos las líneas correspondientes para NAT a /etc/ipf/ipnat.conf:

map e1000g0 192.168.91.0/24 -> 0/32 proxy port ftp ftp/tcp
map e1000g0 192.168.91.0/24 -> 0/32 portmap tcp/udp auto
map e1000g0 192.168.91.0/24 -> 0/32

Recargamos ahora NAT:

global# ipnat -CF -f /etc/ipf/ipnat.conf

Inicio de la instalación

Iniciaremos el dominio lógico y nos conectaremos a la consola, ejecutando el boot net correspondiente:

global# ldm start debiandom ; telnet localhost 5000
Connecting to console "t2000-01" in group "t2000-01" ....
Press ~? for control options ..

~ ?
{0} ok boot net
Boot device: /virtual-devices@100/channel-devices@200/network@0  File and args: 
Requesting Internet Address for 0:14:4f:fb:2:4a
/-

Nos saldrán los mensajes de arranque de Linux. Ahora comenzaremos una instalación de Debian Lenny por red, donde debemos:

  • Seleccionar manualmente el driver sunvnet cuando nos ofrezca elegir un driver de red, al no encontrarlo automáticamente.
  • Configurar a mano la dirección IP (pues no funcionará por DHCP). Los parámetros serían, por ejemplo:
IP address: 192.168.91.2
Netmask: 255.255.255.0
GW: 192.168.91.1
Nameserver: x.x.x.x (el que DNS de nuestro proveedor)
Hostname: debian
  • Elegiremos el mirror de Debian más cercano y el instalador se bajará unos cuantos archivos. El instalador se volverá a parar para decirnos que elijamos un driver de disco. Debemos elegir manualmente el driver sunvdc aquí.
  • Particionaremos el disco como queramos. Nosotros para probar, hemos probado con una sola partición o separar el /home, funcionando en ambos casos correctamente.

Continuará el proceso normalmente. Recomendamos simplificarlo al máximo, para ello en la selección de paquetes (tasksel) no seleccionar nada, con lo que quedará en pocos minutos el sistema base. Cuando llegue al final del todo y nos pida que confirmemos reiniciar, no lo haremos aun, y pasaremos a la siguiente sección.

Post-instalación antes de reiniciar

Como decimos, cuando el proceso de instalación llegue al final del todo y nos pida que confirmemos reiniciar, no lo haremos aun, ya que en el kernel que nos instalará no se incluirá el driver de disco, imprescindible. Además, por alguna razón las consolas virtuales de Debian no reciben las pulsaciones del teclado de la consola virtual de LDOMs, con lo que las desactivaremos si queremos entrar en el dominio (pendiente de corregir).

Lo que haremos aquí, por tanto, es salir al menú del Debian Installer y seleccionar ejecutar una shell.

Una vez en la shell, nos haremos chroot en el sistema recién instalado y seguiremos haciendo allá un par de cosas. En primer lugar, asegurarnos que el kernel cargará el driver sunvdc, imprescindible para que arranque nuestra Debian:

# chroot /target
# echo "sunvdc" >> /etc/initramfs-tools/modules
# update-initramfs -u -k all

En segundo lugar, cambiaremos la tabla /etc/inittab para que no cargue procesos getty en consolas virtuales y sí lo haga en la consola principal, /dev/console. Lo hacemos comentando las líneas y creando una nueva:

 #1:2345:respawn:/sbin/getty 38400 tty1
 1:2345:respawn:/sbin/getty 38400 console
 #2:23:respawn:/sbin/getty 38400 tty2
 #3:23:respawn:/sbin/getty 38400 tty3
 #4:23:respawn:/sbin/getty 38400 tty4
 #5:23:respawn:/sbin/getty 38400 tty5
 #6:23:respawn:/sbin/getty 38400 tty6

Listo, ahora salimos de la shell (con exit, dos veces) y nos saldrá de nuevo el menú de instalación. Seleccionamos la opción Finish Installation. Nos volverá el boot prompt del controlador del dominio.

Post-instalación: primer inicio

Lo mejor tras reiniciar es instalar openssh-server para que podamos administrarla por red desde el controlador de dominios, ya que el driver de consola no soporta las teclas de control de trabajos (CTRL-C, CTRL-Z, etc) y nos podríamos quedar bloqueados en la consola si lanzamos un comando sin fin (tan simple como un ping, por ejemplo).

Veamos un log del primer arranque:

Sun Fire T200, No Keyboard
Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
OpenBoot 4.30.3, 1024 MB memory available, Serial #83521591.
Ethernet address 0:14:4f:fa:70:37, Host ID: 84fa7037.



ok boot disk
Boot device: /virtual-devices@100/channel-devices@200/disk@0  File and args: 
SILO Version 1.4.13
boot: Linux
Allocated 8 Megs of memory at 0x40000000 for kernel
Uncompressing image...
Loaded kernel version 2.6.26
Loading initial ramdisk (6396281 bytes at 0x9000000 phys, 0x40C00000 virt)...
-
...
...
Starting OpenBSD Secure Shell server: sshd[697845.670757] NET: Registered protocol family 10
[697845.670757] NET: Registered protocol family 10 
[697845.675673] lo: Disabled Privacy Extensions
[697845.675673] lo: Disabled Privacy Extensions 
.
Starting periodic command scheduler: crond.

Debian GNU/Linux 5.0 debian console

debian login: root
Password: 
...
-bash: no job control in this shell
debian:~# apt-get install openssh-server

Conviene tener lista la cuenta de usuario y el servidor openssh-server para continuar instalando desde una conexión ssh.

Para los curiosos, el pantallazo completo de arranque lo dejamos en esta página.

Referencias

 
debianontoldom.txt · Última modificación: 2010/01/12 17:35 (editor externo)
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki