Instalación desatendida con Debian Preseed

Dependiendo de que distribución usemos podemos crear una instalación del sistema operativo desatendida al igual que también podemos hacer en Windows.

 

En primer lugar pasaremos a conseguir la imagen ISO de Debian desde la cual trabajaremos. Podemos descargarla de este enlace o haciendo una búsqueda en Google o cualquier otro buscador.

En nuestro caso usaremos una imagen con la arquitectura amd64.

 

Una vez descargada la imagen, vamos a copiar su contenido en una carpeta para después hacer unas modificaciones. Para ello usaremos los siguientes comandos una vez estamos ubicados en la ruta donde teneos la ISO.

mkdir /mnt/iso

mount -o loop debian-10.9.0-amd64-netinst.iso /mnt/iso

 

Con los comandos anteriores realizados hemos creador una carpeta en esa ubicación y posteriormente hemos montado la imagen iso en ella. Podemos hacer un ls para ver los archivos resultantes.

Como para crear una imagen desatendida no nos hacen falta todos los archivos que acabamos de ver, vamos a crear una carpeta donde vamos a mover todos los necesarios y crear un enlace simbólico que que apuntará al resto.

mkdir iso-preseed

cd iso-preseed

cp -pr /mnt/iso/install.amd install.amd

cp -pr /mnt/iso/dists dists

cp -pr /mnt/iso/pool pool

cp -pr /mnt/iso/.disk .disk

cp -pr /mnt/iso/isolinux isolinux

ln -s .debian

 

Ahora pasaremos a crear el archivo de respuestas. Lo creamos en nuestro equipo en la ruta iso-preseed/respuestas con el nombre de preseed.cfg

Tendrá el siguiente contenido:

### Localization.Aunque lo modificamos, la selección de pais e idioma ya está automatizada en el txt.cfg, por lo que en este apartado
### podriamos dejarlo sin cambiar.
# Preseeding only locale sets language, country and locale.
d-i debian-installer/locale string es_ES
# The values can also be preseeded individually for greater flexibility.
d-i debian-installer/language string spanish
d-i debian-installer/country string Spain
d-i debian-installer/locale string es_ES.UTF-8
# Optionally specify additional locales to be generated.
d-i localechooser/supported-locales es_ES.UTF-8
# Keyboard selection.Con el teclado ocurre lo mismo que en el apartado anterior, ya esta predefinido.
# keymap is an alias for keyboard-configuration/xkb-keymap
d-i keyboard-configuration/toggle select No toggling
d-i keymap select es
# Disable automatic (interactive) keymap detection.
d-i console-setup/ask_detect boolean true
d-i keyboard-configuration/modelcode string pc105
d-i keyboard-configuration/layoutcode string es
# To select a variant of the selected layout (if you leave this out, the
# basic form of the layout will be used):
d-i keyboard-configuration/variantcode string dvorak
### Network configuration. Configuracion de red. Dejamos la red deshabilitada para que la instalacion sea a partir del DVD.
# Disable network configuration entirely. This is useful for cdrom
# installations on non-networked devices where the network questions,
# warning and long timeouts are a nuisance.
# netcfg will choose an interface that has link if possible. This makes it
# skip displaying a list if there is more than one interface.
d-i netcfg/choose_interface select auto
# Any hostname and domain names assigned from dhcp take precedence over
# values set here. However, setting the values still prevents the questions
# Establecemos un hostname y un dominio para que no se nos pregunte ya que cualquier valor asignado por el dhcp sobreescribirá estos.
d-i netcfg/get_hostname string eq-debian
d-i netcfg/get_domain string
### Mirror settings. Las modificaciones marcadas las extraera del DVD.
# If you select ftp, the mirror/country string does not need to be set.
d-i mirror/country string manual
d-i mirror/http/hostname string ftp.es.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
### Clock and time zone setup. Fecha y hora.En este punto le indicamos para que pais debe tomar la hora y la fecha.
# Controls whether or not the hardware clock is set to UTC.
d-i clock-setup/utc boolean true
# You may set this to any valid setting for $TZ; see the contents of
# /usr/share/zoneinfo/ for valid values.
d-i time/zone string ES/Madrid
# Controls whether to use NTP to set the clock during the install
d-i clock-setup/ntp boolean true
### Partitioning. Particiones y formato.Seleccionamos el modo regular y  atomic.Indicamos aquí que tome todo el disco, y haga las particiones
##comunes para el funcionamiento del sistema utilizando todo el espacio disponible en el disco duro.
## Partitioning example
# If the system has free space you can choose to only partition that space.
# This is only honoured if partman-auto/method (below) is not set.
# Alternatives: custom, some_device, some_device_crypto, some_device_lvm.
d-i partman-auto/init_automatically_partition select biggest_free
# Alternatively, you may specify a disk to partition. If the system has only
# one disk the installer will default to using that, but otherwise the device
# name must be given in traditional, non-devfs format (so e.g. /dev/hda or
# /dev/sda, and not e.g. /dev/discs/disc0/disc).
# For example, to use the first SCSI/SATA hard disk:
# In addition, you’ll need to specify the method to use.
# The presently available methods are:
# – regular: use the usual partition types for your architecture
# – lvm:     use LVM to partition the disk
# – crypto:  use LVM within an encrypted partition
d-i partman-auto/method string regular
# You can choose one of the three predefined partitioning recipes:
# – atomic: all files in one partition
# – home:   separate /home partition
# – multi:  separate /home, /usr, /var, and /tmp partitions
d-i partman-auto/choose_recipe select atomic
# This makes partman automatically partition without confirmation, provided
# that you told it what to do using one of the methods above.
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
# This makes partman automatically partition without confirmation.
d-i partman-md/confirm boolean true
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
d-i passwd/root-password password 56360752
d-i passwd/root-password-again password 56360752
popularity-contest popularity-contest/participate boolean false
### Account setup Cuentas de usuario y contraseñas. Definimos en este punto nombre de usuario y contraseña.
# To create a normal user account.
d-i passwd/user-fullname string Jose
d-i passwd/username string jose
# Normal user’s password, either in clear text
d-i passwd/user-password password 123abc.
d-i passwd/user-password-again password 123abc.
# Set to true if you want to encrypt the first user’s home directory.
##Selecionamos si queremos que encripte la carpete de usuario
d-i user-setup/encrypt-home boolean false
### Package selection. Seleccion de paquetes.
tasksel tasksel/first multiselect ubuntu-desktop
### Boot loader installation. Instalación del arranque de la distro.
# Grub is the default boot loader (for x86). If you want lilo installed
# instead, uncomment this:
# d-i grub-installer/skip boolean true
# To also skip installing lilo, and install no bootloader, uncomment this
# too:
# d-i lilo-installer/skip boolean true
# With a few exceptions for unusual partitioning setups, GRUB 2 is now the
# default. If you need GRUB Legacy for some particular reason, then
# uncomment this:
# d-i grub-installer/grub2_instead_of_grub_legacy boolean true
# This is fairly safe to set, it makes grub install automatically to the MBR
# if no other operating system is detected on the machine.
d-i grub-installer/only_debian boolean true
# This one makes grub-installer install to the MBR if it also finds some other
# OS, which is less safe as it might not be able to boot that other OS.
d-i grub-installer/with_other_os boolean true
d-i grub installer/bootdev string /dev/sda
### Finishing up the installation. Finalizar la instalación.
# Avoid that last message about the install being complete.
# Linea para saltarse el aviso de que la instalación esta completa y que va a reiniciar.
d-i finish-install/reboot_in_progress note
# Monitor autodetection is recommended.
xserver-xorg xserver-xorg/autodetect_monitor boolean true
# Uncomment if you have an LCD display.
#xserver-xorg xserver-xorg/config/monitor/lcd boolean true
# X has three configuration paths for the monitor. Here’s how to preseed
# the «medium» path, which is always available. The «simple» path may not
# be available, and the «advanced» path asks too many questions.
xserver-xorg xserver-xorg/config/monitor/selection-method \
       select medium
xserver-xorg xserver-xorg/config/monitor/mode-list \
       select 1024×768 @ 60 Hz

 

Una vez creado, ya estaría funcional aunque podemos editarlo para adaptarlo a nuestras necesidades..

Algunos ejemplos de modificaciones que podemos realizar son la selección de la ubicación y distribución del teclado:

 

Lo siguiente en la instalación del sistema es la configuración del nombre de la máquina, red y datos del usuario root.

 

 

 

La creación de un nuevo usuario:

 

La zona horaria:

 

El particionado de discos:

 

Seguimos con la parte de configurar el gestor de paquetes, participación de encuesta y selección de paquetes con la siguiente configuración:

 

Para finalizar con este archivo de respuestas configuramos el gestor de arranque y el reinicio tras la instalación con la configuración:

 

Ahora vamos a preparar la imagen. Para ello nos desplazaremos hasta la carpeta isolinux que copiamos a iso-preseed en un paso anterior y editamos el archivo txt.cfg para añadirle una nueva línea:

cd isolinux

nano txt.cfg

 

Y dejamos el contenido del archivo así (acceder a esa url y copiar el contenido):

    https://pastebin.com/3GqY8QUx

 

 

Debido a que hemos realizado cambios en los contenidos de la carpeta islinux, deberemos volver a generar el archivo de sumas de verificación que irá ubicado en la raíz del CD. Ejecutaremos el comando:

md5sum `find ! -name "md5sum.txt" ! -path "./isolinux/*" -follow -type f` > md5sum.txt

 

 En este último paso vamos a generar la imagen iso para utilizarla con los siguientes comandos:

apt-get install genisoimage

genisoimage -o cd-preseed.iso -l -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat iso-preseed

 

Tras realizar estos comandos, vemos que se ha creado un archivo nuevo llamada cd-preseed.iso

 

Este será el que utilicemos para probar si toda la configuración que hemos realizado anteriormente nos a proporcionado una instalación desatendida.

Una vez arranquemos con la ISO que acabamos de crear, veremos la opción desatendida que creamos pasos atrás.