Cómo instalar Fedora/Rhel/CentOS a través de Kickstart en un dispositivo Luks existente
- 877
- 219
- Berta Solano
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.
Requisitos y convenciones de software utilizados
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 |
|
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 dominiops - 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
- « Agregue nuevas particiones, volúmenes lógicos e intercambie a un sistema de manera no destructiva preparación de objetivos de RHCSA
- Objetivos de estudio para la Guía de Examen y Preparación de RHCSA »