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:
- Agregar el fichero preseed.cfg a la imagen initrd
- Agregar a la imagen ISO el parámetro de booteo: file
- 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
MUY CHULO, SABE DE LO QUE ESCRIBE
A mi me funciono mejor esto a la hora de crear el hash:
find -xdev -type f -exec md5sum {} \; > md5sum.txt
Gracias por la sugerencia.