Linux From Scratch ( LFS ) es un tipo deinstalación de Linux y el nombre de un libro escrito por Gerard Beekmans, y en mayo de 2021, mantenido principalmente por Bruce Dubbs. El libro brinda a los lectores instrucciones sobre cómo construir un sistema Linux desde la fuente . El libro está disponible gratuitamente en el sitio Linux From Scratch. [1]
Desarrollador | Gerard Beekmans y col. |
---|---|
Familia OS | Tipo Unix |
Estado de trabajo | Actual |
Modelo fuente | Fuente abierta |
Versión inicial | Diciembre de 1999 |
Último lanzamiento | 10.1 / 1 de marzo de 2021 [1] [2] |
Método de actualización | Basado en fuente |
Gerente de empaquetación | Ninguno (basado en fuente) |
Plataformas | IA-32 , x86-64 [3] |
Tipo de grano | Monolítico |
Interfaz de usuario predeterminada | CLI |
Licencia | Licencias Creative Commons y Licencia MIT |
Página web oficial | www |
Proyectos en el marco de la EPA
Linux From Scratch es una forma de instalar un sistema Linux en funcionamiento construyendo todos sus componentes manualmente. Este es, naturalmente, un proceso más largo que instalar una distribución de 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. [4]
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. Introduce y guía al lector a través de las adiciones al sistema, incluida la compatibilidad con redes, X , sonido, impresora y escáner. Desde la versión 5.0, la versión del libro BLFS coincide con la versión del libro LFS. [5]
El libro Cross Linux From Scratch (CLFS) se centra en la compilación cruzada , incluida la compilación para sistemas integrados o sin cabeza 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 no incluidas en el libro LFS, como cadenas de herramientas de construcción cruzada , soporte para múltiples bibliotecas (bibliotecas de 32 y 64 bits en paralelo) y arquitecturas de conjuntos de instrucciones alternativas como Itanium , SPARC , MIPS y Alpha .
El proyecto Linux from Scratch, como BitBake , también admite la compilación cruzada de Linux para sistemas integrados ARM como Raspberry Pi y BeagleBone . [6] [7]
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 rotura de pilas y aleatorización del diseño del espacio de direcciones . Además de su objetivo 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 revisado los libros LFS y BLFS varias veces y desean reducir la cantidad de trabajo involucrado. 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
Se requiere una partición limpia y un sistema Linux que funcione con un compilador y algunas bibliotecas de software esenciales para construir LFS. En lugar de instalar desde un sistema Linux existente, también se puede usar un Live CD para construir un sistema LFS.
El proyecto anteriormente mantenía el CD Linux From Scratch Live. [8] LFS Live CD contiene todos los paquetes fuente (en la versión completa del Live CD solamente), el libro LFS, herramientas de construcción automatizadas y (excepto por la versión mínima de Live CD) un entorno Xfce GUI para trabajar. LFS Live CD ya no se mantiene y no se puede utilizar para construir la versión 7 de LFS o posterior. [8] Sin embargo, hay dos compilaciones no oficiales que se pueden usar para construir un kernel y un espacio de usuario de 32 o 64 bits respectivamente para LFS 7.x. [9]
Primero, se debe compilar una cadena de herramientas que consta de las herramientas utilizadas para compilar LFS, como GCC , glibc , binutils y otras utilidades necesarias. Luego, el directorio raíz debe cambiarse, (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 compila es glibc; después de eso, el enlazador de la cadena de herramientas debe ajustarse para enlazar con el glibc recién construido, de modo que todos los demás paquetes que compondrán el sistema terminado también se puedan enlazar con él. Durante la fase chroot , la función 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 son lo primero en PATH y el nuevo sistema se basa en sus propios componentes nuevos.
Lista de paquetes en LFS versión 10.1
Componente | Descripción | Licencia | Versión |
---|---|---|---|
Acl | Una lista de control de acceso (ACL), con respecto a un sistema de archivos de computadora, es una lista de permisos adjunta a un objeto. | GNU GPL | 2.2.53 |
Attr | Comandos para manipular atributos extendidos del sistema de archivos. | GNU GPL | 2.4.48 |
Autoconf | Herramienta para producir scripts de configuración para software C , C ++ , Fortran , Fortran 77, Erlang , Objective-C en sistemas informáticos similares a Unix. | GNU GPL | 2,71 |
Automake | Una herramienta de programación que produce archivos MAKE portátiles para que los utilice el programa make , que se utiliza en la compilación de software. | GNU GPL | 1.16.3 |
Intento | Un shell de Unix de software libre escrito para el proyecto GNU | GNU GPL | 5.1 |
antes de Cristo | bc es una calculadora básica (a menudo referida como la calculadora de banco), es "un lenguaje de cálculo de precisión arbitraria" con una sintaxis similar al lenguaje de programación C . | GNU GPL | 3.3.0 |
Binutils | Una colección de herramientas de programación para la manipulación de código objeto en varios formatos de archivo objeto. | GNU GPL | 2.36.1 |
Bisonte | Un generador de analizador que forma parte del Proyecto GNU . Bison convierte una descripción gramatical de una gramática libre de contexto en código fuente para un analizador de C , C ++ o Java . | GNU GPL | 3.7.5 |
Bzip2 | Un algoritmo y programa de compresión de datos sin pérdida de código abierto y gratuito desarrollado por Julian Seward . | Licencia similar a BSD | 1.0.8 |
Cheque | Un marco de pruebas de unidad para C . | GNU GPL | 0.15.2 |
Coreutils | Un paquete de software GNU que contiene muchas de las herramientas básicas, como cat , ls y rm , necesarias para sistemas operativos similares a Unix . | GNU GPL | 8.32 |
DejaGNU | Un marco para probar otros programas. Tiene un script principal llamado runtest que recorre un directorio mirando los archivos de configuración y luego ejecuta algunas pruebas con los criterios dados. | GNU GPL | 1.6.2 |
Diffutils | Una utilidad de comparación de datos que genera las diferencias entre dos archivos. | GNU GPL | 3,7 |
E2fsprogs | e2fsprogs (a veces llamados los programas E2Fs) es un conjunto de utilidades para el mantenimiento de los ext2 , ext3 y ext4 sistemas de archivos . | GNU GPL | 1.46.1 |
Elfutils | Una colección de utilidades y bibliotecas para leer, crear y modificar archivos binarios ELF. | GNU GPL y GNU LGPL | 0,183 |
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 . | GNU GPL | 3.2.10 |
Expatriado | Una corriente -oriented XML 1.0 analizador biblioteca , escrito en C . | Licencia MIT | 2.2.10 |
Suponer | Expect es una herramienta de prueba 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 publico | 5.45.4 |
Archivo | El comando file es un programa estándar de Unix para reconocer el tipo de datos contenidos en un archivo de computadora. | Licencia similar a BSD | 5.39 |
Findutils | Las utilidades de búsqueda de GNU son las utilidades básicas de búsqueda de directorios del sistema operativo GNU. | GNU GPL | 4.8.0 |
Flexionar | flex ( generador de analizador léxico rápido ) es una alternativa de software libre a lex . | Licencia BSD | 2.6.4 |
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. | GNU GPL | 5.1.0 |
GCC | 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. | 10.2.0 | |
GDBM | Motores de base de datos simples GDBM | 1,19 | |
Gettext | Gettext es la biblioteca de internacionalización y localización (i18n) de GNU . | 0,21 | |
Glibc | La biblioteca GNU C , comúnmente conocida como glibc, es la biblioteca estándar de C lanzada por el Proyecto GNU . | 2,33 | |
GMP | El GNU Multiple-Biblioteca de precisión, también conocida como GMP, es un libre de biblioteca para la aritmética de precisión arbitraria , operando sobre firmados números enteros , números racionales y de coma flotante números. | 6.2.1 | |
Gperf | Un generador de funciones hash perfecto. Para una lista determinada 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 de la tabla hash solo necesita una comparación de una sola cadena. | 3.1 | |
Grep | grep es una utilidad de búsqueda de texto de línea de comandos escrita originalmente para Unix . | 3.6 | |
Groff | Groff es el reemplazo de GNU para los formateadores de texto troff y nroff . | 1.22.4 | |
COMIDA | GNU GRUB (abreviatura de GNU GR y cargador de arranque unificado) es un paquete de cargador de arranque del proyecto GNU . | 2,04 | |
Gzip | Gzip es una aplicación de software que se utiliza para la compresión de archivos . gzip es la abreviatura de GNU zip | 1,10 | |
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 abierta | 20210202 |
Inetutils | Una colección de herramientas de red, que incluyen: telnet , ftp y rsh . | GNU GPL | 2.0 |
Intltool | Un conjunto de herramientas para centralizar la traducción de muchos formatos de archivo diferentes utilizando archivos PO compatibles con gettext de GNU. | 0.51.0 | |
IPRoute2 | Una colección de utilidades de espacio de usuario para controlar y monitorear varios aspectos de las redes 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 . | 5.10.0 | |
Kbd | Un paquete contiene herramientas para administrar la consola Linux (consola Linux, terminales virtuales, teclado, etc.). Principalmente, lo que hacen es cargar fuentes de consola y mapas de teclado. Además, este paquete contiene un conjunto de varias fuentes y mapas de teclado. | 2.4.0 | |
Kmod | Un binario de múltiples llamadas que implementa los programas utilizados para controlar los módulos del kernel de Linux. | 28 | |
menos | less es un programa de localizador 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 en una pantalla a la vez. | Doble: licencia GPL o similar a BSD | 563 |
LFS-Bootscripts | El paquete LFS-Bootscripts contiene un conjunto de scripts para iniciar / detener el sistema LFS en el arranque / 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 | 20210201 |
Libcap | Una alternativa al modelo de privilegio de superusuario en Linux. | 2,48 | |
Libffi | Una biblioteca de interfaz de función externa portátil. | Licencia MIT | 3.3 |
Libpipeline | Libpipeline es una biblioteca C para manipular tuberías de subprocesos de una manera flexible y conveniente. | GNU GPL | 1.5.3 |
Libtool | GNU Libtool es un GNU herramienta de programación del sistema de compilación GNU utilizado para la creación compilados portátiles bibliotecas . | 2.4.6 | |
Linux | El kernel de Linux es un kernel de sistema operativo utilizado por la familia Linux de sistemas operativos similares a Unix . | 5.10.17 | |
GNU m4 | GNU m4 es la versión GNU del preprocesador de macros m4 . | 1.4.18 | |
fabricar | Make es una utilidad para crear automáticamente programas ejecutables y bibliotecas a partir del código fuente . | 4.3 | |
Man-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 whatis de texto plano. | 2.9.4 | |
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 . | Varias licencias. [10] | 5.10 |
Mesón | un sistema de compilación de código abierto destinado a ser extremadamente rápido y, lo que es más importante, lo más fácil de usar posible. | Licencia Apache | 0.57.1 |
MPC | Biblioteca de CA para la aritmética de números complejos con precisión arbitrariamente alta | GNU LGPL | 1.2.1 |
MPFR | Biblioteca GNU C para cálculos de punto flotante de precisión múltiple con redondeo correcto. | GNU LGPL y GNU GPL para una parte de excepción especial del código fuente | 4.1.0 |
maldiciones | Una biblioteca de programación para escribir interfaces de usuario de texto de manera independiente del terminal. | Licencia X11 [11] | 6.2 |
Ninja | Un pequeño sistema de construcción con un enfoque en la velocidad. | Licencia Apache | 1.10.2 |
OpenSSL | Licencia Apache 1.0 y licencia BSD de cuatro cláusulas | 1.1.1j | |
Parche | Una herramienta informática para programas Unix que actualiza archivos de texto de acuerdo con las instrucciones contenidas en un archivo separado, llamado archivo de parche . | GNU GPL | 2.7.6 |
Perl | Un lenguaje de programación interpretado dinámico | Licencia artística 1.0 [12] [13] o GNU GPL [14] | 5.32.1 |
Pkg-config | Un programa informático que proporciona una interfaz unificada para consultar las bibliotecas instaladas con el fin de compilar software a partir de su código fuente . | GNU GPL | 0.29.2 |
Procps | Un conjunto de utilidades de línea de comandos y de pantalla completa que proporcionan información fuera del pseudo-sistema de archivos que se encuentra más comúnmente en / proc . Este sistema de archivos proporciona una interfaz simple para las estructuras de datos del kernel. 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 | 3.3.17 |
Psmisc | Un conjunto de pequeñas utilidades útiles que utilizan el sistema de archivos proc . | GNU GPL | 23,4 |
Pitón | Un lenguaje de programación de alto nivel interpretado de código abierto para programación de propósito general | Licencia de Python Software Foundation | 3.9.2 |
Documentación de Python | El paquete contiene el entorno de desarrollo de Python. | 3.9.2 | |
Readline | GNU readline es una biblioteca de software creada y mantenida por el Proyecto GNU . | GNU GPL | 8.1 |
sed | sed ( editor de flujo ) es una utilidad de Unix que (a) analiza archivos de texto e (b) implementa un lenguaje de programación que puede aplicar transformaciones textuales a dichos archivos. | 4.8 | |
Sombra | Una herramienta en la mayoría de Unix y Unix-como sistemas operativos utilizados para cambiar de un usuario de contraseña . La contraseña ingresada por el usuario se ejecuta a través de una función de derivación de clave para crear una versión hash de la nueva contraseña, que se guarda. Solo se almacena la versión hash; la contraseña ingresada no se guarda por razones de seguridad. | Licencia artística o licencia similar a BSD | 4.8.1 |
Sysklogd | A Kernel y de registro del sistema demonios que proporciona dos utilidades del sistema que proporcionan apoyo para el registro de sistema y de captura de mensajes del núcleo. La compatibilidad con sockets de dominio de Internet y Unix permite que este paquete de utilidades admita el registro local y remoto. | GNU GPL | 1.5.1 |
Sysvinit | Programas de inicio de estilo System V que controlan el arranque y apagado del sistema. | 2,96 | |
alquitrán | tar es un programa que ofrece la posibilidad de crear archivos tar, así como otros tipos de manipulación. | 1,34 | |
Tcl | Tool Command Language es un lenguaje de secuencias de comandos dinámico . | Licencia similar a BSD [15] | 8.6.11 |
Texinfo | Una sintaxis de composición tipográfica utilizada para generar documentación tanto en línea en forma impresa como en el formato de documentación oficial del proyecto GNU. | GNU GPL | 6,7 |
tzdata | La base de datos de la zona horaria de dominio público contiene código y datos que representan el historial de la hora local de muchas ubicaciones representativas de todo el mundo. | Dominio público y BSD | 2021a |
Configuración de Udev Tarball | 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ía de systemd es incompatible con LFS. Aquí construimos e instalamos solo los archivos udev necesarios. | Licencias Creative Commons y Licencia MIT | udev-lfs-20171102 |
util-linux | El paquete Util-linux contiene varios programas de utilidad. Entre ellos se encuentran las utilidades para manejar sistemas de archivos, consolas, particiones y mensajes. | GNU GPL | 2.36.2 |
Archivos de idioma Vim (recomendado) | Un editor de texto diseñado para crear y cambiar cualquier tipo de texto. | Software libre ( licencia Vim ), programas de caridad | 8.2.2433 |
XML :: Analizador | 2,46 | ||
XZ Utils | Un software de compresión de datos de uso general con una alta relación de compresión. Los XZ Utils se escribieron para sistemas similares a POSIX, pero también funcionan en algunos sistemas que no son tan POSIX. XZ Utils es el sucesor de LZMA Utils. | GNU GPL y GNU LGPL | 5.2.5 |
Zlib | Zlib es una biblioteca de software utilizada para la compresión de datos . | licencia zlib | 1.2.11 |
zstd | zstd un algoritmo de compresión rápido sin pérdidas y una herramienta de compresión de datos. Comprima o descomprima archivos .zst. | Licencia dual BSD + GPLv2. [dieciséis] | 1.4.8 |
[17] Esta es una lista de los paquetes incluidos en CLFS versión 1.1.0. 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 necesario para compilar el primer paquete en LFS en una computadora determinada. Su creación fue impulsada por el largo tiempo requerido para construir un sistema LFS y el deseo de muchos usuarios de saber cuánto tiempo tardará en compilarse un tarball de origen.
A partir de Linux From Scratch versión 10.1, el primer paquete creado por el usuario es GNU binutils. Al construirlo, se anima a los usuarios a medir el proceso de construcción utilizando construcciones de shell y copiar ese tiempo la "unidad de construcción estándar" del sistema. Una vez que se conoce este número, se expresa una estimación del tiempo necesario para construir paquetes posteriores en relación con la SBU conocida.
Varios paquetes construidos durante la compilación tardan mucho más en construirse que binutils, incluida la Biblioteca GNU C (con una calificación de 4.2 SBU) y la Colección de compiladores 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 crear un paquete.
Recepción
LWN.net revisó la EPA en 2004: [18]
Linux From Scratch es un proyecto maravilloso. Debería convertirse en un material de lectura obligatorio para todos los cursos de formación de Linux, y algo que todo entusiasta de Linux debería completar al menos una vez. Esto también crearía otro efecto secundario interesante: las personas que tienden a expresar rápidamente su insatisfacción en las listas de correo y foros de las distribuciones probablemente mostrarían mucho más respeto por los desarrolladores. Instalar una distribución lista para usar es una tarea trivial. La creación de un conjunto de 4 CD que contengan un sistema operativo estable, seguro y confiable, además de miles de aplicaciones, definitivamente no lo es.
Tux Machines escribió una reseña sobre Linux From Scratch 6.1 en 2005: [19]
Ahora pasemos a BLFS. Desafortunadamente, parece que Beyond Linux From Scratch siempre tiene 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 parte de revisión, [20] y una tercera parte. [21]
Ver también
Otras distribuciones de Linux basadas en fuentes:
- Gentoo Linux
- Hechicero
- Mago fuente
- Linux lunar
- GoboLinux
- QUID
Referencias
- ^ a b "Noticias de LFS" . www.linuxfromscratch.org . Consultado el 5 de marzo de 2021 .
- ^ Beekmans, Gerard (2021). Linux From Scratch, versión 10.1 (PDF) .
- ^ Prefacio: Arquitecturas de destino LFS , Linux desde cero
- ^ ¿Qué es Linux From Scratch? , Página de inicio del proyecto LFS
- ^ Gerard Beekmans: Más allá de Linux From Scratch, versión 6.3 (agosto de 2008)
- ^ "Linux compilado cruzado desde cero - Embebido" .
- ^ Brendan Horan. "Práctica Raspberry Pi" . 2013. p. 105.
- ^ a b "Página de inicio del proyecto LFS LiveCD" . www.linuxfromscratch.org . Consultado el 25 de mayo de 2018 .
- ^ "Índice de / ~ kb0iic / livecdupd" . clfs.org . Consultado el 25 de mayo de 2018 .
- ^ "Licencias para páginas de manual" . www.kernel.org . Consultado el 25 de mayo de 2018 .
- ^ "NCURSES - Licencias" . Consultado el 9 de julio de 2013 .
- ^ "La" Licencia Artística "- dev.perl.org" . dev.perl.org . Consultado el 25 de mayo de 2018 .
- ^ Artístico - archivo en el repositorio git de Perl 5
- ^ "Licencias de Perl" . dev.perl.org . Consultado el 8 de enero de 2011 .
- ^ "Términos de licencia de Tcl / Tk" . Consultado el 8 de enero de 2011 .
- ^ "Nueva licencia" , GitHub "facebook / zstd"
- ^ http://www.linuxfromscratch.org/lfs/downloads/stable/wget-list
- ^ "Aprendiendo con Linux desde cero [LWN.net]" . lwn.net . Consultado el 28 de marzo de 2020 .
- ^ "Linux From Scratch 6.1 (parte 1?) | Tux Machines" . www.tuxmachines.org . Consultado el 28 de marzo de 2020 .
- ^ "Linux From Scratch 6.1 - Parte 2 - BLFS | Máquinas Tux" . www.tuxmachines.org . Consultado el 28 de marzo de 2020 .
- ^ "Más allá de Linux desde cero (lfs - part3) | Tux Machines" . www.tuxmachines.org . Consultado el 28 de marzo de 2020 .
- "Página de inicio del proyecto LFS" . Linux desde cero . Gerard Beekmans. 17 de marzo de 2008 . Consultado el 17 de marzo de 2008 .
enlaces externos
- Página web oficial
- Linux desde cero en DistroWatch
- Entrevista a Gerard Beekmans
- Otra entrevista con Gerard Beekmans