Linux desde cero

Tipo de instalación de Linux

Operating system
Linux desde cero
ReveladorGerard Beekmans y otros.
Familia de sistemas operativosSimilar a Unix
Estado de funcionamientoActual
Modelo fuenteCódigo abierto
Lanzamiento inicialDiciembre de 1999 ; hace 24 años (1999-12)
Último lanzamiento12.2 / 1 de septiembre de 2024 [1] [2]
Método de actualizaciónBasado en la fuente
Gestor de paquetesNinguno (basado en la fuente)
PlataformasIA-32 , x86-64 [3]
Tipo de kernelMonolítico

Interfaz de usuario predeterminada
CLI
LicenciaLicencias Creative Commons Principalmente CC BY-NC-SA [4] y Licencia MIT
Sitio web oficialwww.linuxfromscratch.org

Linux From Scratch ( LFS ) es un tipo de instalación de Linux y el nombre de un libro escrito por Gerard Beekmans y, a mayo de 2021, mantenido principalmente por Bruce Dubbs. El libro brinda instrucciones a los lectores sobre cómo construir un sistema Linux desde el código fuente . El libro está disponible de forma gratuita en el sitio Linux From Scratch. [1]

Proyectos bajo el LFS

Linux From Scratch es una forma de instalar un sistema Linux funcional mediante la compilación manual de todos sus componentes. Naturalmente, se trata de un proceso más largo que el de instalar una distribución Linux precompilada . Según el sitio Linux From Scratch , las ventajas de este método son un sistema compacto, flexible y seguro y una mayor comprensión del funcionamiento interno de los sistemas operativos basados ​​en Linux. [5]

Para mantener LFS pequeño y enfocado, se creó el libro Beyond Linux From Scratch (BLFS), que presenta instrucciones sobre cómo desarrollar aún más el sistema Linux básico que se creó en LFS. Presenta y guía al lector a través de las adiciones al sistema, incluido el sistema X Window , entornos de escritorio ( KDE , GNOME , Xfce , LXDE ), software de productividad , navegadores web , lenguajes y herramientas de programación, software multimedia y herramientas de administración de redes y sistemas . Desde la versión 5.0, la versión del libro de BLFS coincide con la versión del libro de LFS. [6]

El libro Cross Linux From Scratch (CLFS) se centra en la compilación cruzada , incluida la compilación para sistemas sin interfaz gráfica o integrados que pueden ejecutar Linux, pero carecen de los recursos necesarios para compilar Linux. CLFS admite una amplia gama de procesadores y aborda técnicas avanzadas que no se incluyen en el libro LFS, como cadenas de herramientas de compilación cruzada, compatibilidad con múltiples bibliotecas ( bibliotecas de 32 y 64 bits una al lado de la otra) y arquitecturas de conjuntos de instrucciones alternativas como Itanium , SPARC , MIPS y Alpha .

El proyecto Linux from Scratch, al igual que BitBake , también admite la compilación cruzada de Linux para sistemas integrados ARM como Raspberry Pi y BeagleBone . [7] [8]

El libro Hardened Linux From Scratch (HLFS) se centra en mejoras de seguridad como parches de kernel reforzados , políticas de control de acceso obligatorias, protección contra la destrucción de la pila y aleatorización del diseño del espacio de direcciones . Además de su propósito principal de crear un sistema operativo centrado en la seguridad , HLFS tenía el objetivo secundario de ser una herramienta de enseñanza de seguridad. No se ha actualizado desde 2011.

Automated Linux From Scratch (ALFS) es un proyecto diseñado para automatizar el proceso de creación de un sistema LFS. Está dirigido a usuarios que han leído los libros LFS y BLFS varias veces y desean reducir la cantidad de trabajo que esto implica. Un objetivo secundario es actuar como una prueba de los libros LFS y BLFS extrayendo y ejecutando instrucciones directamente de las fuentes XML de los libros LFS y BLFS.

Requisitos y procedimiento

Para crear LFS se necesita una partición limpia y un sistema Linux en funcionamiento con un compilador y algunas bibliotecas de software esenciales . En lugar de instalar desde un sistema Linux existente, también se puede utilizar un Live CD para crear un sistema LFS.

El proyecto anteriormente mantenía el Live CD de Linux From Scratch. [9] El Live CD de LFS contiene todos los paquetes fuente (sólo en la versión completa del Live CD), el libro de LFS, herramientas de compilación automatizadas y (excepto en la versión mínima del Live CD) un entorno GUI de Xfce para trabajar. El Live CD oficial de LFS ya no se mantiene y no se puede utilizar para compilar la versión 7 o posterior de LFS. [9] Sin embargo, hay dos compilaciones no oficiales que se pueden utilizar para compilar un kernel y un espacio de usuario de 32 o 64 bits respectivamente para LFS 7.x. [10]

Primero, se debe compilar una cadena de herramientas que consiste en las herramientas utilizadas para compilar LFS, como GCC , glibc , binutils y otras utilidades necesarias. Luego, se debe cambiar el directorio raíz (usando chroot ) a la partición de la cadena de herramientas para comenzar a construir el sistema final. Uno de los primeros paquetes que se compilan es glibc; después de eso, el enlazador de la cadena de herramientas se debe ajustar para enlazar con el glibc recién construido, de modo que todos los demás paquetes que conformarán el sistema terminado también se puedan enlazar con él. Durante la fase chroot , la característica de hash de bash se desactiva y el directorio bin de la cadena de herramientas temporal se mueve al final de PATH. De esta manera, los programas recién compilados aparecen primero en PATH y el nuevo sistema se construye sobre sus propios componentes nuevos.

Lista de paquetes en LFS

ComponenteDescripciónLicencia
ACL (Acceso a la lista negra)Una lista de control de acceso (ACL), con respecto a un sistema de archivos de computadora, es una lista de permisos asociados a un objeto.Licencia Pública General de GNU
AtributoComandos para manipular atributos extendidos del sistema de archivos.Licencia Pública General de GNU
Configuración automáticaHerramienta para producir scripts de configuración para software C , C++ , Fortran , Fortran 77, Erlang , Objective-C en sistemas informáticos tipo Unix .Licencia Pública General de GNU
Marca de automóvilUna herramienta de programación que produce archivos make portátiles para que los utilice el programa make y se utiliza para compilar software.Licencia Pública General de GNU
IntentoUn shell Unix de software libre escrito para el Proyecto GNULicencia Pública General de GNU
antes de Cristobces una calculadora básica (a menudo denominada calculadora de banco), es un "lenguaje de calculadora de precisión arbitraria" con una sintaxis similar al lenguaje de programación C.Licencia Pública General de GNU
Utilidades binariasUna colección de herramientas de programación para la manipulación de código objeto en varios formatos de archivos objeto.Licencia Pública General de GNU
BisonteUn generador de analizadores sintácticos que forma parte del Proyecto GNU . Bison convierte una descripción gramatical para una gramática libre de contexto en código fuente para un analizador sintáctico de C , C++ o Java .Licencia Pública General de GNU
Bzip2Un algoritmo y programa de compresión de datos sin pérdida, gratuito y de código abierto, desarrollado por Julian Seward . Licencia tipo BSD
ControlarUn marco de pruebas unitarias para C.Licencia Pública General de GNU
Utilidades básicasUn paquete de software GNU que contiene muchas de las herramientas básicas, como cat , ls y rm , necesarias para sistemas operativos tipo Unix . Licencia Pública General de GNU
DejaGNUUn marco para probar otros programas. Tiene un script principal llamado runtest que recorre un directorio buscando archivos de configuración y luego ejecuta algunas pruebas con criterios determinados.Licencia Pública General de GNU
DifícilesUna utilidad de comparación de datos que genera las diferencias entre dos archivos.Licencia Pública General de GNU
Programas E2fse2fsprogs (a veces llamados programas e2fs) es un conjunto de utilidades para mantener los sistemas de archivos ext2 , ext3 y ext4 .Licencia Pública General de GNU
ElfutilsUna colección de utilidades y bibliotecas para leer, crear y modificar archivos binarios ELF.GNU GPL y GNU LGPL
EudevUna bifurcación de udev para evitar la dependencia de la arquitectura systemd. La bifurcación resultante se llama eudev y hace que la funcionalidad de udev esté disponible sin systemd .Licencia Pública General de GNU
ExpatriadoUna biblioteca de análisis de XML 1.0 orientada a flujos , escrita en C.Licencia MIT
EsperarExpect es una herramienta de pruebas y automatización de Unix como una extensión del lenguaje de scripting Tcl , para aplicaciones interactivas como telnet , ftp , passwd , fsck , rlogin , tip , ssh y otras.Dominio público
ArchivoEl comando de archivo es un programa estándar de Unix para reconocer el tipo de datos contenidos en un archivo de computadora.Licencia tipo BSD
Buscadores de utilidadesLas utilidades de búsqueda GNU son las utilidades básicas de búsqueda de directorios del sistema operativo GNU.Licencia Pública General de GNU
Doblarflex ( generador de analizador léxico rápido ) es una alternativa de software libre a lex .Licencia BSD
Papar moscasGawk es un lenguaje de programación diseñado para procesar datos basados ​​en texto, ya sea en archivos o flujos de datos.Licencia Pública General de GNU
CCGLa Colección de compiladores GNU (generalmente abreviada como GCC) es un sistema de compilación producido por el Proyecto GNU que admite varios lenguajes de programación.
GDBMMotores de bases de datos simples GDBM
Obtener textoGettext es la biblioteca de internacionalización y localización (i18n) de GNU .
GlibcLa biblioteca C de GNU , comúnmente conocida como glibc, es la biblioteca estándar de C publicada por el Proyecto GNU .
BPFLa biblioteca de precisión múltiple GNU, también conocida como GMP, es una biblioteca gratuita para aritmética de precisión arbitraria , que opera con números enteros con signo , números racionales y números de punto flotante .
GperfUn generador de funciones hash perfecto. Para una lista dada de cadenas, produce una función hash y una tabla hash, en forma de código C o C++ , para buscar un valor en función de la cadena de entrada. La función hash es perfecta, lo que significa que la tabla hash no tiene colisiones y la búsqueda en la tabla hash solo necesita una comparación de una sola cadena.
Grepgrepes una utilidad de búsqueda de texto de línea de comandos escrita originalmente para Unix .
GroffGroff es el reemplazo GNU para los formateadores de texto troff y nroff .
COMIDAGNU GRUB (abreviatura de GNU GRand Unified Bootloader) es un paquete de cargador de arranque del Proyecto GNU .
ComprimirGzip es una aplicación de software que se utiliza para la compresión de archivos . gzip es la abreviatura de GNU zip.
iana-etc.iana-etc. instala servicios y protocolos utilizando datos de la Autoridad de Números Asignados de Internet . Se incluyen instantáneas de los datos de la IANA, scripts para transformar esos datos en los formatos necesarios y scripts para obtener los datos más recientes.Licencia de software abierto
Utilidades inetualesUna colección de herramientas de red, que incluye: telnet , ftp y rsh .Licencia Pública General de GNU
Herramienta internacionalUn conjunto de herramientas para centralizar la traducción de muchos formatos de archivos diferentes utilizando archivos PO compatibles con GNU gettext.
Ruta IP2Una colección de utilidades de espacio de usuario para controlar y monitorear varios aspectos de la red en el kernel de Linux , incluido el enrutamiento , las interfaces de red, los túneles, el control de tráfico y los controladores de dispositivos relacionados con la red .
KbdUn paquete contiene herramientas para gestionar la consola Linux (consola Linux, terminales virtuales en ella, teclado, etc.). Principalmente, lo que hacen es cargar fuentes de consola y mapas de teclado. Este paquete también contiene un conjunto de varias fuentes y mapas de teclado.
KmodUn binario de llamadas múltiples que implementa los programas utilizados para controlar los módulos del kernel de Linux.
menoslesses un programa de búsqueda de terminal en Unix , Windows y sistemas similares a Unix que se utiliza para ver (pero no cambiar) el contenido de un archivo de texto, una pantalla a la vez.Doble: licencia GPL o similar a BSD
Scripts de arranque LFSEl paquete LFS-Bootscripts contiene un conjunto de scripts para iniciar o detener el sistema LFS durante el arranque o el apagado. Los archivos de configuración y los procedimientos necesarios para personalizar el proceso de arranque se describen en las siguientes secciones.Licencias Creative Commons y Licencia MIT
Capuchón libreUna alternativa al modelo de privilegios de superusuario en Linux.
LibffiUna biblioteca de interfaz de funciones extranjeras portátil.Licencia MIT
Línea de distribución de librosLibpipeline es una biblioteca C para manipular tuberías de subprocesos de una manera flexible y conveniente.Licencia Pública General de GNU
Herramienta de bibliotecaGNU Libtool es una herramienta de programación GNU del sistema de compilación GNU utilizada para crear bibliotecas compiladas portátiles .
LinuxEl kernel de Linux es un núcleo de sistema operativo utilizado por la familia Linux de sistemas operativos similares a Unix .
GNU m4GNU m4 es la versión GNU del preprocesador de macros m4 .
hacerMake es una utilidad para crear automáticamente programas ejecutables y bibliotecas a partir del código fuente .
Hombre-DBMan-DB es una implementación del sistema de documentación estándar de Unix al que se accede mediante el comando man. Utiliza una base de datos Berkeley DB en lugar de las tradicionales bases de datos de texto plano whatis.
Páginas de manualUna página de manual (abreviatura de página de manual) es una forma de documentación de software en línea que generalmente se encuentra en un sistema operativo Unix o similar a Unix .Licencias Múltiples. [11]
Mesónun sistema de compilación de código abierto diseñado para ser extremadamente rápido y, lo que es más importante, lo más fácil de usar posible.Licencia Apache
Comité de Política MonetariaBiblioteca AC para la aritmética de números complejos con precisión arbitrariamente altaLicencia GNU LGPL
MPFRBiblioteca GNU C para cálculos de punto flotante de precisión múltiple con redondeo correcto.GNU LGPL y GNU GPL para partes especiales excepcionales del código fuente
MaldicionesUna biblioteca de programación para escribir interfaces de usuario de texto de manera independiente de la terminal.Licencia X11 [12]
NinjaUn pequeño sistema de construcción centrado en la velocidad.Licencia Apache
OpenSSLBiblioteca de software para aplicaciones que proporcionan comunicaciones seguras a través de redes informáticas contra escuchas no autorizadas e identifican a la parte que se encuentra en el otro extremo. Es ampliamente utilizada por servidores de Internet , incluida la mayoría de sitios web HTTPS . Licencia Apache 1.0 y licencia BSD  de cuatro cláusulas
ParcheUna herramienta informática para programas Unix que actualiza archivos de texto según instrucciones contenidas en un archivo separado, llamado archivo de parche .Licencia Pública General de GNU
PerlUn lenguaje de programación interpretado dinámicoLicencia Artística 1.0 [13] [14] o GNU GPL [15]
Configuración del paqueteUn programa de computadora que proporciona una interfaz unificada para consultar bibliotecas instaladas con el fin de compilar software a partir de su código fuente .Licencia Pública General de GNU
ProcedimientosUn conjunto de utilidades de línea de comandos y de pantalla completa que proporcionan información del pseudosistema de archivos, que normalmente se encuentra en /proc . Este sistema de archivos proporciona una interfaz sencilla para las estructuras de datos del núcleo. Los programas de procps generalmente se concentran en las estructuras que describen los procesos que se ejecutan en el sistema.GNU GPL y GNU LGPL
PsmiscUn conjunto de algunas pequeñas utilidades útiles que utilizan el sistema de archivos proc .Licencia Pública General de GNU
PitónUn lenguaje de programación de alto nivel interpretado de código abierto para programación de propósito general.Licencia de la Fundación del Software Python
Documentación de PythonEl paquete contiene el entorno de desarrollo de Python.
Línea de lecturaGNU readline es una biblioteca de software creada y mantenida por el Proyecto GNU .Licencia Pública General de GNU
sedsed ( stream editor ) es una utilidad de Unix que (a) analiza archivos de texto y (b) implementa un lenguaje de programación que puede aplicar transformaciones textuales a dichos archivos.
SombraHerramienta que se utiliza en la mayoría de los sistemas operativos Unix y similares para cambiar la contraseña de un usuario . La contraseña introducida por el usuario se ejecuta a través de una función de derivación de clave para crear una versión en hash de la nueva contraseña, que se guarda. Solo se almacena la versión en hash; la contraseña introducida no se guarda por razones de seguridad.Licencia Artística o Licencia tipo BSD
Registro del sistemaUn demonio de registro del sistema y del núcleo que proporciona dos utilidades del sistema que brindan soporte para el registro del sistema y el rastreo de mensajes del núcleo. La compatibilidad con los sockets de dominio de Internet y Unix permite que este paquete de utilidades admita tanto el registro local como el remoto.Licencia Pública General de GNU
Sistema de sysvinitProgramas de inicio de estilo System V que controlan el arranque y apagado del sistema.
alquitrántares un programa que proporciona la capacidad de crear archivos tar, así como varios otros tipos de manipulación.
TclTool Command Language es un lenguaje de programación dinámico .Licencia tipo BSD [16]
Información de textoUna sintaxis de composición tipográfica utilizada para generar documentación tanto en formato impreso como en línea y en el formato de documentación oficial del proyecto GNU.Licencia Pública General de GNU
datos tzLa base de datos de zonas horarias de dominio público contiene códigos y datos que representan el historial de la hora local de muchas ubicaciones representativas alrededor del mundo.Dominio público y BSD
Archivo tar de configuración de UdevEl paquete Udev contiene programas para la creación dinámica de nodos de dispositivos. El desarrollo de udev se ha fusionado con systemd, pero la mayor parte de systemd es incompatible con LFS. Aquí creamos e instalamos solo los archivos udev necesarios.Licencias Creative Commons y Licencia MIT
util-linuxEl paquete Util-linux contiene diversos programas de utilidad, entre ellos, utilidades para gestionar sistemas de archivos, consolas, particiones y mensajes.Licencia Pública General de GNU
Archivos de idioma de Vim (recomendados)Un editor de texto creado para crear y cambiar cualquier tipo de texto.Software libre (licencia Vim), software de beneficencia
RuedaEsta biblioteca es la implementación de referencia del estándar de empaquetado de ruedas de Python, como se define en PEP 427.Instituto Tecnológico de Massachusetts (MIT)
Analizador XML::
Utilidades XZUn software de compresión de datos de uso general con una alta tasa de compresión. XZ Utils se escribió para sistemas similares a POSIX, pero también funciona en algunos sistemas que no son tan POSIX. XZ Utils es el sucesor de LZMA Utils.GNU GPL y GNU LGPL
ZlibZlib es una biblioteca de software utilizada para la compresión de datos .licencia zlib
estándar zzstd es un algoritmo de compresión rápido y sin pérdidas y una herramienta de compresión de datos. Comprime o descomprime archivos .zst.Licencia dual BSD + GPLv2. [17]

[18] Esta es una lista de los paquetes incluidos en la versión 1.1.0 de CLFS. A menos que se indique lo contrario, esta lista es aplicable a todas las arquitecturas compatibles.

Unidad de construcción estándar

Una "unidad de compilación estándar" ("SBU") es un término utilizado durante el arranque inicial del sistema y representa la cantidad de tiempo necesaria para compilar el primer paquete en LFS en una computadora determinada. Su creación fue motivada por el largo tiempo que se requiere para compilar un sistema LFS y el deseo de muchos usuarios de saber cuánto tiempo tomará compilar un archivo tar de código fuente con anticipación.

A partir de la versión 10.1 de Linux From Scratch, el primer paquete que crea el usuario es GNU binutils. Al crearlo, se anima a los usuarios a medir el proceso de creación mediante construcciones de shell y a denominar ese tiempo como la "unidad de creación estándar" del sistema. Una vez que se conoce este número, se expresa una estimación del tiempo necesario para crear los paquetes posteriores en relación con la SBU conocida.

Varios paquetes creados durante la compilación tardan mucho más en compilarse que binutils, entre ellos la biblioteca C de GNU (con una calificación de 4,2 SBU) y la colección de compiladores de GNU (con una calificación de 11 SBU). La unidad debe interpretarse como una aproximación; varios factores influyen en el tiempo real necesario para compilar un paquete.

Recepción

LWN.net revisó LFS en 2004: [19]

Linux From Scratch es un proyecto maravilloso. Debería convertirse en material de lectura obligatoria para todos los cursos de formación sobre Linux y algo que todo entusiasta de Linux debería completar al menos una vez. Esto también crearía otro efecto secundario interesante: la gente que tiende a expresar rápidamente su insatisfacción en las listas de correo y foros de las distribuciones probablemente mostraría mucho más respeto por los desarrolladores. Instalar una distribución ya preparada es una tarea trivial. Construir un conjunto de 4 CD que contengan un sistema operativo estable, seguro y fiable, además de miles de aplicaciones, definitivamente no lo es.

Tux Machines escribió una reseña sobre Linux From Scratch 6.1 en 2005: [20]

Ahora, pasemos a BLFS. Lamentablemente, Beyond Linux From Scratch siempre parece tener un libro detrás. Para mí, no es una instalación real hasta que uno puede iniciar sesión en un administrador de ventanas.

Tux Machines también tiene una segunda [21] y una tercera parte [22] de la revisión.

Véase también

Otras distribuciones de Linux basadas en código fuente:

Referencias

  1. ^ ab "LFS News". www.linuxfromscratch.org . Consultado el 2 de septiembre de 2023 .
  2. ^ Beekmans, Gerard (2023). Linux From Scratch, versión 12.0 (PDF) .
  3. ^ Prefacio: Arquitecturas de destino LFS, Linux desde cero
  4. ^ "Apéndice D. Licencias LFS" . Consultado el 9 de agosto de 2023 .
  5. ^ ¿ Qué es Linux From Scratch?, Página de inicio del proyecto LFS
  6. ^ Gerard Beekmans: Beyond Linux From Scratch, versión 6.3 (agosto de 2008)
  7. ^ "Linux compilado de forma cruzada desde cero - Integrado".
  8. ^ Brendan Horan. "Raspberry Pi práctica". 2013. pág. 105.
  9. ^ ab "Página de inicio del proyecto LFS LiveCD". www.linuxfromscratch.org . Consultado el 25 de mayo de 2018 .
  10. ^ "Índice de /~kb0iic/livecdupd". clfs.org . Consultado el 25 de mayo de 2018 .
  11. ^ "Licencias para páginas de manual". www.kernel.org . Consultado el 25 de mayo de 2018 .
  12. ^ "NCURSES – Licencias" . Consultado el 9 de julio de 2013 .
  13. ^ "La "Licencia Artística" - dev.perl.org". dev.perl.org . Consultado el 25 de mayo de 2018 .
  14. ^ Artístico - archivo en el repositorio git de Perl 5
  15. ^ "Licencias de Perl". dev.perl.org . Consultado el 8 de enero de 2011 .
  16. ^ "Términos de licencia de Tcl/Tk" . Consultado el 8 de enero de 2011 .
  17. ^ "Nueva licencia", GitHub "facebook/zstd"
  18. ^ "LISTA: /lfs/descargas/stable/wget-list" (txt) .
  19. ^ "Aprender con Linux desde cero [LWN.net]". lwn.net . Consultado el 28 de marzo de 2020 .
  20. ^ "Linux From Scratch 6.1 (parte 1?) | Tux Machines". www.tuxmachines.org . Consultado el 28 de marzo de 2020 .
  21. ^ "Linux From Scratch 6.1 - Parte 2 - BLFS | Tux Machines". www.tuxmachines.org . Consultado el 28 de marzo de 2020 .
  22. ^ "Más allá de Beyond Linux desde cero (lfs - parte 3) | Tux Machines". www.tuxmachines.org . Consultado el 28 de marzo de 2020 .
  • "Página de inicio del proyecto LFS". Linux From Scratch . Gerard Beekmans. 17 de marzo de 2008. Consultado el 17 de marzo de 2008 .
  • Sitio web oficial
  • Linux desde cero en DistroWatch
  • Entrevista con Gerard Beekmans
  • Otra entrevista con Gerard Beekmans
Retrieved from "https://en.wikipedia.org/w/index.php?title=Linux_From_Scratch&oldid=1245346250"