* Imagenes de instalación de las versiones estables para Mageia y OpenMandriva.

OpenMandriva: Mageia (Mageia 9) 20/Agosto/2023 - Anuncio, Descargas.

Blogdrake recomienda descargar las imágenes de instalación (iso) vía torrent para evitar corrupción de datos, aprovechar mejor su ancho de banda y mejorar la difusión de las distribuciones.

Configuración de Draklive

En la sección anterior sobre los pasos de Draklive vimos qué era lo que podíamos hacer con Draklive. Ahora veremos cómo configurar Draklive para que lo haga.

Existen dos tipos de configuraciones distintas e íntimamente relacionadas en Draklive. Por un lado están los parámetros, que podríamos decir que es una configuración a alto nivel (qué escritorio vamos a usar, la arquitectura del sistema...), y por otro está la, llamémosla, configuración pura y dura (qué esquema de montaje usará el sistema live, los scripts personalizados para el pivotaje en initrd...).

Por lo general, la configuración pura y dura contempla un abanico de posibilidades muy amplio, y mediante los parámetros se concreta la configuración final a usar. Por ejemplo, la configuración pura y dura puede indicar qué esquema de montaje se utiliza con cada tipo de medio, y en los parámetros se indica el tipo de medio específico para el sistema que vamos a generar.

Zambullámonos de lleno en los detalles de la configuración cuales pingüinos emperador en las gélidas aguas antárticas.

Parámetros

Empecemos con los parámetros. Éstos se especifican en un archivo de configuración del tipo clave=valor. Es decir, se escribe el nombre del parámetro, un símbolo igual, y a la derecha su valor, por ejemplo:

chroot=/home/dani/MandrivaLive/chroot

Detalle importante, los valores no pueden llevar espacios. Incluso si se utiliza un caracter de escape como "\ " hará cosas raras. Así que la lección es clara: no uses espacios. Si tus rutas contienen un espacio, ya puedes ir renombrando los directorios. Y si para los valores que no sean rutas necesitas algo parecido a un espacio, utiliza - o _.

Aunque pueda parecer que con todas estas restricciones los parámetros no van a servir de mucho, creédme, cumplen de sobra su cometido.

A continuación se presentarán los parámetros que pueden verse en el archivo de parámetros por defecto de Mandriva (junto a otros reconocidos por Draklive pero no presentes en dicha configuración) y su función. Es importante destacar, no obstante, que no todos son necesarios por un lado, y por otro, que uno puede definir sus propios parámetros y usarlos tanto en la configuración pura y dura como en el script de instalación del paso install.

Y lógicamente, cuando aquí se mencione que un parámetro es innecesario no se puede preveer si el lector le habrá dado un uso específico e inesperado en su configuración. Cada cuál sabrá si la "innecesariedad" (no sé cómo no pertenezco ya a la R.A.E.) se aplica en su caso o no.

  • repository: la ruta hasta el repositorio que se utilizará en el paso install para instalar el sistema. Innecesario si no se usa el paso install (aunque impresincible si se usa).
  • additional_repository: la ruta hasta un repositorio extra que se utilizará en el script de instalación. Innecesario si no se usa el paso install, o si se usa pero con un script de instalación que no necesite dicho parámetro.
  • chroot: la ruta hasta el directorio chrooteado en que se instalará el sistema live. Imprescindible, ya que será el directorio del que Draklive obtendrá el sistema a convertir en live. Como es imprescindible, tiene un valor por defecto, /var/lib/draklive/chroot.
  • builddir: la ruta hasta el directorio en que se guardarán los resultados de ejecutar Draklive. Obviamente, imprescindible ;) Como es imprescindible, tiene un valor por defecto, /var/lib/draklive/build.
  • arch: la arquitectura del sistema live (i586 o x86_64, típicamente la primera para poder usar el sistema live en un mayor rango de ordenadores). Innecesario si no se usa el paso install, aunque si no se indica ningún valor, se asigna por defecto a la arquitectura del sistema en que se esté ejecutando Draklive.
  • desktop: el entorno de escritorio que se utilizará. Típicamente, un sistema live sólo contiene un único entorno de escritorio, ya que el espacio es un bien muy preciado. No obstante, no hay problema alguno en incluir varios si hay espacio de sobra, como en un LiveDVD. Dicho esto, debe añadirse además que no sólo es innecesario si no se usa el paso install, sino que además es innecesario si se usa dicho paso pero el parámetro no se usa ni en la configuración pura y dura ni en el script de instalación.
  • media: el medio en el que se grabará el sistema live (usb o cd (incluso si es un DVD)). En contra de lo que pudiese parecer, este parámetro no se usa en Draklive en sí mismo. Se utiliza en la configuración pura y dura para especificar el que sí utilizará Draklive. Es decir, en los parámetros se indica si será USB o CD, y en la configuración, dependiendo del parámetro, se configura una cosa u otra distinta. Así que, si bien no es del todo necesario, si es recomendable, ya que permite usar una misma configuración a partir de la que generar sistemas live para distintos medios cambiando el parámetro (todo esto, lógicamente, si se sigue el mismo esquema que presenta la configuración por defecto de Mandriva).
  • region: identifica la región y con ella los diversos idiomas que engloba para los que se generará el sistema live. De esta manera puede generarse el mismo sistema live en distintos idiomas (ya que las localizaciones de cada idioma ocupan bastante espacio, y generalmente no pueden incluirse todas en un único sistema live). Innecesario si no se usa el paso install, o si se usa pero con un script de instalación y una configuración que no necesiten dicho parámetro.
  • pack: francamente, no lo tengo muy claro. Parece que indica paquetes de idiomas extra que llevará el sistema live comprimidos en SquashFS, y que se montarán sobre el sistema normal con UnionFS... pero es una mera elucubración. Ante la duda... dejarlo vacío es una gran solución, sobretodo porque funciona.
  • name: el nombre de nuestro sistema live (por ejemplo, mandriva-linux). Innecesario, aunque recomendado.
  • product: el producto concreto (por ejemplo, tutorial-edition). No del todo necesario (se usa en la configuración y en el script de instalación), aunque recomendado.
  • version: la versión (por ejemplo, 2008-spring). Innecesario, aunque recomendado.
  • commercial: indica si el sistema live contiene paquetes comerciales o no (1 ó 0). Se utiliza en el script de instalación para decidir si instalar ciertos paquetes, y en la configuración pura y dura para incluir ciertos archivos. Es un claro ejemplo de parámetro usado por Mandriva para crear sus sistemas live. Totalmente innecesario: NO podemos incluir software comercial empaquetado por Mandriva en nuestros sistemas live. E incluso aunque estuviese equivocado y resulta que podría hacerlo... yo, igualmente, NO lo haría. Punto ;)
  • default_user: el usuario por defecto de nuestro sistema live. Innecesario si no se usa el paso install, o si se usa pero con un script de instalación y una configuración que no necesiten dicho parámetro.

Queda mencionar un pequeño detalle sobre los parámetros. A la hora de almacenar los resultados de las ejecuciones de Draklive, se utiliza el directorio indicado por el parámetro builddir. Ahora bien, dentro de él se creará un subdirectorio con un nombre compuesto a partir de algunos de los parámetros más significativos. Si alguno de los parámetros no está establecido (tanto porque el valor esté vacío, como porque el parámetro no aparezca en absoluto), dicho parámetro no aparecerá en el nombre.

El nombre del directorio será de la siguiente forma:
name-product-version-desktop-region-media-arch

Con todo esto, podemos ver que los parámetros permiten generar, por ejemplo, el mismo sistema live para USB y para CD sin más que cambiar el parámetro correspondiente. O, usando el paso install, generar el mismo sistema live cambiando el entorno de escritorio. O los idiomas que contiene. Mmmm, de qué me sonará todo esto... ;)

Configuración

Una vez vistos los parámetros pasemos a la configuración pura y dura, que a partir de ahora y para abreviar pasará a llamarse simplemente configuración.

La configuración es otro mundo completamente distinto a los parámetros, y mucho más complejo. El archivo de configuración debe escribirse en el lenguaje de programación Perl, lo que le da un toque mayor de complejidad si no lo conoces.

Ahora bien, aunque leer puedo leer más o menos Perl, actualmente no sé programar en Perl, pero eso no me impide haber hecho sistemas live, así que no hay que asustarse. Como se verá en el ejemplo, lo más fácil es empezar con una configuración ya escrita como la por defecto de Mandriva y modificarla. Incluso sin saber Perl, intuitivamente (y con un poco de ayuda de tutoriales de Perl ;) ) uno se puede defender lo suficiente en la mayor parte de los casos.

La terminología que voy a emplear a continuación creo que es la correcta, pero dado que no sé de Perl podría estar mal. Perl hackers, invoco vuestra corrección.

El archivo de configuración es, básicamente, un array asociativo. Pueden declararse variables y cosas así si se necesitan, pero lo primordial es el array asociativo. Un array asociativo es una estructura de datos en la que, como su nombre indica, se asocia una cadena de caracteres, llamada clave, con un determinado valor. Sí, como en el archivo de parámetros, salvo porque aquí el valor puede ser un número, una cadena de caracteres cualquiera o una referencia, lo que en la práctica implica un array normal, un array asociativo, una variable cualquiera e incluso subrutinas (funciones). Lógicamente esto da unas posibilidades mucho mayores.

Además, los valores pueden ser condicionales, de forma que un elemento sólo aparezca dependiendo de si se cumple o no cierta condición. Así es como se puede tener un archivo de configuración general y, utilizando condicionales, los elementos de la configuración que finalmente verá Draklive dependerá de lo que se indique en los parámetros.

A continuación veremos los distintos elementos (pares clave-valor) que pueden usarse en la configuración. Dichos elementos están sacados directamente del archivo de configuración por defecto de Mandriva. Es decir, que quizás Draklive soporte incluso más elementos de configuración, aunque lo normal es que si los hubiese se usasen en la configuración (sino no tendría mucho sentido haberlos implementado ;) ).

En todos los valores que se utiliza una ruta relativa, el directorio base se indica en las opciones de Draklive.

  • workdir: parece un elemento que quedó olvidado de antiguas versiones de Draklive, ya que no se utiliza en todo el código de éste.
  • system: esta entrada es un array asociativo.
    • root: dónde está el sistema a instalar o instalado (según el paso) a partir del que generar el sistema live. No obstante, en Draklive parece usarse el parámetro de la configuración en lugar de este elemento.
    • repository: el repositorio desde el que instalar, aunque es más de lo mismo, ya que en Draklive se utiliza directamente el parámetro en lugar del elemento de la configuración.
    • auto_install: la ruta donde encontrar el script de auto-instalación de Mandriva para el paso install.
    • install_env: esta entrada es un array asociativo para especificar variables de entorno utilizables desde el script de auto-instalación. Las variables se podrán utilizar en dicho script mediante $ENV{claveVariableDeEntorno}. Las variables de entorno usadas en la configuración por defecto simplemente hacen accesible los parámetros de configuración al script de instalación. Los parámetros pueden obtenerse mediante $live->{settings}{claveParametro}.
    • hide_media_dirs: no tengo ni idea :)
    • preselect_kdm_user: preselecciona un usuario en KDM, siendo el valor el nombre del usuario en cuestión. Se usa en el subpaso post-install. Esto, que yo sepa, no es arranque automático del entorno gráfico con un usuario. Esa funcionalidad se especifica en el script de instalación, de forma que además es aplicable (si no me equivoco) con otros gestores de conexión como GDM.
    • langs_always: una lista con los códigos de los lenguajes base. En el paso install se establece la variable de entorno DRAKLIVE_LANGS a una lista con todos los idiomas que deben estar disponibles en el sistema. Dicha variable se utiliza en el script de instalación (por defecto de Mandriva) en el elemento {locale}{langs} para instalar dichos idiomas. Los idiomas dependerán de la región para la que se configure el sistema live, por lo que el elemento langs_always permite asegurar un idioma base común a todas (generalmente el inglés, ya que es el idioma base en el software libre, y sino todos, casi todos los programas están disponibles en dicho idioma).
    • files: lista de archivos a copiar en la post-instalación. Su principal utilidad es la de copiar archivos de configuración al sistema para poder ajustar lo que haya hecho la instalación automatizada. Cada elemento de la lista es, a su vez, otra lista que contiene la ruta al archivo a copiar (en el sistema real), la ruta completa del archivo destino (en el sistema a instalar), y un array asociativo indicando los atributos del archivo (clave mode) y si no debe instalarse (clave no_install). Desconozco la utilidad del elemento no_install, aunque es opcional, y si no se indica todo ocurre como se esperaría (es decir, los archivos se copian y punto).
    • remove_files: archivos a borrar del sistema en el subpaso de post-instalación.
    • module_options: creo que las opciones pasadas a los módulos en initrd... pero no las tengo todas conmigo.
    • exclude_modules: excluye módulos de initrd... o algo así... Vamos, que ni idea :P
    • additional_modules: copia módulos adicionales en initrd.
    • modules_conf: ¿array asociativo? con la configuración de los módulos a aplicar en el subpaso de post-instalación. Tampoco las tengo todas conmigo. Los módulos no son lo mío, no :P
    • stage2_updates: permite indicar a drakx_in_chroot (el instalador) actualizaciones al stage2 en la instalación. Ni idea de cómo funciona oiga.
    • patches: lista con las rutas a los diversos archivos de parche a aplicar en el subpaso de post-instalación.
    • erase_rpms: lista con los nombres de los paquetes a borrar en el subpaso de post-instalación.
    • rpms: lista con las rutas a los paquetes rpm a instalar en el subpaso de post-instalación. Atención, rutas a paquetes rpm, nada de nombres de paquetes. Los paquetes no se instalan desde los repositorios, sino que se obtienen directamente de la ruta indicada. Incluso si no se desea instalar ningún rpm, el elemento debe aparecer como una lista vacía si se utiliza la post-instalación (suena a bug...).
    • disable_services: lista con los nombres de los servicios a desactivar en el subpaso de post-instalación.
    • vga_mode: el modo VGA en el que se mostrará el arranque del sistema. Vamos, la resolución y colores de la pantalla mientras está cargando el sistema live. Aquí puede verse una tabla con los posibles valores.
    • gfxboot: si el cargador de arranque será gráfico o no. No afecta a la barra de progreso indicando cómo avanza la carga, eso es otro tema que yo sepa.
    • initrd_pre_pivot: cadena de caracteres con las órdenes a ejecutar antes de que se lleve a cabo el pivotaje en initrd. Mediante "trucos" de Perl pueden convertirse varias líneas en apariencia independientes en una única cadena de caracteres, como se hace en la configuración por defecto. Este elemento no está disponible en el Draklive de Mandriva 2008.1 y anteriores.
    • initrd_post: cadena de caracteres con las órdenes a ejecutar tras el pivotaje. De nuevo la magia de Perl puede ayudarnos a conseguir una única cadena de caracteres.
    • postInstall: cadena de caracteres con las órdenes a ejecutar al final del paso de post-instalación. Supongo que no hace falta que repita lo de la magia de Perl y la cadena de caracteres única, ¿verdad? ;)
    • additional_media: lista con repositorios adicionales a utilizar en la post-instalación. Cada elemento de la lista es a su vez un array asociativo. Mirando el código de Draklive, parece que contienen elementos name (el nombre del repositorio), path (la ruta hasta él), opcionalmente distrib (si es un soporte de instalación desde el que obtener todos los repositorios) y opcionalmente packages (qué paquetes instalar del repositorio). No obstante, nunca tuve que utilizarlo, así que tampoco sé qué hay de cierto en mis palabras ;)
  • loopbacks: esta entrada es un array asociativo. Poco más puedo contaros, porque no tengo ni idea de lo que hace ni por qué :)
  • regions: array asociativo en el que el valor de cada entrada es una lista de códigos de lenguaje. En la instalación se instalarán los paquetes de idioma para todos los indicados en la región seleccionada, más los indicados en lans_always. La región se indica en los parámetros, y si no se indica ninguna sólo se instalarán los indicados en langs_always. Los paquetes de idiomas ocupan lo suyo (de ahí que haya varias ediciones de Mandriva One cada una con un conjunto de idiomas distinto), por lo que es mejor instalar sólo los que vayamos a necesitar.
  • packs: parece servir para crear paquetes (no en el sentido de rpm, sino en el sentido de conjunto de cosas) de idiomas comprimidos en SquashFS de forma que, teniendo un sistema live, se pueda aumentar el número de idiomas que soporta montando dichos paquetes con UnionFS. Pero es una simple elucubración, y nunca lo utilicé realmente. Esto es cosa de profesionales, para un sistema live casero es un "poco muy" excesivo.
  • media: esta entrada es un array asociativo para especificar las características del medio en el que se almacenará el sistema live.
    • storage: el medio en que se almacenará el sistema live: usb o cdrom (también aplicable para DVDs).
    • bootlader_timeout: tiempo de espera antes de que el cargador de arranque proceda con la opción por defecto. Si no se indica ninguno, Draklive utiliza un tiempo por defecto de 4 segundos. En general el tiempo puede ponerse a 1, ya que en un sistema live típicamente habrá un único kernel con el que arrancar.
    • mount_options: las opciones de montaje para el medio. Básicamente afectará a qué podrá hacerse con el propio medio una vez montado. Por ejemplo, desde el sistema live ya arrancado, qué permisos tendrá la propia memoria USB.
    • extra_boot: los medios adicionales desde los que se podrá arrancar el sistema live, además del propio medio indicado en storage. En esencia se usa para hacer CDs de arranque para LiveUSBs.
    • source: permite asignar una etiqueta al medio. La etiqueta servirá para identificar al medio en el arranque del sistema live, y también será el nombre que se muestre cuando conectemos el USB o introduzcamos el CD en un ordenador cualquiera. Por defecto, las etiquetas son MDVCDROOT para CD/DVDs y MDVUSBROOT para memorias USB.

      En el caso de sistemas de archivos FAT (como en una memoria USB), aunque podamos ponerle más, en la práctica la etiqueta no tendrá más de 11 caracteres y además estará en mayúsculas. Entre las revisiones 231195 y 242486 (25/10/2007 y 13/05/2008), lo que incluye al Draklive de Mandriva 2008.1, hay un bug debido al cual las etiquetas con letras minúsculas no se convierten de forma automática a mayúsculas, de modo que initrd no encuentra la partición a montar y falla en el arranque.

    • title: el nombre del sistema live que se mostrará en el cargador de arranque.
    • files: parece que copia los archivos al medio del sistema live. Es decir, no al sistema base a partir del que se generará el live, sino al medio mismo a la hora de hacer la imagen maestra. Es decir, que además de directorios boot y loopbacks, la raíz de la memoria USB o del CD/DVD tendrá los archivos y directorios aquí indicados.
    • remove_files: lo mismo que el anterior, pero eliminando archivos y no del sistema live en sí, sino de donde se copian temporalmente antes de pasarlos al live. No sé para qué se utiliza, la verdad :)
  • mount: el esquema de montaje a utilizar. Aunque podemos definir nuestro propio esquema de montaje aquí, lo normal será utilizar alguno de los que Draklive trae por defecto. Aunque hay alguno más, los principales son el esquema de montaje volátil con UnionFS y SquashFS, $custom{mounts}{volatile_squash_union o MDV::Draklive::Mounts::volatile_squash_union (el segundo con Draklive posterior a noviembre del 2008), y el esquema de montaje persistente con UnionFS y SquashFS, $custom{mounts}{squash_union} o MDV::Draklive::Mounts::squash_union. Ambos soportan la opción de utilizar módulos, que como ya adivinarás no tengo ni idea de para qué sirve. El persistente, además, permite indicar tamaño mínimo/por defecto y tamaño máximo, con las particularidades ya explicadas en la documentación del paso loop.

Ya conocemos los pasos de Draklive, y ahora acabamos de ver cómo configurarlo. Terminemos de ver cómo se usa Draklive con las opciones de ejecución.