Solucionando la falta de Debian
Almacenado bajo: CategoryBlogPost |
Este era un post que tenía pendiente por hacer. Debido a que recientemente estoy sin computador propio... bueno, si tengo uno, pero es una reliquia de museo que corre bien con xfce o icewm (incluso mejor a punta de VC's), pero su conectividad dependía de tirar un cable Ethernet que atravesara la casa de extremo a extremo (o de ponerle una tarjeta wifi, tirar cable de extremo a extremo de la casa, poner el wok de la cocina y así nos quedamos sin paella XD ). Además extrañaba echarme unas partidas de torcs , wesnoth, flighgear y vegastrike. Bueno, pues tengo disponible un laptop mas o menos reciente (y con tarjeta gráfica ATI, asi que hay aceleración para los jueguitos), pero con una pega: no podía formatearlo (no me dejan borrarle el xp que tiene allí) y no hay espacio libre para reparticionar (depronto con una Damn Small Linux pero entonces no podría correr ni el scilab que necesito por estos días). Afortunadamente si tenía un disco duro USB (tenía el mio propio, pero ahí van mis copias de seguridad, asi que ese disco quedará virgen de OS mientras funcione como backup) pero, que de malas! el laptop no puede arrancar desde USB! :_( Ya estaba a punto de tirar la toalla pero se me ocurrió que sí que podía funcionar, así que voy a describir cómo hice para hacer funcionar Debian Etch en un disco USB, sin usar arranque por USB:
- Hay un detalle con Linux y es que un disco duro será un disco duro independiente del hardware que sea (IDE, USB, Memoria, Medios remotos en red, lo que sea que almacene información). Bueno, eso ya seguramente que ya lo sabían (que para eso hay terminales sin disco duro y demás cosas), pero lo que quiero decir es que, si es disco duro, es instalable cualquier distribución de Linux. Supongo que para otros núcleos *nix es igual (Hurd, solaris, los BSD's) pero no los he probado como para afirmarlo completamente. Asi que Debian se instala en un disco USB sin ningún problema, solo tienes que decirle donde instalar (en este caso mi disco USB es /dev/sda) y como si nada.
- Bueno, ahora el problema es arrancar nuestro Debian en USB, pero no tenemos ayuda de la bios de la laptop para esto. Asi que hay que recurrir a otros medios para arrancar. Podemos tener un diskette de arranque, pero es que ya están obsoletos :). Un CD de arranque también serviría, pero donde estoy no pienso darme el lujo de comprarme CDs vírgenes por esto del canon. En cambio ví dos soluciones:
Método kexec: kexec se puede resumir como la forma de cargar un kernel en el lugar del kernel que está corriendo. Mejor dicho: un reboot sin pasar por la bios. Usando kexec puedo cargar el kernel de Debian y decirle que la partición raíz es mi disco USB
# kexec -l /media/sda6/boot/vmlinuz-2.6.17-2-686 --command-line="root=root=/dev/sda6 ro" --initrd=/media/sda6/boot/initrd.img-2.6.17-2-686 # kexec -e
- Para usar kexec necesito: un linux corriendo (por ejemplo en un live cd), que este linux tenga soporte en el kernel para kexec y la herramienta propiamente dicha kexec. Con un knoppix 5 se puede hacer esto. La pega de esto es el necesitar de una distro live para poder funcionar.
Usar el disco duro del laptop como arranque: no tengo espacio para reparticionar pero sí tengo al menos 6MB para copiar el kernel, el initrd y un gestor de arranque. Bien, no puedo volar el arranque del xp, pero sí que lo puedo usar. Para esto uso Grub4dos. En resumen este proyecto es un Grub pero con soporte para particiones FAT y NTFS, con todas las funcionalidades de Grub. Es capaz de ser ejecutado por NTLDR, lo cual hace que haga solo un pequeño cambio en el arranque del xp, que me muestre un menú que lanze grub4dos, y éste me hace la labor de arrancar Debian desde el disco USB, usando el kernel y el initrd que previamente tuve que copiar en el disco del xp. En el xp pongo esto en el boot.ini
[boot loader] timeout=10 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="el XP" /noexecute=optin /fastdetect c:\grldr="Debian GNU/Linux Etch desde disco USB"
- Luego debo tener en el disco del laptop el kernel, el initrd, el gestor de arranque de grub4dos "grldr", y un menu.lst para éste. El menu.lst tiene la misma sintaxis que grub:
color black/cyan yellow/cyan timeout 0 default /default title Debian GNU/Linux en USB (kernel local) root (hd0,0) kernel (hd0,0)/vmlinuz root=/dev/sda6 ro initrd (hd0,0)/initrd boot
- Pega de esto? pues que reinstalar un kernel significa copiarlo al disco del laptop en la partición del xp, y eso me da mala espina (que por ahí se pueden colar malware cuando estén usando el xp). Estoy pensando en cómo hacer para mirar ese caso, de pronto que al arranque haga una comprobación por hash o algo así. Ya lo documentaré cuando lo haga.
He encontrado también un proyecto que se llama kboot, que es un gestor de arranque basado en kexec, pero no lo he probado aún. Sin embargo creo que sería una buena solución para arrancar directamente con un kernel dentro del mismo disco USB, dado que puede usar las capacidades de linux para usar un disco USB.
Esta fué mi solución para poder trabajar a gusto con Debian y satisfacer mi adicción a la espiral (ya me estaba dando síndrome de abstinencia...). Aún así hay un problema que hay que solucionar: también quise probar si mi recién instalado debian podría correr en cualquier máquina, por ejemplo un desktop que me prestaron un día. Hubo un problema y es que en dicho desktop, linux identificaba mi disco USB como /dev/sdb (es que tenía un disco sata, así que ese fué el que se llamó sda), así que el arranque falló completamente. Una vez cambio todas las referencias de sda a sdb funcionaba perfectamente, pero eso implicaba que tenía que revertir el cambio para poder arrancar en el laptop. Para solucionar el problema debo decirle al kernel que mi disco USB en particular debe tener un nombre fijo, que aún no se cómo hacerlo; y modificar el daemon de udev para que también le dé un nombre fijo, y esto se hace con las reglas del udev. En un próximo post les contaré cómo me fué con esto, pero por ahora puedo decir... Debian rules!!!
Links de interés
Más arriba hice una minilista de los juegos que más me gustan (y más me envician) para linux y con licencia GPL. Tengan en cuenta que, excepto wesnoth, son juegos que necesitan aceleradora gráfica y un computador poderoso, flightgear y vegastrike son dos juegos que son muuuuy exigentes en hardware, pero vale la pena por su calidad. Además están los links de los proyectos y demás información que encontré para esto.
