Cómo instalar Fedora/Rhel/CentOS a través de Kickstart en un dispositivo Luks existente

Cómo instalar Fedora/Rhel/CentOS a través de Kickstart en un dispositivo Luks existente

Instalaciones de Kickstart Permítanos escribir y replicar fácilmente instalaciones desatendidas o semi-inactivas de Fedora, Red Hat Enterprise Linux o Centos. Se especifican las instrucciones necesarias para instalar el sistema operativo, con una sintaxis dedicada, dentro de un archivo de Kickstart que se pasa al instalador de Anaconda. En este tutorial veremos cómo reutilizar un ya existente Luks (Configuración de teclas unificadas de Linux) Contenedor al realizar una instalación de Kickstart: esto es algo que no se puede lograr solo con instrucciones de Kickstart y requiere algunos pasos adicionales.

En este tutorial aprenderás:

  • Cómo usar un contenedor de Luks existente al realizar una instalación de Kickstart de Fedora, Rhel o Centos
  • Cómo crear y usar actualizaciones.El archivo IMG se utilizará con el instalador de Anaconda.
Cómo instalar Fedora/Rhel/CentOS a través de Kickstart en un dispositivo Luks existente

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Fedora/Rhel/Centos
Software No se necesita un software específico para seguir este tutorial.
Otro
  • Conocimiento de la sintaxis de Kickstart
  • Conocimiento de LUKS (configuración de teclas de Linux Unified) y el comando cryptsetup.
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Introducción

KickStart Permítanos replicar y personalizar fácilmente las instalaciones del sistema operativo de formas que son simplemente imposibles de lograr desde el instalador gráfico de Anaconda. Podemos, por ejemplo, declarar qué paquetes o grupos de paquetes deben instalarse en el sistema y qué debe excluirse en su lugar.

También tenemos la oportunidad de ejecutar comandos personalizados antes o después de que se realice la instalación, especificándolos dentro del dedicado %pre y %correo secciones del archivo Kickstart respectivamente. Aprovecharemos esta última característica mencionada para usar una Luks dispositivo durante el proceso de instalación.

Cifrado con sintaxis nativa de Kickstart

Crear contenedores Luks es bastante fácil, y se puede hacer simplemente usando instrucciones nativas de Kickstart. Aquí hay un ejemplo:



Parte PV.01 --ondisk = SDA-Entrypted--Luks-type = Luks1--cipher = aes-oxs-plain64--pbkdf-time = 5000--passphrase = SecretPasphrase

En el ejemplo anterior, utilizando el parte instrucción, creamos un encriptado LVM volumen físico en el /dev/sda disco. Especificamos el Luks Versión para usar (Luks1 en este caso: al menos en versiones recientes de Fedora Luks2 se ha convertido en el valor predeterminado), el cifrar, y el tiempo, expresado en milisegundos, para gastar para Pbkdf (Función de derivación de clave basada en contraseña) Procesamiento de frase de pases (es el equivalente a usar el --tiempo de iteración opción de criptetup).

Incluso si no es un hábito seguro, usamos también el --frase Para proporcionar la frase de pases de cifrado: sin esta opción, el proceso de instalación se interrumpiría, y se nos solicitará que proporcionemos una interactiva.

Podemos ver claramente cómo, usando Kickstart, obtenemos mucha más flexibilidad en comparación con una instalación tradicional; ¿Por qué necesitaríamos realizar pasos adicionales, luego? Todavía hay algunas tareas que no podemos lograr usando solo la sintaxis estándar de Kickstart. Entre otras cosas, no podemos crear Luks contenedores en dispositivos sin procesar (solo en particiones) o especifique el algoritmo de hash para usar para el Luks Configuración de clave, que de forma predeterminada está configurada en SHA256 (No hay nada de malo).

Por estas razones, es posible que deseemos crear nuestra configuración de partición antes de realizar la instalación, ya sea manualmente o utilizando herramientas como separadas dentro del %pre Sección del archivo Kickstart en sí. También podemos tener un Luks configuración no queremos destruir. En todos estos casos debemos realizar los pasos adicionales que veremos en un momento.

El %de Kickstart antes de la sección

El %pre La sección de un archivo de Kickstart es el primero que se analiza cuando se recupera el archivo. Se utiliza para realizar comandos personalizados antes de que la instalación comience y debe cerrarse explícitamente con el %fin instrucción.

En %pre, El intérprete de shell bash se usa de forma predeterminada, pero otros se pueden especificar a través del --intérprete opción (para usar python escribiríamos %Pre -Interpreter/USR/Bin/Python). Podemos usar esta sección para ejecutar los comandos necesarios para abrir el existente Luks envase. Esto es lo que podemos escribir:

%pre iotty = "$ (tty)" exec> "$ iotty" 2> "$ iotty" mientras es verdadero; ¿CryptSetup luksopen /dev /sda1 cryptroot - && break hecho %final
Copiar

Echemos un vistazo al código anterior. En primer lugar, almacenamos el resultado del tty comando, que imprime el nombre de archivo del terminal conectado a la entrada estándar, en el ceñido variable.

Con el exec> "$ Iotty" 2> "$ Iotty" Comando redirigimos la salida estándar y el error estándar al mismo terminal:
De esta manera podremos ingresar la contraseña del contenedor cuando el crytpsetup luksopen se ejecutará el comando y el mensaje se mostrará en la pantalla. El comando se lanza en un bucle infinito que se interrumpe solo si el Luks El contenedor se abre correctamente.

Si queremos ejecutar una instalación completamente desatendida, debemos pasar la frase de contrato directamente a CryptSetup (nuevamente, esto no se recomienda). Escribiríamos:

%Pre Echo -N "OurverySecretPassphrase" | cryptsetup luksopen /dev /sda1 cryptroot - %final

En el ejemplo anterior pasamos la frase de pases a la entrada estándar del comando cryptsetup a través de una tubería |: usamos el eco comando con el -norte Opción para evitar que un carácter de nueva línea se agrega al final de la frase de pases.

Patching Fedora 31 Instalador de Anaconda

Si intentamos usar un contenedor Luks desbloqueado al instalar Fedora 31 a través de Kickstart, recibiremos lo siguiente
mensaje y el proceso será abortado:

El dispositivo LUKS desbloqueado existente no se puede utilizar para la instalación sin una clave de cifrado especificada para esto
dispositivo. Por favor, vuelva a rescatar el almacenamiento.

Esto sucede debido a este compromiso introducido en la versión Fedora 31 del instalador de Anaconda. Básicamente, el código verifica que un dispositivo Luks existente tiene una clave registrada, si no es así, la instalación se aborta. El problema es ese blivet, La biblioteca de Python utilizada por Anaconda para administrar la partición adquiere la clave solo si el contenedor se abre por ella: esto se puede hacer desde el instalador gráfico, pero no hay, en el momento de escribir, una instrucción de Kickstart para desbloquear un existente Luks envase. Personalmente comenté el compromiso explicando la situación, y se ha abierto un error en Red Hat Bugzilla.

Creación de actualizaciones.archivo IMG

En este momento, la única solución (que sé) es parchear el código fuente de Anaconda, comentando la línea que ejecuta el control introducido con el confirmación que mencionamos anteriormente. La buena noticia es que es una operación muy simple.

Como lo primero, necesitamos clonar el repositorio de anaconda git, específicamente el liberación f31 rama:

$ git clon https: // github.com/rhinstaller/anaconda -b f31 liberación


Una vez que el repositorio está clonado, entramos en el anaconda directorio y modificar el Pyanaconda/Storage/Checker.py Archivo: Todo lo que tenemos que hacer es comentar la línea 619:

def set_default_checks (self): "" "Establezca las verificaciones predeterminadas.""" ser.cheques = list () self.add_check (verify_root) yo.add_check (verify_s390_constraints) self.add_check (verify_partition_formatting) self.add_check (verify_partition_sizes) self.add_check (verify_partition_format_sizes) self.add_check (verify_bootloader) self.add_check (verify_gpt_biosboot) self.add_check (verify_swap) yo.add_check (verify_swap_uuid) self.add_check (verify_mountpoints_on_linuxfs) self.add_check (verify_mountpoints_on_root) #self.add_check (verify_unlocked_devices_have_key) self.add_check (verify_luks_devices_have_key) self.add_check (verify_luks2_memory_requirements) self.add_check (verify_mounted_partitions)
Copiar

Guardamos la modificación y, desde la raíz del repositorio, lanzamos el cajas de maquillaje guión que se encuentra en el guiones directorio. Para que se ejecute el script debemos tener python2 Instalado:

ps ./scripts/maquillaje

El script generará el actualizaciones.img archivo que contendrá nuestras modificaciones. Para verificar su contenido podemos usar el lsinitrd dominio:

$ lsinitrd actualizaciones.Imagen IMG: actualizaciones.IMG: 8.0k ==================================================== ======================= Versión: Argumentos: Dracut Módulos: ====================== ==================================================== == DRWXR-XR-X 3 EGDOC EGDOC 0 JAN 30 09:29 . DRWXR-XR-X 3 EGDOC EGDOC 0 enero 30 09:29 Ejecutar DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 Ejecutar/Instalar DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 Correr/Instalar// Actualizaciones DRWXR-XR-X 3 EGDOC EGDOC 0 enero 30 09:29 Ejecutar/Instalar/Actualizaciones/Pyanaconda DRWXR-XR-X 2 EGDOC EGDOC 0 Jan 30 09:29 Ejecutar/Instalar/Actualizaciones/Pyanaconda/Storage -RW-R-- -R-- 1 EGDOC EGDOC 25443 30 de enero 09:29 Ejecutar/instalar/actualizaciones/pyanaconda/almacenamiento/verificación.py ==================================================== ======================== 

Usaremos este archivo para "parche" al instalador de Fedora 31.

Aplicando el parche

Para aplicar las modificaciones contenidas en el archivo que acabamos de generar, debemos colocarlo en algún lugar donde podamos acceder fácilmente a él, tal vez a través de FTP o HTTP, o incluso en un dispositivo de bloque local, y usar el instalar.actualizaciones Parámetro para hacer referencia a él desde la imagen del instalador de Fedora. Desde el menú Grub, resaltamos la entrada del menú "Instalar Fedora":



Menú del instalador Fedora 31

Una vez que se selecciona la línea de menú, presionamos la tecla Tab: la línea de comando del núcleo asociada con la entrada se muestra en la parte inferior de la pantalla:



La línea de comandos del kernel utilizada por la entrada "Instalar fedora", todo lo que tenemos que hacer ahora es agregar el instalar.actualizaciones instrucción y proporcionar el camino al actualizaciones.img Archivo que creamos. Suponiendo tanto el kickstart como las actualizaciones.Se puede acceder al archivo IMG a través de HTTP en un servidor local con IP 192.168.0.37, escribiríamos:
vmlinuz initrd = initrd.IMG Inst.Stage2 = HD: Label = Fedora-S-DVD-X86_31-31 Quiet instalar.actualizaciones = http: // 192.168.0.37/actualizaciones.IMG Inst.ks = http: // 192.168.0.37/ks.CFG

En este punto podemos presionar ENTER para arrancar. Con la modificación anterior, el instalador ya no se quejará
el desbloqueado Luks dispositivo, y la instalación continuará sin problemas.

Conclusiones

En este artículo vimos cómo sintonizar una instalación de Kickstart para reutilizar un Luks dispositivo, desbloqueándolo en el %pre Sección del archivo Kickstart, y cómo aplicar una pequeña solución al instalador de Anaconda Fedora 31 que de otro modo fallaría cuando se intente dicho tipo de instalación. Si tiene curiosidad sobre la sintaxis de Kickstart, eche un vistazo a la documentación en línea.

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cómo instalar Debian en un contenedor de Luks existente
  • Cómo instalar Anaconda Scientific Computing Python ..
  • Cómo realizar instalaciones de Linux desatendidas con Kickstart
  • Cómo usar un archivo como clave de dispositivo Luks
  • Oracle Linux vs Red Hat (Rhel)
  • Descarga de Linux
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 22.04