Linux From Scratch XXXVIII: Resumen y conclusiones

En el anterior artículo ha quedado instalado todo lo básico de un sistema Linux From Scratch. De aquí en adelante vamos a empezar con el libro Beyond Linux From Scratch y la filosofía de los artículos cambiará completamente, pero antes de empezar quiero hacer un pequeño resumen de todo lo que hemos hecho y mostrar las conclusiones que he sacado de ello.

¿Cómo hemos hecho la instalación?

Hemos partido del sistema temporal creado en el capítulo anterior del libro. Lo primero que hemos hecho es montar un chroot que nos ha permitido trabajar desde nuestra distro en el sistema LFS que estamos generando. Para ello hemos creado los ficheros y directorios más básicos necesarios para que los programas funcionen. Prácticamente toda la instalación la hemos hecho desde ese chroot.

El primer paso que hemos dado en el chroot ha sido crear el esqueleto del sistema de ficheros con algunos ficheros de configuración necesarios. Los directorios que hemos creado han sido los que están recogidos en el estándar FHS con cuidado de poner los permisos correctos. después hemos creado el mtab, el passwd, el group y algunos ficheros de log.

Lo siguiente que hemos hecho ha sido crear un par de scripts para hacer gestión de paquetes usando el sistema de ficheros aufs, que nos permite separar los ficheros que vamos instalando en cada paquete y generar con ellos un archivo comprimido por cada uno de esos paquetes.

Una vez hecho esto, el proceso ha sido básicamente instalar cada paquete según las instrucciones del libro y creando algunos ficheros de configuración cuando era necesario.

Algunos puntos destacados

Me ha gustado especialmente escribir el artículo sobre compilación del kernel. Creo que es una buena guía sobre las opciones de compilación del kernel que me será útil en más de una ocasión. La mayoría de los artículos sobre compilación del kernel que se encuentran por internet explican los comandos a usar, pero no se meten en las opciones de menuconfig. Me ha parecido útil enfocarlo desde este punto de vista.

A la hora de instalar el gestor de arranque sí que hubo algunos problemas. Me ha costado trabajo configurar GRUB y he acabado recurriendo a Syslinux, aunque al final han funcionado los dos. Para arrancar desde USB he tenido que crear un initrd, ya que era la única forma de que el kernel reconozca los dispositivos USB durante el arranque.

Para crear el initrd he usado busybox. Compilar busybox ha sido muy similar a compilar el kernel, aunque no tan complejo ni tan largo. Es una buena herramienta para crear un initrd o un sistema embebido. Trae versiones básicas de todos los comando de linux en un solo paquete y permite montar rápidamente un entorno linux con los comandos básicos ocupando muy poco espacio.

Resumen de paquetes

Al igual que hice cuando terminé el sistema temporal, voy a poner aquí una pequeña descripción de los paquetes que hemos compilado hasta ahora. Omitiré los que ya hemos visto en el artículo correspondiente sobre el sistema temporal, ya que no hay nada nuevo que decir sobre ellos.

Man-pages

Se trata de las páginas del manual que podemos consultar con el comando man. Están las páginas correspondientes a los comandos y ficheros más básicos.

Zlib-1.2.7

Este paquete contiene librerías con funciones de compresión y descompresión que muchos programas usan.

GMP-5.0.5

El paquete GMP contiene librerías matemáticas para hacer cálculos aritméticos de precisión arbitraria.

MPFR-3.1.1

MPFR es una librería de cálculos matemáticos con números en coma flotante de precisión arbitraria que hace especial hincapié en que los resultados estén correctamente redondeados. Utiliza GMP para funcionar.

MPC-1.0

Otra librería de matemáticas. Esta vez para hacer cálculos de precisión arbitraria con números complejos. El compilador gcc utiliza estas tres últimas librerías.

Pkg-config-0.27

Este paquete contiene una utilidad que determina las opciones correctas para el compilador y el linkador a la hora de usar una librería. Es una buena ayuda para compilar un programa de forma portable sin tener que especificar en qué ruta están todas las librerías que usa.

Util-linux-2.21.2

Contiene un conjunto variado de utilidades. Aquí podemos encontrar un poco de todo. La cantidad de programas es bastante numerosa como para poder decir algo aquí. Si tenéis curiosidad, es mejor que miréis en la página de Linux From Scratch.

Psmisc-22.19

Este paquete contiene algunas utilidades para obtener información sobre los procesos que están en ejecución más allá de un simple ps. Contiene los comandos fuser, killall, peekfd, prtstat, pstree y pstree.x11.

E2fsprogs-1.42.5

Contiene comandos para trabajar con los sistemas de ficheros ext2, ext3 y ext4. Aquí hay cosas como mkfs, fsck, tune2fs, resize2fs, chattr, lsattr y otros muchos.

Shadow-4.1.5.1

Aquí están las utilidades de gestión de cuentas de usuarios y grupos que utilizan los ficheros shadow y gshadow para almacenar las contraseñas de forma que ni siquiera las hashes estén a la vista de los usuarios sin privilegios. De esta manera, se mejora la seguridad.

Iana-Etc-2.30

Contiene los ficheros /etc/services y /etc/protocols con las listas de puertos y protocolos usados para servicios comunes y no tan comunes. Consultando estos ficheros se puede saber cuál es el puerto de FTP, el de SSH, etc.

Bison-2.6.2

Es una herramienta para generar analizadores sintácticos que después podemos usar en nuestros propios programas. Se usa, por ejemplo, para hacer compiladores e interpretes.

Procps-3.2.8

Es un conjunto de utilidades para trabajar con los procesos que están en ejecución en nuestro sistema. Permite verlos, matarlos, cambiarles la prioridad, etc. Contiene utilidades como ps, kill, top, pgrep, pkill, etc. También están aquí free, uptime y otras cosas interesantes.

Readline-6.2

Esta es la librería que usan algunos programas, como bash, para leer los comandos del usuario desde la terminal.

Libtool-2.4.2

Libtool es una herramienta de programación que facilita la creación de librerías dinámicas portables. Muy útil si estamos programando una librería que queramos poder usar en varias plataformas diferentes.

GDBM-1.10

Es una pequeña base de datos que permite almacenar pares (clave, valor) indexados por clave. La usan algunos programas que necesitan almacenar ese tipo de datos.

Inetutils-1.9.1

Este paquete contiene algunas utilidades de red básicas como ping, telnet, ftp. Muchos programas de este paquete han quedado obsoletos por inseguros, como telnet, rlogin, rexec, etc.

Autoconf-2.69

Contiene las utilidades de programación que permiten crear el script configure que configura el código fuente de un programa para poder compilarlo de forma portable. Contiene cosas como autoconf, autoheader, autoscan, etc.

Automake-1.12.3

Este paquete complementa al anterior. Es el que tiene las herramientas que generan los ficheros que autoconf necesita para generar a su vez los Makefile que compilan el programa.

Flex-2.5.37

Flex es un programa para generar analizadores léxicos. Complementa muy bien a bison y también se usa para hacer compiladores e interpretes.

Groff-1.21

Este paquete contiene utilidades para formatear documentos en formato troff. Lo usa, por ejemplo, man para mostrar las páginas del manual.

GRUB-2.00

Poco se puede decir de GRUB que no sepa ya todo el mundo. Es el gestor de arranque que se usa últimamente en casi todas las distros de linux e incluso en otros sistemas operativos libres aunque no lleven el kernel de linux.

Less-444

Less es un visor de texto simple pero efectivo, útil y completo. Seguro que lo hemos usado muchas veces. Además, man lo usa por defecto para mostrar las páginas formateadas.

IPRoute2-3.5.1

Contiene la utilidad ip y algunas asociadas a ella para configurar los interfaces de red.

Kbd-1.15.3

Aquí están las utilidades para configurar la consola de texto correspondiente a las terminales virtuales. Permite configurar y obtener información sobre la fuente de consola, el mapeo del teclado, los leds, etc. Hay programas como loadkeys, setfont, setleds, etc.

Kmod-9

Este es el paquete que contiene las utilidades que se usan para cargar y descargar los módulos del kernel. Cosas como lsmod, modprobe, insmod, rmmod o depmod.

Libpipeline-1.2.1

Libpipeline es una librería que usan algunos programas, como por ejemplo man, para lanzar cadenas de comandos conectados por pipes. Como lo que se puede hacer desde el shell al escribir cosas como “ps | grep proc | less“, pero desde código C.

Man-DB-2.6.2

Este es el visor de páginas del manual que todos conocemos. Además del comando man, contiene algunos programas para hacer búsquedas como apropos y whatis y otras herramientas para actualizar la base de datos de páginas del manual.

Sysklogd-1.5

Contiene los loggers klogd y syslogd que logean los mensajes del kernel y del resto de los programas y los dejan en los correspondientes ficheros de log.

Sysvinit-2.88dsf

Este paquete contiene el proceso init que se lanza después de cargar el kernel y procesa los scripts de arranque para terminar de arrancar la máquina. También tiene utilidades para apagar, reiniciar, etc como halt, poweroff, reboot, shutdown y otras cosas como last, lastb, mesg, pidof

Udev-188 (Extracted from systemd-188)

LFS no usa systemd todavía, pero necesita udev, que está fusionado con systemd, así que este paquete es la versión de udev sacada de systemd. Udev es el programa encargado de crear los ficheros de dispositivo de los dispositivos que se vayan detectando en nuestro sistema.

Vim-7.3

Del vim no hay mucho que decir que no sepa ya todo el mundo. Es un potente editor de texto heredero del vi y que sigue siendo usado hoy en día. Este paquete es opcional, pero el libro lo sugiere y yo lo he instalado. Cada uno puede decidir si instalarlo o usar otro editor.

Conclusiones

La verdad es que instalar un Linux From Scratch siguiendo las instrucciones del libro no me ha parecido complicado en absoluto. Los problemas que he tenido han sido mínimos y se han resuelto con una simple búsqueda en internet. El único prerequisito es no tener miedo a la terminal.

Lo que menos me ha gustado de Linux From Scratch es que no implementa ningún tipo de gestión de paquetes. Por supuesto, al ser un sistema basado en compilarlo todo desde el upstream, las actualizaciones corren de nuestra cuenta y hay que hacerlas de forma manual, pero nunca está de más tener algún gestor de paquetes que nos permita instalar y desinstalar cosas sin que quede basura en el sistema de ficheros.

Respecto a esto, he implementado mi propio sistema de gestión de paquetes, que he terminado convirtiendo en paquetes de pacman, pero el resultado no ha sido del todo satisfactorio debido a la dificultad de determinar las dependencias entre paquetes. Este problema habría sido menor si hubiera comenzado a generar paquetes desde el principio.

Get Counted

Aunque todavía voy a seguir con Beyond Linux From Scratch, el tipo de artículos será diferente. Con este doy por finalizada la serie de LFS, así que es buen momento para registrarnos como usuarios de LFS en la página oficial. No voy a explicar cómo se hace porque es muy sencillo y todo el mundo sabrá hacerlo. Estos son mis datos por si queréis buscarme:

ID: 24423
Name: hexborg
First LFS Version: 7.2

Y por ahora eso es todo. Habrá más artículo sobre LFS, pero ya fuera de esta serie. Gracias a todos los que me habéis seguido hasta aquí y feliz compilación. 🙂

EOF

Anuncios

4 pensamientos en “Linux From Scratch XXXVIII: Resumen y conclusiones

  1. luweeds

    Enhorabuena¡¡¡ La serie para mí tiene mucho valor y la reeleré desde el principio porque algunos posts no los leí en su momento, gracias por compartirlo y dedicarle tu tiempo.

    1. hexborg Autor de la entrada

      Muchas gracias, Luweeds. Espero que te sirva. Estas cosas están bien y siempre se aprende algo nuevo.

      Gracias por pasarte por aquí. 🙂

  2. Amaury

    Buenas tardes, primero que todo se le agradece por tener tiempo en escribir todos los capitulos para formar un sistema lfs ya que eso era lo que buscaba, ahora quisiera preguntarle lo siguiente:

    al momento de tener ya el sistema lfs ya terminado, habra alguna manera de meterlo a una iso e instalarlo en cualquier computadora por medio de Cd?, es que he estado buscando por todos lados y no he visto ningun resultado, espero me pueda ayudar .

    Muchas gracias

    1. hexborg Autor de la entrada

      Hola, Amaury. Gracias por pasarte por aquí.

      Es una pregunta interesante. Estoy seguro de que sí se puede, pero todavía no he investigado cómo. Lo miraré y escribiré un artículo sobre ello. Crear una iso arrancable no creo que sea dificil, pero ya te adelanto que la instalación en otro equipo va a tener que ser manual. Creando las particiones y copiando los ficheros por medio de comandos. Por lo menos no habrá que volver a compilarlo todo si la arquitectura de la máquina es compatible. Lo que sí es posible que haya que recompilar es el kernel, a menos que el hardware sea idéntico.

      Le echaré un vistazo y en cuanto sepa cómo hacerlo escribiré sobre ello.

      Gracias y un saludo.

Los comentarios están cerrados.