Debian 6 no se la come después de todo…

Como comenté ayer, acabo de pasarle el plumero a Gentoo en una de mis PC hogareñas y buscando alternativas, terminé por decantarme por la mas faciloga de todas, pero sin caer en alguna distribución que quiera hacer todo por mí (al menos, eso es lo que yo creía cuando hice mi elección): Debian. Puntualmente la versión 6 del padre de la criatura.

La primera complicación apareció justo después de terminar de escribir el artículo y ponerme dedos a la obra: No tengo lector de CD ni DVD instalado, no quería descargar la imagen en formato ISO de algún CD auto-instalable de Debian, no tenía ganas de caminar hasta la otra punta de la casa –3 puertas con llave de por medio– para buscar un destornillador, una grabadora de DVD y un CD virgen, ni ganas de apagar la PC, conectar la grabadora, bajar el ISO; quemarlo y reiniciar para bootear desde ahí. ¡Ah! Y tampoco tenía un puto pendrive en toda la casa para instalar booteando desde USB.

Tampoco tenía ganas de hacer bootstrap de Debian desde Mi Gentoo, para hacer tanto lío mejor que quedo con Gentoo y ya. Lo quería funcionando, desde la versión Net Install para que me permita la elección de ciertos parámetros y paquetes/servicios, pero sin hacer tanto despelote…

¿Como hago?

Google me trajo a la cabeza el viejo Unetbootin, que ya alguna vez había probado en su momento y que nunca se me hubiera ocurrido por que tenía entendido que era únicamente para hacer bootear imágenes ISO desde USB.

Resulta que no. Unetbootin también permite bootear imágenes ISO desde el disco rígido, tanto desde una PC que corre windows, como desde una que corre Linux. Como en ese momento estaba corriendo windows, desde windows fué, y no podría haber sido mas sencillo.

Habiendo seleccionado como distribución elegida Debian desde la versión Netinstall, unetbootin descargó primero un kernel de Ubuntu, una imagen initram –también de Ubuntu– y no el ISO instalador de Debian si no algunos paquetes puntuales como para construir un sistema de archivos Linux dentro de mi partición NTFS en una carpeta que creó en C:\unetbtin.

Una vez hecho esto, modificó mi boot.ini para agregar el bootloader ubnldr.mbr situado en la raíz de la unidad C y me pidió reiniciar. Mas facil imposible y no demoró mas de 2 minutos, como mucho.

De ahí en adelante, la instalación es una pavada de facil, fué elegir las opciones básicas siguiendo un menú ncurses bien intuitivo, elegir que servicios y aplicaciones y esperar alrededor de media hora que descarge 1127 paquetes si no me falla la memoria. Elegir en donde instalar el código para el master boot record y ¡voilá!: Debian funcionando en un abrir y cerrar de ojos. Puedo instalar Gentoo –sin entorno gráfico– en mas o menos el mismo tiempo haciendo todo a mil, de memoria y equivocándome en varias cosas seguramente, pero acá lo importante es que Debian se instaló solito mientras yo me rascaba las bolas. Justo lo que me recomendó el médico.

No me gustó para nada que Debian se tome atribuciones que no le corresponden: Ni me preguntó, me entotoró con Gnome como entorno de escritorio. Tampoco me preguntó si tengo o no una impresora conectada así que también instaló y cargó como servicio CUPS, me volvió a avasallar al no dejándome elegir si quiero o no Bluetooh, Avahi y algún que otro servicio mas que junto con Gnome, ya son historia pero bueno, todo no se puede tampoco… Ahi entendí por que necesitaba descargar 1200 paquetes.

Por lo demás no hay nada que decir. Me deja conforme. Lento para bootear en comparación a lo mal acostumbrado que me tenía Gentoo con su baselayout2 y OpenRC-demora por lo menos el doble o el triple, ya lo voy a cronometrar– pero se la perdono por que me configuró el solito ALSA, Xorg con DRI activado ¡Y sin HAL! y un kernel con todos los drivers incluídos aparentemente, cosa que investigaré mas adelante.

También me tomó un par de minutos enterarme que Firefox se llama Iceweasel, Seamonkey Iceape, Thunderbird Icedove y otro par de minutos entender como deshacerme del gestor de login gráfico por defecto para reemplazarlo por SLIM…

Resumiendo, la experiencia es positiva. El tiempo ahora es el que dirá si me colma la paciencia o me lo quedo… Por ahora, me lo quedo.

Mis mejores metidas de pata en la consola de comandos de Linux

¿Quién no se manda una metida de pata cada tanto? Yo tengo varias de diversa índole en prácticamente todos los aspectos de la vida. Estas son las mejores que puedo recordar que me hayan pasado en Linux tipeando comandos en la consola:

Ejecutar comandos en el host equivocado:

Ejecutar un comando creyendo estar en la consola local cuando en realidad se trataba de una jaula chroot o un host remoto:

# reboot

# halt

# killall (nombre de proceso importante)

De a poco se me ha hecho costumbre cambiarle el nombre al shell ni bien inicio sesión remotamente. Si me logueo en un Host cuyo nombre es pepito, renombro el prompt para que lo refleje:

# export PS1=”[pepito] $PS1”

Cambiar el puerto del servidor SSH

Eso, por muy boludo que suene ya me pasó unas dos o tres veces cambiar el puerto en el que escucha el servidor SSH y olvidarme de modificar el reenvío de puertos en el router que hace NAT o en el Firewall con lo que me encierro solo del lado de afuera y no puedo volver a conectarme remotamente:

# echo “Port 12345” >> /etc/ssh/sshd_config && /etc/init.d/sshd restart

De ahí viene la costumbre que tengo de instalar una VPN que traspase el firewall en cuanto servidor tengo bajo mi control.

Bajar la interface WAN en lugar de la LAN

Estando logueado por SSH, en lugar de bajar eth1 que era la interface LAN, bajé eth0 que era la WAN. El servidor se queda sin internet, yo me quedo fuera sin conexión. El servidor está a 70 kilómetros de distancia y es domingo a la siesta, nada mas que hacer hasta el lunes a la mañana en que alguien físicamente pueda solucionar el “problemita” reinciando el servidor o levantando eth0 nuevamente.

ifconfig eth0 down

Desde entonces tengo la costumbre de usar variables para asignarle nombres a las interfaces de red y usar la variable en lugar del nombre en el script:

export wan=eth0

Compilar mal el kernel

En un servidor remoto, compilar mal el kernel y reiniciar para probarlo resultando en un kernel panic o en quedarme sin conectividad en el servidor imposibilitando la reconexión remota por SSH para verificar los cambios.

make –j4 && make modules_install && cp arch/i386/boot/bzImage /boot/kernel && reboot

Desde entonces, si necesito reiniciar un host linux que no se si va a volver a la vida después del reboot uso una combinación de este watchdog en caso de pérdida de conectividad con este sistema de reinicio automático en caso de kernel panic y el método fallback que provee grubya voy a escribir al respecto alguna vez– para asegurarme de que si algo me salió mal, el equipo se reinicie solo volviendo a usar la configuración anterior en donde todo funcionaba.

Echando a perder se aprende, ¿Vieron?

Si la informática fuera una ciencia exacta…

Como ya he mencionado en otras oportunidades, arranco desde la red usando PXE prácticamente de todo. Imágenes de CD y DVD, Imágenes de diskette, algunas distribuciones de Linux, etc…

Por masoquismo elección personal, mi única distribución de Linux instalada en todas mis PC es Gentoo así que tenía como asignatura pendiente poder arrancar una instalación de Gentoo desde la red, cosa que de por sí no es nada facil ya que si por algo se caracteriza Gentoo es por su capacidad de personalización en función del hardware.

Como hace unos días me hice con una PC que voy a usar como mediacenter se me ocurrió: ¿Por que no hacerla arrancar desde la red y aprovechar el 100% del disco rígido de la misma para almacenamiento multimedia?

Así que me hice con la guía de Gentoo para terminales diskless y me puse dedos a la obra.

Al menos dos horas estuve dándole cabezasos a la pantalla. El sistema se negaba sistemáticamente a montar la partición raíz en modo R/W (lectura y escritura).

Al no poder montar en modo R/W la partición raíz, la gran mayoría de los servicios quedaban sin iniciarse. Esto me llevó a revisar toda la configuración de punta a punta, a googlear hasta los rincones mas recónditos, a buscar y remilbuscar en los foros de Gentoo y por último a probar soluciones de esas que no tienen ninguna lógica, de las que rayan en lo esotérico.

¿Cual fué la solución?

Pasarle al kernel durante el arranque la opción rw.

Suena lógico, ¿No?

No, no tiene ninguna lógica. La línea de grub que me permitió por último dar con un sistema funcional que cargue / en modo R/W es esta:

kernel /gentoo-2.6.32 ip=dhcp rw root=/dev/nfs nfsroot=192.168.0.1:/diskless/mediacenter

Noten la posición de la opción rw. Esto no está documentado en ningún lugar, lo dejo por aquí para quien pueda necesitarlo el día de mañana con la esperanza de que –google de por medio– alguien llegue hasta este blog y se ahorre un dolor de cabeza.

[Tip] Aumentar la cantidad de dispositivos loop en linux.

Como cada vez agrego mas imágenes .iso de CD a las que uso para bootear desde la red y acaba de salir la versión 10 de Ubuntu, quería ponerla en mi lista de distribuciones disponibles en el menú de grub para poder arrancarla usando PXE sin tener que grabar un CD.

Sorpresa: De golpe me encontré con que no hay forma de montar mas de ocho dispositivos de tipo bucle:

~ # mount -o loop ubuntu-10.04-rc-desktop-i386.iso /mnt/ubuntu10/
mount: could not find any free loop device

Mirando la lista de dispositivos tipo bucle me doy cuenta de que solo tengo 8:

~ # ls -d /dev/loop*
/dev/loop /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3 /dev/loop4 /dev/loop5 /dev/loop6 /dev/loop7

¿Solución?

Pedirle al kernel que genere unos cuantos mas, pasándole la opción max_loop al kernel durante el inicio editando para esto el menú de grub:

title Gentoo Linux 2.6.28-r5
root (hd1,0)
kernel /boot/kernel root=/dev/sdb3 panic=10 max_loop=16

Con eso tengo para un tiempito mas antes de que se me acaben de nuevo.

Por cierto, si a alguien pudiera interesarle como bootear Ubuntu 10.04 por la red usando PXE, mi entrada en el menu.lst de Grub dice:

title Ubuntu 10.04
kernel /ubuntu1004/vmlinuz file=/ubuntu1004/ubuntu.seed boot=casper netboot=nfs nfsroot=192.168.0.12:/mnt/ubuntu10 nox locale=es_ES bootkbd=es console-setup/layoutcode=es quiet splash —
initrd=/ubuntu1004/initrd.lz