|
|
|
|
|
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.
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.
Se pueden especificar grupos adicionales a los que pertenecerá el usuario por defecto del sistema en vivo mediante el uso de cualquiera de las posibilidades de configuración de live-config. Por ejemplo, para agregar el usuario al grupo fuse, se puede agregar el fichero siguiente a config/includes.chroot/etc/live/config/user-setup.conf:
LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth fuse"
o utilizar live-config.user-default-groups=audio,cdrom,dip,floppy,video,plugdev,netdev,powerdev,scanner,bluetooth,fuse como parámetro de arranque.
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:
Cambiar el nombre del usuario por defecto es tan sencillo como especificarlo en la configuración:
$ lb config --bootappend-live "boot=live components username=live-user"
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/
Cuando el sistema en vivo arranca, el idioma está implicado en dos pasos:
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.
$ lb config --bootappend-live "boot=live components locales=de_CH.UTF-8"
Se pueden especificar diversas variantes locales separándolas con comas.
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.
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:
$ 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
Cada variante muestra una descripción de la disposición que aplica.
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:
$ lb config --bootappend-live "boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch"
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:
$ lb config --bootappend-live \
"boot=live components locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-variants=bepo keyboard-model=tm2030usb"
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:
$ lb config --bootappend-live \
"boot=live components keyboard-layouts=us,us keyboard-variants=,dvorak"
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.
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.
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.
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.
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:
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.
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.
# mkfs.ext4 -L persistence /dev/sdb1
Si ya existe una partición en el dispositivo, sólo se tiene que cambiar la etiqueta con uno de los siguientes:
# tune2fs -L persistence /dev/sdb1 # for ext2,3,4 filesystems
Un ejemplo de cómo crear un fichero imagen basado en ext4 para ser usado para la persistencia:
$ dd if=/dev/null of=persistence bs=1 count=0 seek=1G # for a 1GB sized image file
$ /sbin/mkfs.ext4 -F persistence
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:
# cp persistence /
# mount -t ext4 /persistence /mnt
Después, crear el fichero persistence.conf añadiendo contenido y desmontar el fichero imagen.
# echo "/usr union" >> /mnt/persistence.conf
# umount /mnt
Ahora, reiniciar y arrancar el medio en vivo con el parámetro de arranque "persistence".
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.
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:
# 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
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.
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.
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).
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.
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.
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.
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.
Para instalar cryptsetup en nuestra máquina:
# apt-get install cryptsetup
Para instalar cryptsetup en nuestro sistema en vivo, lo añadimos a una package-lists:
$ lb config
$ echo "cryptsetup" > config/package-lists/encryption.list.chroot
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:
$ lb config --bootappend-live "boot=live components persistence persistence-encryption=luks"
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.
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:
# cryptsetup --verify-passphrase luksFormat /dev/sdc2
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:
# cryptsetup luksOpen /dev/sdc2 live
El siguiente paso es llenar el dispositivo con ceros antes de crear el sistema de ficheros:
# dd if=/dev/zero of=/dev/mapper/live
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.
# mkfs.ext4 -L persistence /dev/mapper/live
Para continuar con nuestra configuración, necesitamos montar el dispositivo, por ejemplo, en /mnt.
# mount /dev/mapper/live /mnt
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.
# echo "/ union" > /mnt/persistence.conf
Entonces, desmontar el punto de montaje:
# umount /mnt
Y opcionalmente, aunque puede ser una buena manera de salvaguardar los datos que acabamos de agregar a la partición, podemos cerrar el dispositivo:
# cryptsetup luksClose live
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.