¿Cómo instalar Debian de forma automática o desatendida?

Debian GNU/Linux

Debian es una distribución GNU/Linux sólida, estable y con más de 30000 paquetes disponibles en sus repositorios oficiales y que puede ser instalada en servidores, estaciones de trabajo, dispositivos móbiles y en sistemas embebidos.

Debian presenta un sistema de instalación sencillo y eficaz el cual permite instalar Debian de manera sencilla y con poco esfuerzo siempre y cuando el número de instalaciones a ejecutar sea mínimo, pero a medida que este número crece el procedimiento de instalación se hace engorroso y tedioso (téngase en cuenta que durante el proceso de instalación es necesario responder preguntas de configuración y selección de paquetes), por ejemplo si queremos instalar Debian en un laboratorio que cuenta con 15 estaciones de trabajo, tendriamos que repetir este proceso 15 veces, el cual es posible, pero si queremos desplegar Debian en masa por ejemplo 100, 200, 500 o 1000 instalaciones, ya no es prácticamente viable es por ello que los desarrolladores de Debian han creado un sistema que permite realizar instalaciones de forma automática o desatendida partiendo de un fichero de configuración (preseed).

Existen tres métodos que se pueden usar para realizar una instalación desatendida:

  1. Agregar el fichero preseed.cfg a la imagen initrd
  2. Agregar a la imagen ISO el parámetro de booteo: file
  3. Cargar el fichero preseed.cfg desde la red

Puede obtener más información en DebianInstaller/Preseed

En esta entrada vamos a mostrar como hacer una instalación automática o desatendida de Debian GNU/Linux usando el método 1 y hemos tomado como base la siguiente guía DebianInstaller/Preseed/EditIso

1. Descargar la imagen de Debian

En este caso vamos a descargar la imagen "net-install" que permite una instalación mínima, se necesita una conexión a internet ya que los ficheros son descargados desde los repositorios de Debian.

$ curl -#LO https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.2.0-amd64-netinst.iso

Vea Cómo descargar archivos usando curl

2. Instalar xorriso

xorriso es una aplicación que permite manipular una imagen ISO y extraer los ficheros contenidos en la imagen hacia el sistema de ficheros, así como crear una imagen ISO a partir del sistema de ficheros.

$ sudo apt -y install xorriso

3. Extraer los ficheros de la imagen ISO

Con el siguiente comando ponemos los ficheros contenidos en la imagen "net-install" en el sistema de ficheros bajo el DIR isofiles si no existe este DIR xorriso lo crea automáticamente.

$ xorriso -osirrox on -indev debian-10.1.0-amd64-netinst.iso  -extract / isofiles/

4. Descargar la plantilla preseed

Debian pone a disposición una plantilla básica la cual nos sirve como punto de partida para nuestro sistema de instalación desatendida.

$ curl -#L https://www.debian.org/releases/stable/example-preseed.txt -o preseed.cfg

Vea Cómo descargar archivos usando curl

5. Modificar la plantilla preseed de acuerdo a nuestra necesidades

5.1. Establecer el locale

Con la siguiente configuración garantizamos que el idioma del sistema operativo sea inglés con una codificacíon UTF-8 y una configuracíon de fechas y monedas inglés Estados Unidos.

d-i debian-installer/language string en
d-i debian-installer/country string US
d-i debian-installer/locale string en_US.UTF-8

5.2. Establecer la zona horaria

Establecemos el reloj del hardware a UTC, especificamos nuestra zona horaria a America/New_York (es permitido cualquier valor encontrado en: /usr/share/zoneinfo/) y queremos que nuestro sistema use NTP para sincronizar la hora.

d-i clock-setup/utc boolean true
d-i time/zone string America/New_York
d-i clock-setup/ntp boolean true

5.3. Configuramos el teclado

Seleccionamos el teclado US

d-i keyboard-configuration/xkb-keymap select us

5.4. Configurando la red

Con la siguiente configuración le decimos al sistema de instalación que trate de configurar la red de forma automática, que el nombre del host es debian10, que el dominio es localdomain y que el servidor espejo que vamos a usar para descargar los paquetes a instalar es http.us.debian.org como puede darse cuenta también es posible especificar un proxy el cual en este caso es vacío.

d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string debian10
d-i netcfg/get_domain string localdomain
# Evita mostrar el dialogo WEP
d-i netcfg/wireless_wep string
d-i mirror/country string manual
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

5.5. Configurando los usuarios

Deshabilitamos la autenticación del usuario root, en su lugar vamos a usar sudo con un usuario estándard, en este caso vamos a encryptar la contraseña.

d-i passwd/root-login boolean false
d-i passwd/user-fullname string Ponga Aqui el nombre completo del usuario a crear
d-i passwd/username string nombre_de_usuario
d-i passwd/user-password-crypted password Ponga aqui la contraseña encryptada

Para encryptar la contraseña puede ejecutar el siguiente comando: $ python3 -c 'import crypt; print(crypt.crypt("mipass", crypt.METHOD_SHA512))'

5.6. Particionado

Establecemos que el método de particionado es LVM, si existe una partición antigua elimine la misma y continúe con el proceso de instalación, el esquema de particionado es atomic lo que significa una sola partición y que use todo el espacio del disco duro, también se puede especificar home que significa una partición separada para /home y multi particiones separadas para /home, /var, /tmp.

d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto/choose_recipe select atomic
d-i partman-auto-lvm/guided_size string max

La siguiente configuración evita que partman solicite confirmación para continuar con el proceso de particionado.

d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

5.7. Selección de paquetes

Además del sistema base solo instalamos un servidor SSH

tasksel tasksel/first multiselect
d-i pkgsel/include string openssh-server

5.8. Desactivar el envío de estadísticas

popularity-contest popularity-contest/participate boolean false

5.9. Algunas configuraciones para GRUB

d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i grub-installer/bootdev  string default

5.10. Configuraciones finales

# Evita el mensaje de que la instalación ha sido completada
d-i finish-install/reboot_in_progress note
# Evita escanear al imagen netinst/DVD
d-i apt-setup/cdrom/set-first boolean false
d-i apt-setup/cdrom/set-next boolean false
d-i apt-setup/cdrom/set-failed boolean false

Puede descargar un fichero preseed con la configuración anteriormente descrita en: Debian preseed

6. Añadir el fichero preseed a initrd

Primero establecemos permisos de escritura al DIR install.amd

$ chmod +w -R isofiles/install.amd/

Descompactamos la imagen initrd

$ gunzip isofiles/install.amd/initrd.gz

Agregamos el fichero preseed.cfg a initrd

$ echo preseed.cfg | cpio -H newc -o -A -F isofiles/install.amd/initrd

Creamos nuevamente la imagen initrd

$ gzip isofiles/install.amd/initrd

Quitamos el permiso de escritura al DIR install.amd

$ chmod -w -R isofiles/install.amd/

7. Modificando parámetros del sistema de arranque ISOLINUX

Este sistema de arranque es compatible con https://es.wikipedia.org/wiki/BIOS

Debemos editar el fichero isolinux/isolinux.cfg y eliminar la línea default vesamenu.c32 esto evitará que se muestre el menú de instalación de Debian.

8. Modificando parámetros del sistema de arranque GRUB

Este sistema de arranque es compatible con UEFI

Debemos editar el fichero boot/grub/grub.cfg y agregar las siguientes líneas las cuales evitarán que se muestre el menú de instalación de Debian.

set timeout_style=hidden
set timeout=0
set default=1

9. Generando la suma MD5 (md5sum.txt)

$ cd isofiles/
$ chmod a+w md5sum.txt
$ md5sum `find -follow -type f` > md5sum.txt
$ chmod a-w md5sum.txt

10. Creando la imagen ISO

$ cd ..
$ chmod a+w isofiles/isolinux/isolinux.bin
$ genisoimage -r -J -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o preseed-debian-10.1.0-amd64-netinst.iso isofiles

3 comentarios en “¿Cómo instalar Debian de forma automática o desatendida?”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.