Simplifique la creación de Linux desde la fuente utilizando el sitio de paquetes UmVirt LFS

Quizás muchos de los usuarios de GNU / Linux, a la luz de las recientes iniciativas del gobierno para crear una Internet "soberana", estaban desconcertados por el objetivo de estar a salvo de la falta de disponibilidad de repositorios de distribuciones populares de GNU / Linux.

Alguien que descarga los repositorios CentOS, Ubuntu, Debian, alguien construye sus distribuciones basadas en las distribuciones existentes, y alguien armado con libros LFS (Linux From Scratch) y BLFS (Beyond Linux From Scratch) ya ha comenzado a compilar sus distribuciones desde la fuente desde Él cree que en las condiciones de un ataque "pirata informático" de Internet, se producirán brotes de virus, filtraciones de datos, y los binarios simplemente quedarán desactualizados después de un tiempo.

Recientemente, llegó a compilar completamente una máquina virtual desde la fuente basada en las instrucciones del libro Linux From Scratch Systemd Edition v.8.3. Me apresuro a compartir los resultados contigo.

Proceso de compilación de Linux


El proceso de construcción de Linux desde la fuente se puede dividir en tres etapas:

  1. Según el sistema operativo existente, se crea el entorno de compilación LFS.
  2. El entorno de compilación crea una imagen de la máquina virtual LFS.
  3. La máquina virtual instala paquetes adicionales del libro BLFS que no están en el libro LFS.

Archivos de script estáticos


Al trabajar con el entorno de compilación, es conveniente usar el portapapeles y SSH: copie los comandos del libro y péguelos en la consola del entorno de compilación.

Después de iniciar la máquina virtual creada, aparecieron serios problemas. A diferencia de la ventana de terminal, el código no se puede insertar en la ventana del cliente de la máquina virtual. Escribir comandos con el teclado es inconveniente y existe un gran riesgo de errores tipográficos. El peligro de los errores tipográficos radica en el hecho de que pueden no aparecer de inmediato, sino después de un tiempo y dar lugar a problemas graves.

Se sabe que los comandos pueden ingresarse no solo desde el teclado sino también desde el flujo estándar (STDIN). La fuente de la secuencia estándar puede usar el puerto serie, así como el resultado del programa de script denominado salida estándar (STDOUT).

Mucha gente sabe que el comando wget puede enviar el contenido del archivo descargado a la salida estándar (STDOUT):

wget http://example.com -O - 

Si la salida del comando wget se envía al intérprete, se puede ejecutar un código arbitrario. El código se ejecutará como si estuviera escrito en el teclado o copiado del portapapeles:

 wget http://umvirt.com/linux/helloworld.sh -O - | bash 

Por lo tanto, puede colocar archivos con comandos en algún servidor web y enviar sus contenidos al intérprete.

Archivos de script dinámicos


Los archivos estáticos son, por supuesto, algo bueno si sabe exactamente qué se debe hacer, y si el paquete está instalado, si las dependencias no están claramente instaladas o no, ¿entonces qué?

Un sitio dinámico basado en el servidor web LAMP (Linux-Apache-MySQL-PHP) viene al rescate. Si un sitio puede generar dinámicamente páginas (archivos HTML) e imágenes, debería ser capaz de hacer frente a los archivos de texto normales.

Y así sucedió. Escribió el sitio UmVirt LFS Packages que genera scripts para el intérprete Bash. La base de datos del sitio contiene información sobre paquetes, dependencias, parches, adiciones y comandos de compilación.

Ahora, para instalar el paquete mc (comandante de medianoche), puede escribir el comando:

 wget --no-check-cerificate https://umvirt.com/linux/packages/0.1/mc/install -O - | bash 

El script del sitio recibirá datos de la base de datos y generará un código para verificar las dependencias y el código del script para instalar el paquete. El intérprete procesará las instrucciones del guión.

Para que esto sea posible, la información sobre los paquetes instalados en la base de datos se almacena en el disco de la máquina virtual.

La base de datos de paquetes instalados se encuentra en el directorio / var / cache / ulfs-packages es una lista de archivos vacíos con nombres correspondientes al nombre de los paquetes.

Si el paquete no se encuentra en la base de datos, se instala una dependencia recursivamente.

Servicios


Para que la instalación de paquetes sea más conveniente, escribí el script chimp en otro sitio web del Asistente UmVirt LFS que utiliza la base de datos de paquetes UmVirt LFS . La tarea principal de UmVirt LFS Assistant es la ejecución de otros comandos.

Usando chimpancé, la instalación de paquetes es aún más fácil:

 chimp install mc 

Demostración


Para familiarizarse con el trabajo de los servicios UmVirt LFS Packages y UmVirt LFS Assistant, puede descargar la imagen básica Initial UmVirt LFS v.0.1 Update 1 . Instala Xorg ejecutando un comando:

 chimp install X 

En el proceso del script se instalarán 141 paquetes en modo automático. Para ahorrar tiempo de compilación, puede reemplazar el valor en el archivo / etc / profile con la variable MAKEFLAGS de "-j1" (una secuencia), por ejemplo, a "-j6" (seis hilos).

Descentralización y personalización.


Por motivos de seguridad, autonomía y personalización, el código fuente de los paquetes UmVirt LFS y los servicios del asistente UmVirt LFS se ha publicado en el dominio público. Cualquiera puede descargarlo, implementarlo y ajustar los servicios dentro de su infraestructura.

Source: https://habr.com/ru/post/445178/


All Articles