Algunas veces, nos encontramos ante la imposibilidad de instalar Debian GNU/Linux desde el instalador oficial, bien porque estamos utilizando una tarjeta inalámbrica de difícil configuración durante el proceso de instalación o bien porque parte del hardware no está correctamente soportado y hagan falta módulos extras para hacerlo funcionar, módulos extras que en ocasiones son inviables de introducir mediante unidades extraíbles.
Este pequeño artículo va dirigido a intentar dar solución a algunos de estos problemas, así como mostraros como funciona el instalador de Debian GNU/Linux por dentro (de modo simplificado). Todos los comandos mostrados hay que ejecutarlos con privilegios de administrador.
1.1. Materiales
Utilizaremos para ello nuevamente entornos chroot, una utilidad muy buena llamada debootstrap (o en su defecto alternativas como cdebootstrap, rpmstrap, etc.) y un livecd (ubuntu, knoppix o cualquiera que esté basado en Debian y que sea medianamente completo).
La primera parte de la instalación será prácticamente igual que lo que ya expliqué en el artículo para construirnos nuestro propio blog, solo que aquí daré algunos detalles extras ya que nuestro sistema se tendrá que comportar como un sistema físico principal.
1.2. Entorno.
Lo primero de todo es conocer nuestro entorno (que vamos a hacer y donde lo vamos a hacer). Yo voy a explicar como hacer la instalación en un sistema cuyo disco duro (hda) está totalmente vacío (el hacer sistemas duales no es complicado, pero requiere un poco de habilidad con grub y con el tema de particionamiento). Será un disco duro de 18Gb (útiles) que particionaré según la siguiente estructura:
* Esta última partición es opcional. Yo la utilizaré como un pequeño almacén para realizar salvados del sistema.
El tema de particionamiento es muy personal, usa la utilidad que te haga el trabajo más cómodo. Por sugerirte algunas herramientas buenas, gparted, cfdisk, fdisk, qtparted...
NOTA: Puedes hacer todas las particiones que quieras, pero asegúrate más tarde
de montarlas todas donde corresponda.
1.3. Montando las particiones.
Para poder continuar, deberemos montar las particiones que hemos creado en el apartado anterior. En este caso, vamos a necesitar montar solo /dev/hda1 puesto que la swap no nos va a hacer falta. Aún así, tenemos la posibilidad de activarla para nuestro livecd si andamos algo escasos de memoria ram, ejecutamos:
swapon /dev/hda5
Para montar /dev/hda1, simplemente ejecutamos como root:
mount /dev/hda1 /media/hda1
Si no falla nada, ya podemos pasar al siguiente paso.
2. Uso de debootstrap
Como comenté anteriormente, este documento irá dirigido a explicar como instalar Debian GNU/Linux utilizando debootstrap. Esta utilidad es utilizado para muchos labores, desde una instalación típica con los cds/dvds de Debian, para la creación de jaulas chroot como la que utilizamos en el artículo sobre la creación de un blog y para la generación de sistemas live.
Lo primero que tenemos que hacer es asegurarnos de que tenemos instalado debootstrap. Ejecutamos para ello debootstrap a secas:
debootstrap
El resultado debería ser algo como:
I: usage: [OPTION]... [ []]
I: Try `debootstrap --help' for more information.
E: You must specify a suite and a target.
Si no te aparece un mensaje similar a éste, significa que te toca instalar debootstrap a mano. Este paso es relativamente sencillo en sistemas basados en Debian:
apt-get update
apt-get install debootstrap
Vamos a explicar de manera breve las principales opciones de debootstrap. La sintaxis de este comando es bastante intuitiva:
debootstrap $DISTRO $MONTAJE $MIRROR
El parámetro DISTRO se refiere a la versión de Debian o Ubuntu que deseas instalar. En este caso vamos a escoger Debian Lenny, pero sientete libre de experimentar. La opción MONTAJE hace referencia al punto de montaje o directorio donde queremos instalar nuestra distro, en este caso /media/hda1. MIRROR es la última opción y se refiere al repositorio o espejo (mirror en inglés).
Algunas opciones extras (se colocan justo antes de $DISTRO) son:
--arch ARCH (selecciona la arquitectura ARCH, se sutituye normalmente por i386 o amd64)
--download-only (solo descarga los paquetes, no los instala)
--keep-debootstrap-dir (no borra el directorio debootstrap generado durante la descarga de paquetes).
--unpack-tarball FILE (en vez de descargar los paquetes, los obtiene de un archivo tar, en este caso FILE)
En nuestro caso particular, vamos a instalar debian lenny para una arquitectura i386, esto es:
Empezará entonces la descarga e instalación de paquetes base, que puede llevar más o menos tiempo dependiendo de la maquina en cuestión y de la conexión disponible, por lo que tendremos que tener paciencia. Una vez que acabe, podemos pasar al siguiente paso.
3. Instalación del sistema base.
Montamos el directorio /dev en /media/hda1/dev para que si algún programa intenta acceder a algún dispositivo físico del sistema no nos de problemas. Esto es:
mount -o bind /dev /media/hda1/dev
Copiamos algunos ficheros importantes:
cp -a /etc/resolv.conf /media/hda1/etc/
cp -a /etc/adjtime /media/hda1/etc/
cp -a /etc/apt/sources.list /media/hda1/etc/apt/ (esta última es opcional, la alternativa -recomendada- es editar ese sources.list de la jaula a mano, adaptándolo a nuestras necesidades).
Este es el momento de meternos en la jaula:
chroot /media/hda1
También resulta muy recomendable montar proc y sys (este último tiene menor importancia, pero si lo montamos mejor):
mount proc
mount sys
Ahora que tenemos montados los directorios principales y estamos dentro de la jaula chroot, tenemos que configurar todo lo que ya tenemos instalado. Para ello, ejecutaremos:
dpkg-reconfigure -a
Ello nos permitirá meterle una contraseña a root, decidir si queremos contraseñas shadow o no, etc.
A continuación, deberemos instalar un kernel, grub y algún sistema de reconocimiento de hardware. Esto es:
Este será el momento de añadir los usuarios que quieras o configurar cualquier aspecto que desees de tu distribución.
Con esto ya tendríamos un sistema Debian GNU/Linux mínimo pero funcional. Se nos abren en este momento dos alternativas:
A) Configurar grub y arrancar nuestro sistema para seguir instalando paquetes desde allí (Recomendado)
B) Seguir instalando paquetes y dejar la configuración de grub para el final.
Yo voy a proceder siguiendo el camino A por varias razones, entre las que destaco que de este modo nos resultará más cómodo instalar lo que queda a nuestra distribución sin tener que estar lidiando con sistemas chroot.
Nuevamente, siéntete libre de tomar el camino B, que es igualmente válido. Para ello, instala en este momento los paquetes que desees y a continuación, ya estarás en condiciones de pasar al punto 4.
NOTA: Si estas utilizando una tarjeta inalámbrica que requiera módulos especiales (madwifi, ipw, ndiswrapper, etc) te recomiendo encarecidamente instalar dichos módulos (o compilarlos) junto con las herramientas necesarias (wireless-tools en particular) dentro de la jaula chroot antes de proseguir para que cuando reinicies la máquina con tu nuevo sistema tengas conexión a internet y por tanto puedas continuar con la instalación de paquetes.
4. Instalar y configurar grub.
Lo primero de todo es generar el menu.lst, ejecutando:
update-grub
NOTA: Edita manualmente el archivo /boot/grub/menu.lst si fuera necesario para arrancar tu sistema Debian
(ejemplo, si necesitas desactivar desde grub el soporte para usb, pci, acpi, etc).
A continuación, desmontamos proc sys y /dev de la jaula.
umount proc
umount sys
Salimos de la jaula
exit
Desmontamos /dev (ojo, el de la jaula)
umount /media/hda1/dev
A partir de ahora trabajaremos desde fuera de la jaula.
NOTA: Si fallara el desmontado de proc, sys o dev, intenta nuevamente desmontarlos, pero con la opción -l
La instalación y configuración de grub es casi el paso más importante del proceso instalación. Tiene sus riesgos si no posees suficiente experiencia con sistemas GNU/Linux, por lo que ten cuidado y en todo momento asegúrate de saber y entender todo aquello que vas a ejecutar.
En el paso 3 ya instalamos el paquete grub en nuestro Debian GNU/Linux, por lo que ahora lo único que tenemos que hacer es instalar grub en el mbr.
Si todo ha ido bien, ya tendremos instalado Debian GNU/Linux (Lenny) en nuestro disco duro hda. Lo siguiente sería reiniciar nuestra maquina, arrancar con nuestro nuevo sistema y configurar todo a nuestro gusto, instalando un escritorio si así lo viésemos necesario. Por ejemplo:
Para iniciar las X en este momento, bastará con ejecutar:
/etc/init.d/kdm start (kde)
/etc/init.d/gdm start (gnome y xfce).
Eso ha sido todo. Espero que este pequeño artículo les haya sido de utilidad.
5. Notas finales.
Me gustaría destacar que esta guía puede contener (y seguramente contenga) algunos errores. No me hago responsable de ningún problema derivado de utilizarla.
Un detalle. Antes de reiniciar la maquina para arrancar con
vuestro Debian, tendreis que configurar el archivo /etc/fstab
para indicar cual será la partición root, la swap y en este
caso, la partición de "almacen".
En el caso que planteo en el artículo, debería quedar tal que
así:
Enhorabuena, minaya por el artículo y gracias por haberme descubierto herramientas como debootstrap y chroot y sus posibilidades.
Una consulta, cuando estas dentro de la jaula, esto es, una vez ejecutado chroot /media/hda1 , el comando dpkg-reconfigure -a creo que si debe funcionar, pero:
aptitude update
aptitude install grub linux-image-2.6-486 busybox udev discover1
tiran de la configuración de la jaula y si no está configurada la red ¿funciona? o chroot sólo cambia la raiz del sistema (/), pero los comandos que ejecutamos cuando estamos dentro son de fuera. No se si me explico. Yo esperaba que el apt-get utilizado fuera el de dentro de la jaula, por lo que utilizaría el sources de la jaula y red configurada en la jaula.
Un saludo y gracias de nuevo, adslinex
---
Sólo hay 10 tipos de personas, las que entienden el binario y las que no.
La jaula chroot es capaz de conectarse al exterior mediante el
propio dispositivo de red físico que tengas disponible (supongo
que algo similar hace cualquier sistema de virtualizacion tipo
virtualbox en modo "compartir interface de red del host"). Es
decir, si haces desde dentro de la jaula chroot un ping a otra
maquina de tu red, recibirás respuesta.
Si además de ello tienes montado proc, podrás incluso hacer
un "ifconfig" y se mostrará la configuración de todas las tarjetas
de red que tengas configuradas en la maquina física tal y como si
lo hicieras desde fuera de la jaula.
Sin embargo, esto es en cuanto a las conexiones internas (las de
dentro de tu red local). Para salir a internet necesitas algo más, y
aquí es donde entra el copiar el "resolv.conf" que tienes fuera de
la máquina al directorio que corresponda dentro de ella. Con
esto asumo que tú fuera de la máquina tienes conexión a
internet. Es decir, que las dns están correctamente configuradas
(normalmente cuando tienes servidores dhcp en tu red
(usualmente routers adsl), estos se encargan de pasarte esas
dns, con lo que el livecd debería poder configurar la red de forma
automática).
Todo ello permite que el uso de jaulas chroot tenga utilidades
muy variadas en la actualidad, desde montar servidores a los
que queremos de alguna forma restringir el acceso o aislar de
nuestra maquina para aumentar la seguridad, hasta realizar
autenticas maravillas como se comenta en la guía de referencia
de Debian, y es que tu puedes montar por ejemplo un "Ubuntu"
dentro de una "Debian", definir que para la tty8 tengas abierta
una sesión X de ubuntu (con su gnome, su reproductor de musica,
su navegador web, etc.), mientras que en la tty7 tengas
tu "Debian" de uso normal, en la que estas haciendo un trabajo
con OpenOffice y Octave.
Enfín, que las posibilidades de las jaulas chroot son casi
ilimitadas.
Adslinex:
Cuando ejecutas debootstrap, este se encarga de instalarte las
herramientas básicas que pudieras encontrar en cualquier
Debian actual, entre ellas apt-get, dpkg y cualquier otra
aplicación que te instale el debian-installer en una instalación
mínima. Como he comentado, la configuración de la red en la
mayoria de sistemas debería resultar casi trivial (simplemente
copiar el resolv.conf) por lo que el "apt" o "aptitude" que uses
dentro de la jaula debería poder conectarse a internet sin mayor
problema.
Un saludo, y gracias a vosotros por leerlo y comentar ;)
---
No es más rico el que más tiene sino el que menos necesita.
Muy buen articulo ;-)
---
La seguridad es solo un estado mental.
Entre la satisfacción y la total decepción hay solo una acción.
Solo se que se todo lo que no se