Revelador | Gerard Beekmans y otros. |
---|---|
Familia de sistemas operativos | Similar a Unix |
Estado de funcionamiento | Actual |
Modelo fuente | Código abierto |
Lanzamiento inicial | Diciembre de 1999 (1999-12) |
Último lanzamiento | 12.2 / 1 de septiembre de 2024 [1] [2] |
Método de actualización | Basado en la fuente |
Gestor de paquetes | Ninguno (basado en la fuente) |
Plataformas | IA-32 , x86-64 [3] |
Tipo de kernel | Monolítico |
Interfaz de usuario predeterminada | CLI |
Licencia | Licencias Creative Commons Principalmente CC BY-NC-SA [4] y Licencia MIT |
Sitio web oficial | www.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]
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.
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.
Componente | Descripción | Licencia |
---|---|---|
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 |
Atributo | Comandos para manipular atributos extendidos del sistema de archivos. | Licencia Pública General de GNU |
Configuración automática | Herramienta 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óvil | Una 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 |
Intento | Un shell Unix de software libre escrito para el Proyecto GNU | Licencia Pública General de GNU |
antes de Cristo | bc es 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 binarias | Una 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 |
Bisonte | Un 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 |
Bzip2 | Un algoritmo y programa de compresión de datos sin pérdida, gratuito y de código abierto, desarrollado por Julian Seward . | Licencia tipo BSD |
Controlar | Un marco de pruebas unitarias para C. | Licencia Pública General de GNU |
Utilidades básicas | Un 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 |
DejaGNU | Un 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íciles | Una utilidad de comparación de datos que genera las diferencias entre dos archivos. | Licencia Pública General de GNU |
Programas E2fs | e2fsprogs (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 |
Elfutils | Una colección de utilidades y bibliotecas para leer, crear y modificar archivos binarios ELF. | GNU GPL y GNU LGPL |
Eudev | Una 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 |
Expatriado | Una biblioteca de análisis de XML 1.0 orientada a flujos , escrita en C. | Licencia MIT |
Esperar | Expect 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 |
Archivo | El 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 utilidades | Las 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 |
Doblar | flex ( generador de analizador léxico rápido ) es una alternativa de software libre a lex . | Licencia BSD |
Papar moscas | Gawk 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 |
CCG | La 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. | |
GDBM | Motores de bases de datos simples GDBM | |
Obtener texto | Gettext es la biblioteca de internacionalización y localización (i18n) de GNU . | |
Glibc | La biblioteca C de GNU , comúnmente conocida como glibc, es la biblioteca estándar de C publicada por el Proyecto GNU . | |
BPF | La 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 . | |
Gperf | Un 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. | |
Grep | grep es una utilidad de búsqueda de texto de línea de comandos escrita originalmente para Unix . | |
Groff | Groff es el reemplazo GNU para los formateadores de texto troff y nroff . | |
COMIDA | GNU GRUB (abreviatura de GNU GRand Unified Bootloader) es un paquete de cargador de arranque del Proyecto GNU . | |
Comprimir | Gzip 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 inetuales | Una colección de herramientas de red, que incluye: telnet , ftp y rsh . | Licencia Pública General de GNU |
Herramienta internacional | Un conjunto de herramientas para centralizar la traducción de muchos formatos de archivos diferentes utilizando archivos PO compatibles con GNU gettext. | |
Ruta IP2 | Una 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 . | |
Kbd | Un 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. | |
Kmod | Un binario de llamadas múltiples que implementa los programas utilizados para controlar los módulos del kernel de Linux. | |
menos | less es 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 LFS | El 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 libre | Una alternativa al modelo de privilegios de superusuario en Linux. | |
Libffi | Una biblioteca de interfaz de funciones extranjeras portátil. | Licencia MIT |
Línea de distribución de libros | Libpipeline es una biblioteca C para manipular tuberías de subprocesos de una manera flexible y conveniente. | Licencia Pública General de GNU |
Herramienta de biblioteca | GNU Libtool es una herramienta de programación GNU del sistema de compilación GNU utilizada para crear bibliotecas compiladas portátiles . | |
Linux | El kernel de Linux es un núcleo de sistema operativo utilizado por la familia Linux de sistemas operativos similares a Unix . | |
GNU m4 | GNU m4 es la versión GNU del preprocesador de macros m4 . | |
hacer | Make es una utilidad para crear automáticamente programas ejecutables y bibliotecas a partir del código fuente . | |
Hombre-DB | Man-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 manual | Una 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ón | un 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 Monetaria | Biblioteca AC para la aritmética de números complejos con precisión arbitrariamente alta | Licencia GNU LGPL |
MPFR | Biblioteca 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 |
Maldiciones | Una biblioteca de programación para escribir interfaces de usuario de texto de manera independiente de la terminal. | Licencia X11 [12] |
Ninja | Un pequeño sistema de construcción centrado en la velocidad. | Licencia Apache |
OpenSSL | Biblioteca 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 |
Parche | Una 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 |
Perl | Un lenguaje de programación interpretado dinámico | Licencia Artística 1.0 [13] [14] o GNU GPL [15] |
Configuración del paquete | Un 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 |
Procedimientos | Un 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 |
Psmisc | Un conjunto de algunas pequeñas utilidades útiles que utilizan el sistema de archivos proc . | Licencia Pública General de GNU |
Pitón | Un 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 Python | El paquete contiene el entorno de desarrollo de Python. | |
Línea de lectura | GNU readline es una biblioteca de software creada y mantenida por el Proyecto GNU . | Licencia Pública General de GNU |
sed | sed ( 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. | |
Sombra | Herramienta 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 sistema | Un 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 sysvinit | Programas de inicio de estilo System V que controlan el arranque y apagado del sistema. | |
alquitrán | tar es un programa que proporciona la capacidad de crear archivos tar, así como varios otros tipos de manipulación. | |
Tcl | Tool Command Language es un lenguaje de programación dinámico . | Licencia tipo BSD [16] |
Información de texto | Una 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 tz | La 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 Udev | El 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-linux | El 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 |
Rueda | Esta 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 XZ | Un 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 |
Zlib | Zlib es una biblioteca de software utilizada para la compresión de datos . | licencia zlib |
estándar z | zstd 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.
|
|
|
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.
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.
Otras distribuciones de Linux basadas en código fuente: