Live manual Debian Live

# Debian Live Manual

# Personalización del comportamiento en tiempo de ejecución.

552

# 10. Personalización del comportamiento en tiempo de ejecución.

553

Toda la configuración que se hace en tiempo de ejecución es realizada por live-config. Éstas son algunas de las opciones más comunes de live-config en las que los usuarios están más interesados. Se puede encontrar una lista completa de todas las posibilidades en la página de manual de live-config.

554

10.1 Personalización del usuario por defecto del sistema en vivo

555

Una consideración importante es que el usuario por defecto del sistema en vivo es creado por live-boot en el arranque y no live-build durante la creación de la imagen. Ésto no sólo influye dónde se introducen los materiales relacionados con este usuario durante la creación de la imagen tal y como se explica en Includes locales en Live/chroot sino también a cualquier grupo y a los permisos asociados con el usuario por defecto del sistema en vivo.

556

You can specify additional groups that the live user will belong to by using any of the possibilities to configure live-config. For example, to add the live user to the `fuse` group, you can either add the following file in `config/includes.chroot/etc/live/config.conf.d/10-user-setup.conf`:

557

LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth fuse"

558

o utilizar `live-config.user-default-groups=audio,cdrom,dip,floppy,video,plugdev,netdev,powerdev,scanner,bluetooth,fuse` como parámetro de arranque.

559

Además, es posible cambiar el usuario por defecto "user" y la contraseña por defecto "live". Si se desea cambiarlos por cualquier motivo, se puede conseguir de forma sencilla tal y como se explica a continuación:

560

Cambiar el nombre del usuario por defecto es tan sencillo como especificarlo en la configuración:

561

$ lb config --bootappend-live "boot=live components username=live-user"

562

Una posible forma de cambiar la contraseña por defecto es usando un script gancho (hook) tal y como se describe en Scripts gancho en tiempo de arranque. Para conseguirlo se puede usar el script gancho «passwd» de `/usr/share/doc/live-config/examples/hooks`, ponerle un prefijo adecuado (p.ej. 2000-passwd) y añadirlo a `config/includes.chroot/lib/live/config/`

563

10.2 Personalización de las variantes locales e idioma

564

Cuando el sistema en vivo arranca, el idioma está implicado en dos pasos:

565

- Generar las variantes locales

566

- Establecer la distribución del teclado

567

La variante local predeterminada en la creación de un sistema en vivo es `locales=en_US.UTF-8`. Para definir la variante local que se debe generar, se puede utilizar el parámetro `locales` en la opción `--bootappend-live` de `lb config`, p.ej.

568

$ lb config --bootappend-live "boot=live components locales=de_CH.UTF-8"

569

Se pueden especificar diversas variantes locales separándolas con comas.

570

Este parámetro se puede utilizar en la línea de comandos del kernel, al igual que los parámetros de configuración del teclado indicados a continuación. Es posibe configurar una variante local con `idioma_país` (en cuyo caso se utiliza el tipo de codificación por omisión) o también con la expresión completa `idioma_país.codificación`. La lista de todas las variantes locales está en `/usr/share/i18n/SUPPORTED`.

571

`live-config` se encarga de la configuración del teclado de la consola y del entorno gráfico X utilizando el paquete `console-setup`. Para configurarlos se puede utilizar los parámetros de arranque `keyboard-layouts`, `keyboard-variants`, `keyboard-options` y `keyboard-model` a través de la opción `--bootappend-live`. Se puede encontrar una lista de opciones válidas para estos parámetros en `/usr/share/X11/xkb/rules/base.lst`. Para hallar la distribución del teclado y la variante que corresponde a un idioma se puede buscar el nombre en inglés de la nación donde se habla el idioma, por ejemplo:

572

$ egrep -i '(^!|german.*switzerland)' /usr/share/X11/xkb/rules/base.lst
! model
! layout
ch German (Switzerland)
! variant
legacy ch: German (Switzerland, legacy)
de_nodeadkeys ch: German (Switzerland, eliminate dead keys)
de_sundeadkeys ch: German (Switzerland, Sun dead keys)
de_mac ch: German (Switzerland, Macintosh)
! option

573

Cada variante muestra una descripción de la disposición que aplica.

574

Normalmente, sólo es necesario configurar la disposición del teclado. Por ejemplo, para obtener los ficheros de la variante local de la disposición del teclado alemán y suizo-alemán en X utilizar:

575

$ lb config --bootappend-live "boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch"

576

Sin enbargo, para casos de uso muy específicos, se puede incluir otros parámetros. Por ejemplo, para configurar un sistema Francés con una disposición French-Dvorak (también llamado Bepo) en un teclado USB TypeMatrix EZ-Reach 2030, utilizar:

577

$ lb config --bootappend-live \
"boot=live components locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-variants=bepo keyboard-model=tm2030usb"

578

Para cada una de las variables de configuración del teclado `keyboard-*` se puede especificar varios valores separados por comas. A excepción de `keyboard-model`, que sólo acepta un valor. En la página de manual `keyboard(5)` se explican los detalles y algunos ejemplos de cómo utilizar las variables `XKBMODEL`, `XKBLAYOUT`, `XKBVARIANT` y `XKBOPTIONS`. Si se especifican diferentes valores en `keyboard-variants` estos se corresponderan uno a uno con los valores `keyboard-layouts` (ver `setxkbmap(1)` opción `-variant`). Se admiten valores vacíos; por ejemplo para definir dos distribuciones de teclado, la que se usa por omisión US QWERTY y otra US Dvorak, utilizar:

579

$ lb config --bootappend-live \
"boot=live components keyboard-layouts=us,us keyboard-variants=,dvorak"

580

10.3 Persistencia

581

Un paradigma de un cd en vivo («live cd» N. del T.) es ser un sistema pre-instalado que funciona desde medios de almacenamiento de sólo lectura, como un CD-ROM, donde los cambios y las modificaciones no se guardan tras reiniciar el sistema en que se ejecuta.

582

Un sistema en vivo es una generalización de este paradigma pero que es compatible con otros medios de almacenamiento, no sólo en CDs. Aún así, en su comportamiento predeterminado, se debe considerar un sistema de sólo lectura y todos los cambios en tiempo de ejecución del sistema se pierden al apagar el equipo.

583

La «persistencia» es un nombre común que se da a los diferentes tipos de soluciones para guardar algunos o todos los cambios realizados durante la ejecución tras reiniciar el sistema. Para entender cómo funciona es útil saber que incluso si el sistema se inicia y se ejecuta desde los medios de almacenamiento de sólo lectura, las modificaciones de los ficheros y directorios se escriben en medios de escritura, por lo general en la memoria ram (tmpfs) y los datos guardados en la ram se pierden al reiniciar.

584

Los datos almacenados en esta memoria ram se pueden guardar en un soporte grabable, como un medio de almacenamiento local, un recurso compartido en red o incluso en una sesión de un CD/DVD regrabable en multisesión. Todos estos medios son compatibles de diferentes maneras y todos, menos el último, requieren un parámetro de arranque especial que se especificará en el momento del arranque: `persistence`.

585

Si se usa el parámetro de arranque `persistence` (y no se usa la opción `nopersistence`), se busca en los medios de almacenamiento locales (p.ej. discos duros, llaves USB) volúmenes con persistencia durante el arranque. Es posible restringir qué tipos de volúmenes persistentes se pueden usar especificando ciertos parámetros de arranque descritos en la página del manual de live-boot(7). Un volumen persistente es cualquiera de los siguientes:

586

- una partición, identificada por su nombre GPT.

587

- Un sistema de ficheros, identificado por su etiqueta de sistema de ficheros.

588

- una fichero imagen situado en la raíz de cualquier sistema de ficheros que pueda ser leido (incluso una partición NTFS de otro sistema operativo), identificado por su nombre de fichero.

589

La etiqueta del volumen para las overlays debe ser `persistence` pero será ignorado a menos que contenga en su raíz un fichero llamado `persistence.conf` que se utiliza para personalizar la persistencia del volumen, esto es, especificar los directorios que se desea guardar en un volumen de persistencia después de reiniciar. Ver El fichero persistence.conf para más detalles.

590

He aquí algunos ejemplos de cómo preparar un volumen para ser usado para la persistencia. Puede ser, por ejemplo, una partición en un disco duro o en una llave usb creada con, p.ej.

591

# mkfs.ext4 -L persistence /dev/sdb1

592

Ver Usar el espacio libre en el dispositivo USB.

593

Si ya existe una partición en el dispositivo, sólo se tiene que cambiar la etiqueta con uno de los siguientes:

594

# tune2fs -L persistence /dev/sdb1 # for ext2,3,4 filesystems

595

Un ejemplo de cómo crear un fichero imagen basado en ext4 para ser usado para la persistencia:

596

$ dd if=/dev/null of=persistence bs=1 count=0 seek=1G # for a 1GB sized image file
$ /sbin/mkfs.ext4 -F persistence

597

Después de crear el fichero imagen, a modo de ejemplo, para hacer `/usr` persistente pero únicamente guardando los cambios que se realizan en ese directorio en lugar de todos los contenidos de `/usr`, se puede utilizar la opción "union". Si el fichero imagen se encuentra en el directorio home, copiarlo a la raíz del sistema de ficheros del disco duro y montarlo en `/mnt` como se explica a continuación:

598

# cp persistence /
# mount -t ext4 /persistence /mnt

599

Después, crear el fichero `persistence.conf` añadiendo contenido y desmontar el fichero imagen.

600

# echo "/usr union" >> /mnt/persistence.conf
# umount /mnt

601

Ahora, reiniciar y arrancar el medio en vivo con el parámetro de arranque "persistence".

602

10.3.1 El fichero persistence.conf

603

Un volumen con la etiqueta `persistence` debe ser configurado a través de un fichero `persistence.conf` para crear directorios arbitrarios persistentes. Ese fichero, situado en el sistema de ficheros raíz del volumen, controla que directorios hace persistentes y también de que manera.

604

En la página de manual de persistence.conf(5) se explica en detalle cómo se configura el montaje de las overlays, pero un sencillo ejemplo es suficiente para la mayoría de los casos. Supongamos que queremos crear nuestro directorio home y APT cache persistentes en un sistema de ficheros ext4 en la partición /dev/sdb1:

605

# mkfs.ext4 -L persistence /dev/sdb1
# mount -t ext4 /dev/sdb1 /mnt
# echo "/home" >> /mnt/persistence.conf
# echo "/var/cache/apt" >> /mnt/persistence.conf
# umount /mnt

606

Entonces reiniciamos. Durante el primer arranque los contenidos de `/home` y `/var/cache/apt` se copiarán en el volumen persistente y a partir de ese momento todos los cambios en esos directorios se guardarán allí. Tener en cuenta que las rutas listadas en el fichero `persistence.conf` no pueden contener espacios en blanco ni los componentes especiales `.` y `..`. Además, ni `/lib`, `/lib/live` (o ninguno de sus sub-directorios) ni `/` pueden hacerse persistentes montándolos de forma personalizada. Una posible alternativa a esta limitación es añadir `/ union` al fichero `persistence.conf` para conseguir una persistencia completa.

607

10.3.2 Utilizar varios medios persistentes

608

Existen diferentes métodos para utilizar múltiples volúmenes de persistencia para diferentes casos de uso. Por ejemplo, utilizar varios volúmenes al mismo tiempo o seleccionar sólo uno, entre varios, para fines muy específicos.

609

Se puede usar diferentes volúmenes de overlays al mismo tiempo (con sus propios ficheros `persistence.conf`) pero si varios volúmenes hacen que un mismo directorio sea persistente, sólo uno de ellos será usado. Si dos unidades montadas están "anidadas" (es decir, una es un sub-directorio de la otra) el directorio superior será montado antes que el inferior de este modo no quedará uno escondido por el otro. La personalización de los montajes anidadados es problemática si están listados en el mismo fichero `persistence.conf`. Consultar la página de manual de persistence.conf(5) para ver como manejar ese caso si realmente es necesario. (aclaración: normalmente no lo es).

610

Un posible caso de uso: Si se desea guardar los datos del usuario, es decir `/home` y los datos del superusuario, es decir `/root` en particiones diferentes, crear dos particiones con la etiqueta `persistence` y añadir un fichero `persistence.conf` en cada una de este modo, `# echo "/home" > persistence.conf` para la primera partición que guardará los ficheros del usuario y `# echo "/root" > persistence.conf` para la segunda partición que almacenará los ficheros del superusuario. Finalmente, utilizar el parámetro de arranque `persistence`.

611

Si un usuario necesita un almacenamiento persistente múltiple del mismo tipo para diferentes lugares o pruebas, tales como `private` y `work`, el parámetro de arranque `persistence-label` usado junto con el parámetro de arranque `persistence` permitirá medios de almacenamiento persistentes múltiples pero únicos. Un ejemplo sería, si un usuario desea utilizar una partición persistente etiquetada `private` para datos de uso personal como los marcadores de un navegador o similares utilizaría los parámetros de arranque: `persistence` `persistence-label=private`. Y para almacenar datos relacionados con el trabajo, como documentos, proyectos de investigación o de otro tipo, utilizaría los parámetros de arranque: `persistence` `persistence-label=work`.

612

Es importante recordar que cada uno de estos volúmenes, `private` y `work`, necesita también un fichero `persistence.conf` en su raíz. La página de manual de live-boot contiene más información acerca de cómo utilizar estas etiquetas con los antiguos nombres que se utilizaban en anteriores versiones.

613

10.3.3 Utilizar persistencia con cifrado

614

Utilizar la persistencia significa que algunos datos sensibles pueden estar expuestos a riesgo. Especialmente si los datos persistentes se almacenan en un dispositivo portable, como una memoria USB o un disco duro externo. Es entonces cuando el cifrado cobra sentido. Incluso aunque todo el procedimiento puede parecer complicado debido a la cantidad de pasos que hay que hacer, es muy fácil manejar particiones cifradas con live-boot. Para utilizar luks, que es el tipo de cifrado soportado, se necesita instalar cryptsetup tanto en la máquina que va a crear la partición cifrada como en el sistema en vivo con que se va a utilizar la partición persistente cifrada.

615

Para instalar cryptsetup en nuestra máquina:

616

# apt-get install cryptsetup

617

Para instalar cryptsetup en nuestro sistema en vivo, lo añadimos a una package-lists:

618

$ lb config
$ echo "cryptsetup cryptsetup-initramfs" > config/package-lists/encryption.list.chroot

619

Una vez se tiene el sistema en vivo con cryptsetup, básicamente, sólo se necesita crear una nueva partición, cifrarla y arrancar con los parámetros `persistence` y `persistence-encryption=luks`. Podríamos habernos anticipado a este paso y haber añadido esos parámetros de arranque siguiendo el procedimiento habitual:

620

$ lb config --bootappend-live "boot=live components persistence persistence-encryption=luks"

621

Vamos a entrar en detalles para quien que no esté familiarizado con el cifrado. En el siguiente ejemplo vamos a utilizar una partición en un dispositivo usb que corresponde a `/dev/sdc2`. Tener en cuenta que es necesario determinar qué partición es la que se va a utilizar en cada caso específico.

622

El primer paso es conectar la memoria usb y determinar de qué dispositivo se trata. El método recomendado para los dispositivos en live-manual es utilizando `ls -l /dev/disk/by-id`. Después de eso, crear una nueva partición y, a continuación, cifrarla con una frase de contraseña de la siguiente manera:

623

# cryptsetup --verify-passphrase luksFormat /dev/sdc2

624

A continuación, abrir la partición luks en el mapeador de dispositivos virtuales. Se puede utilizar cualquier nombre que se desee. Aquí utilizamos live como ejemplo:

625

# cryptsetup luksOpen /dev/sdc2 live

626

El siguiente paso es llenar el dispositivo con ceros antes de crear el sistema de ficheros:

627

# dd if=/dev/zero of=/dev/mapper/live

628

Ahora, estamos listos para crear el sistema de ficheros. Nótese que estamos añadiendo la etiqueta `persistence` para que el dispositivo se monte como almacén de persistencia durante el arranque.

629

# mkfs.ext4 -L persistence /dev/mapper/live

630

Para continuar con nuestra configuración, necesitamos montar el dispositivo, por ejemplo, en `/mnt`.

631

# mount /dev/mapper/live /mnt

632

Y crear el fichero `persistence.conf` en la raíz de la partición. Esto es, como se ha explicado antes, estrictamente necesario. Ver El fichero persistence.conf.

633

# echo "/ union" > /mnt/persistence.conf

634

Entonces, desmontar el punto de montaje:

635

# umount /mnt

636

Y opcionalmente, aunque puede ser una buena manera de salvaguardar los datos que acabamos de agregar a la partición, podemos cerrar el dispositivo:

637

# cryptsetup luksClose live

638

Vamos a resumir el proceso. Hasta ahora, hemos creado un sistema vivo capaz de utilizar el cifrado, que se puede copiar en una memoria usb como se explica en Copiar una imagen ISO híbrida en un dispositivo USB. También hemos creado una partición cifrada, que se puede crear en la misma memoria usb para llevarla a todas partes y hemos configurado la partición cifrada para ser utilizada como almacén de persistencia. Así que ahora, sólo tenemos que arrancar el sistema en vivo. En el momento del arranque, live-boot nos preguntará la frase de contraseña y montará la partición cifrada para ser utilizada para la persistencia.