Linux From Scratch

Linux From Scratch: Empezando una aventura.

Voy a empezar el primer post de este blog con una de las cosas que siempre he querido hacer. Desde hace tiempo, linux es mi pasión. No voy a hablar aquí sobre sus características, sus bondades o sus defectos, que también los tiene, porque no es el objetivo de este post y quien quiera puede conseguir esa información facilmente en multitud de sitios. En lugar de eso, voy a ir directamente al grano. Lo que pretendo con la serie de posts que comienzo hoy es instalar un Linux From Scratch y contaros mi experiencia a todos los que la queráis leer.

¿Qué es Linux From Scratch?

Linux From Scratch es una forma de instalar Linux desde cero partiendo del código fuente de todos los programas necesarios. Compilándolos, configurándolos e instalándolos. Esto incluye todos y cada uno de los componentes de una distribución linux completa: kernel, herramientas de GNU, programas adicionales, sistema gráfico, todo.

Aunque algunos lo consideran así, yo no veo a Linux From Scratch como una distribución. No hay una ISO de Linux From Scratch que te puedas descargar para instalarlo. El único requisito necesario para instalar Linux From Scratch es disponer de una serie de herramientas básicas con las que lanzar los comandos necesarios. Se puede hacer desde cualquier sistema UNIX-like que tengamos instalado como por ejemplo, otro linux.

Para quien no tenga a su disposición ninguna manera de lanzar estos comandos, Linux From Scratch permite descargar un LiveCD con las herramientas necesarias. Sin embargo, ese LiveCD no es Linux From Scratch. Linux From Scratch es en realidad un libro con todas las instrucciones necesarias para hacer la instalación completa paquete por paquete. Yo no utilizaré ese LiveCD para nada, voy a realizar la instalación desde mi ArchLinux.

¿Qué ventajas tengo al usar Linux From Scratch?

Esta es la pregunta que muchos suelen hacerse. Para mí no es la pregunta correcta. Primero porque no veo a Linux From Scratch como un sistema para usar habitualmente ni es lo que pretendo. Para mí, instalar Linux From Scratch es una forma de aprender. Conocer cómo funciona mi sistema operativo. Saber cómo es y cómo se hace una distribución de linux. Cómo personalizarlo todo y hacer que el sistema entero se comporte como yo quiero. Cómo se relacionan los programas entre sí. Qué más cosas existen que yo no conozca…

Creo que son razones bastante poderosas para cualquiera que esté interesado en el tema. No tiene sentido pretender que la gente use habitualmente un sistema como Linux From Scratch. Mantener un sistema como ese actualizado día a día llevaría demasiado tiempo y no mantenerlo implicaría usar un equipo que, con el tiempo, se llenaría de fallos de seguridad no parcheados y sería un riesgo de seguridad. Entiendo que la gente quiere usar algo que les permita realizar el trabajo que les interesa sin tener que dedicar media vida a mantenerlo, pero Linux From Scratch es una forma estupenda de aprender.

Manos a la obra

Lo primero que hay que hacer es leer, informarse bien y comprobar los prerequisitos. Entre ellos están las versiones de los paquetes que tengo que tener instalados en mi máquina para poder hacer la compilación. Usar ArchLinux es una ventaja respecto a esto. Al ser una distro que permite compilar fácilmente paquetes desde el AUR, es normal tener ya instalados los paquetes necesarios para realizar compilaciones. Según el libro de Linux From Scratch, los paquetes que tengo que tener instalados, con sus correspondientes versiones son los siguientes:

Bash-3.2
Binutils-2.17
Bison-2.3
Bzip2-1.0.4
Coreutils-6.9
Diffutils-2.8.1
Findutils-4.2.31
Gawk-3.1.5
Gcc-4.1.2
Glibc-2.5.1
Grep-2.5.1a
Gzip-1.3.12
Linux Kernel-2.6.25
M4-1.4.10
Make-3.81
Patch-2.5.4
Perl-5.8.8
Sed-4.1.5
Tar-1.18
Texinfo-4.9
Xz-5.0.0

Así que voy a comprobar las versiones que tengo instaladas. En arch sería así:

[~]$ pacman -Q bash binutils bison bzip2 coreutils diffutils findutils gawk gcc glibc grep gzip linux m4 make patch perl sed tar texinfo xz
bash 4.2.039-1
binutils 2.23.1-1
bison 2.6.5-1
bzip2 1.0.6-4
coreutils 8.20-1
diffutils 3.2-1
findutils 4.4.2-4
gawk 4.0.1-1
gcc 4.7.2-2
glibc 2.16.0-5
grep 2.14-1
gzip 1.5-1
linux 3.6.9-1
m4 1.4.16-2
make 3.82-5
patch 2.7.1-1
perl 5.16.2-1
sed 4.2.1-4
tar 1.26-2
texinfo 4.13a-7
xz 5.0.4-1

Parece que las versiones son suficientes para hacer la instalación. Sin embargo, en el libro aparecen más condiciones. Algunos ejecutables tienen que ser enlaces a ciertos ficheros. Por suerte, en el libro también hay un script que muestra la información necesaria para comprobar todo esto fácilmente. Incluso hace una pequeña prueba de compilación con el gcc. Parece buena idea usarlo, así que lanzo el script y la salida que obtengo es esta:

bash, version 4.2.39(2)-release
/bin/sh -> /bin/bash
Binutils: (GNU Binutils) 2.23.1
bison (GNU Bison) 2.6.5
/usr/bin/yacc -> /usr/bin/yacc
bzip2,  Version 1.0.6, 6-Sept-2010.
Coreutils:  8.20
diff (GNU diffutils) 3.2
find (GNU findutils) 4.4.2
GNU Awk 4.0.1
/usr/bin/awk -> /usr/bin/gawk
gcc (GCC) 4.7.2
(GNU libc) 2.16
grep (GNU grep) 2.14
gzip 1.5
Linux version 3.6.9-1-ARCH (tobias@T-POWA-LX) (gcc version 4.7.2 (GCC) ) #1 SMP PREEMPT Tue Dec 4 08:04:10 CET 2012
m4 (GNU M4) 1.4.16
GNU Make 3.82
GNU patch 2.7.1
Perl version='5.16.2';
GNU sed version 4.2.1
tar (GNU tar) 1.26
Texinfo: makeinfo (GNU texinfo) 4.13
xz (XZ Utils) 5.0.4
gcc compilation OK

La versión del gcc que tengo es la 4.7.2. Según el libro, las superiores a la 4.7.1 no se recomiendan porque no han sido testeadas. Voy a intentarlo de todos modos. Siempre es buen momento para probar con una versión nueva. 🙂

En cuanto al yacc, según el libro tiene que ser un enlace a bison o un script que lanza bison. Parece que no es un enlace a bison. ¿Tendre que dar media vuelta y huir con el rabo entre las piernas? ¡Eso nunca! 🙂 Vamos a ver si es un script:

[~]$ file $(which yacc)
/usr/bin/yacc: POSIX shell script, ASCII text executable
[~]$ cat $(which yacc)
#! /bin/sh
exec '/usr/bin/bison' -y "$@"

Parece que sí que es un script que lanza bison. Por ahora todo bien. Cumplo los prerequisitos… o casi. 🙂

EOF

Anuncios

4 pensamientos en “Linux From Scratch: Empezando una aventura.

  1. Damian Rivera

    Muy buena entrada!!!

    Hace tiempo que conosco linux from scratch pero nunca me adentre en el tema,pero creo que es tiempo 😀

    Saludos y gracias muy buena explicacion

    1. hexborg Autor de la entrada

      Muchas gracias a ti por tu comentario. Anímate tu también a instalar Linux From Scratch, que seguro que lo encuentras entretenido. Así compartimos la experiencia. 🙂

  2. Damian Rivera

    Si, se ve divertido pero no tengo una pc potente para compilar,ya que incluso con Gentoo se tarda bastante,pero de todas formas estaré estudiando el tema,ya que como dice, es una forma estupenda de aprender y se aprende bastante solo viendo lo que se usa y investigando un poco mas a fondo cada herramienta, para ponerlo en practica en el futuro 😀

    Seguire wrongshell y lo agrego a mi blogroll

    Saludos 🙂

Los comentarios están cerrados.