Buscar en este blog

jueves, 23 de febrero de 2012

La Aventura de Linux From Scratch


Linux From Scratch (LFS) es un proyecto en donde teniendo el código fuente de los paquetes básicos de un sistema Linux, uno es capaz de compilarlos utilizando un host con Linux, previamente instalado. Ésto, con la finalidad de aprender la forma en que trabaja un sistema Linux. En la página oficial
http://www.linuxfromscratch.org/
Está toda la información. Lo que nos interesa saber es que existe un manual y un LiveCD que es la alternativa más facil para iniciar.


La versión del liveCD que estoy utilizando es:
lfslivecd-x86-6.3-r2130.iso

Y el manual en español:
Linux From Scratch Versión 6.3
 
Quiero compartir la experiencia de instalar LFS con ustedes y por supuesto, dejar constancia de algunos errores que son errores de novato, pero que a más de alguien pueden ayudar.


Algunos tips antes de empezar:
- Descarguen el livecd que trae todos los archivos fuente, asi no se preocupan nada por eso.
- Si usan una máquina virtual, con 10 GB de disco duro tienen más que suficiente, Con 1GB de RAM y 1 GB de SWAP no van a encontrar problemas. Y si tienen la disponibilidad, asignenle todos los nucleos de su procesador que puedan, asi van a obtener un buen rendimiento y van a compilar los paquetes en menos tiempo.
- TOMEN SNAPSHOTS. Si es posible tomen un snapshot antes de cada paso de la preparación de la máquina y antes de compilar cada paquete. Es un poco más de trabajo, pero vale la pena. Asi no van a tener que reiniciar todo el trabajo cuando haya un error grande.

Empecemos a revisar los errores:

El primer problema que me encontré fue un problema de virtualBox. En con respecto a las versiones actuales (4.1.8 o similar), y es que al asignar más de 1 GB de memoria RAM a la máquina virtual, al momento de utilizarla, salta un error diciendo que el host se está quedando sin memoria RAM, aunque ésto no sea cierto.
Éste error también sucede cuando se intentan correr muchas máquinas virtuales al mismo tiempo.
¿La solución?
Encontrar un punto en donde la memoria asignada a la máquina virtual no haga que se produzca el error. En mi caso fue 1GB.



Después de preparar la máquina (crear las particiones, formatear, asignar la swap, crear el usuario, configurar el environment, etc.). Creé el directorio para la construcción de binutils, me cambié a éste y cuando quise configurarlo para la compilación me encontraba con un error. Decía que no podía encontrar un directorio. ¿Por qué? No había desempaquetado el paquete de binutils xD
¿La solución? El manual de LFS asume que ustedes ya desempaquetaron los archivos fuentes y se encuentran en el directorio actual del paquete.
Ejecutar los comandos:
tar -xjf binutils-2.17.tar.bz2
cd binutils-2.17 

Despues de eso, pueden ejecutar el comando para configurar y todo lo demás.

Recuerden eliminar la carpeta con los archivos fuente y el de la construcción de cada paquete después de haber compilado éste, a menos que se especifique que no lo hagan. Ésto es para evitar errores en los pasos posteriores.

Para desempaquetar un archivo .tar.bz2 utilicen el comando:
tar -xjf nombreDelPaquete.tar.bz2
Para desempaquetar un archivo .tar.gz utilicen el comando:
tar -xzf nombreDelPaquete.tar.gz
Cada uno les va a crear una carpeta con el mismo nombre del paquete, en donde se ubicará todo el contenido de éste.

Para eliminar una carpeta con los archivos fuente, después de su compilación utilicen el comando:
rm -rf nombreDeLaCarpeta
Así, eliminan la carpeta recursivamente (todas las subcarpetas) y no les pide confirmación para eliminar algunos archivos que están protegidos.


Después de binutils, en el punto 5.4. "GCC-4.1.2 - Pass 1", después de desempaquetar, crear directorios y preparar gcc para la compilación, toca el comando
make bootstrap
Pero éste me decia que bootstrap no era un parámetro admitido. Al parecer, cuando se recomienda crear una carpeta aparte para la construcción es necesario seguir éste orden antes de compilar un paquete, o sino no hará bien algunos enlaces:
  1. Desempaquetar el archivo.
  2. Cambiarse a la carpeta en donde desempaquetó.
  3. Desde adentro de la carpeta, crear la carpeta para la construcción.
  4. Cambiarse a la carpeta para la construcción.
Es decir:
  1. tar -xjf nombreDelPaquete.tar.bz2
  2. cd nombreDelPaquete
  3. mkdir -v ../nombreDelPaquete-build
  4. cd ../nombreDelPaquete-build

Al llegar al punto 5.7. "Adjusting the Toolchain" al ingresar el comando
gcc -dumpspecs | sed 's@^/lib/ld-linux.so.2@/tools&@g' \
> `dirname $(gcc -print-libgcc-file-name)`/specs
El error era que no encontraba el archivo specs.
¿Por qué?
En esta parte dice que es recomendable que se haga copy-paste del comando, y ahora entiendo por qué. El caracter ">" que está al inicio de la segunda línea no es el que la consola muestra. Se debe ingresar el comando tal y como está, incluyendo el signo de mayor ">" y podremos proseguir con la instalación.




No hay comentarios:

Publicar un comentario