Archiso (Español)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Estado de la traducción: esta traducción de Archiso fue revisada el 2018-12-11. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Archiso es un pequeño conjunto de scripts de bash capaz de compilar imagenes live en CD/DVD/USB plenamente funcionales basadas en Arch Linux. Es una herramienta muy genérica para generar imágenes oficiales, de manera que puede ser usada potencialmente para generar cualquier cosa, desde sistemas de rescate o discos de instalacion, hasta sistemas live CD/DVD/USB para intereses especiales, y quién sabe qué más. Simplemente, si involucra a Arch en una montaña brillante, puede hacerlo. El corazón y alma de Archiso es mkarchiso. Todas sus opciones están documentadas en la ayuda de utilización, de manera que su uso directo no será tratado aquí. En su lugar, este artículo actuará como guía para crear sus propios medios live en poco de tiempo.

Si necesita únicamente un resumen técnico de los requisitos y los pasos de compilación, véase también la documentación oficial del proyecto.

Preparar la instalación

Nota: Se recomienda actuar como root en todos los pasos siguientes. Si no es así, es muy probable que tenga problemas con los permisos más adelante.

Antes de empezar, necesitamos hacernos con los scripts de archiso que llevan a cabo gran parte del trabajo, para ello instalaremos el paquete archiso o (archiso-gitAUR).

Archiso viene con dos «perfiles»: releng y baseline.

  • Si desea crear una versión live totalmente personalizada de Arch Linux, con todos sus programas y configuraciones favoritas preinstalados, utilice releng.
  • Si solo desea crear el soporte live más básico, sin paquetes preinstalados y una configuración minimalista, utilice baseline.

Ahora, copie el perfil de su elección en un directorio (archlive en el ejemplo siguiente) donde puede realizar ajustes y compilarlo. Ejecute lo siguiente, reemplazando perfil con releng o baseline.

# cp -r /usr/share/archiso/configs/perfil/ ~/archlive
  • Si está utilizando el perfil baseline para crear una imagen de instalación mínima, no necesitará hacer ninguna personalización y puede ir directamente a #Compilar la ISO

Configurar el soporte live

Esta sección detalla la configuración de la imagen que va a crear, premitiéndole definir los paquetes y configuraciones que quiere que contenga la imagen.

Dentro del directorio archlive creado según se ha indicado en #Preparar la instalación hay varios archivos y directorios; Solo nos interesan algunos de estos, principalmente:

  • el directorio packages.x86_64: aquí es donde se listan, línea por línea, los paquetes que desea instalar, y;
  • el directorio airootfs: este directorio actúa como una superposición o cubierte y es donde se realizan todas las personalizaciones.

En general, todas las tareas administrativas que normalmente haría después de una instalación nueva, excepto para la instalación de paquetes, pueden incluirse en archlive/airootfs/root/customize_airootfs.sh. Debe escribirse el script desde la perspectiva del nuevo entorno, por lo que la raíz / en la secuencia de órdenes del script se refiere a la raíz de la iso live que se creará.

Instalar paquetes

Edite las listas de paquetes en packages.x86_64 para indicar qué paquetes se instalarán en el soporte live.

Nota: Si desea utiliza un gestor de ventanas en el Live CD, debe agregar los controladores de vídeo,necesarios y correctos, o el gestor de ventanas puede congelarse al cargar.

Repositorio local personalizado

Con el fin de preparar paquetes personalizados o paquetes de AUR (Español)/Arch Build System (Español), también podría crear un repositorio local personalizado. Si desea admitir múltiples arquitecturas, se deben tomar precauciones para evitar que se produzcan errores. Cada arquitectura debe tener su propio árbol de directorios:

$ tree ~/customrepo/ | sed "s/$(uname -m)/<arch>/g"
/home/archie/customrepo/
└── <arch>
    ├── customrepo.db -> customrepo.db.tar.xz
    ├── customrepo.db.tar.xz
    ├── customrepo.files -> customrepo.files.tar.xz
    ├── customrepo.files.tar.xz
    └── personal-website-git-b99cce0-1-<arch>.pkg.tar.xz

1 directory, 5 files

Luego puede agregar su repositorio colocando lo siguiente en ~/archlive/pacman.conf, encima de las otras entradas del repositorio (para darle la máxima prioridad):

~/archlive/pacman.conf
...
# custom repository
[customrepo]
SigLevel = Optional TrustAll
Server = file:///home/user/customrepo/$arch
...

El ejecutable repo-add verifica si el paquete es apropiado. Si este no es el caso, se encontrará con mensajes de error similares a este:

==> ERROR: '/home/archie/customrepo/<arch>/foo-<arch>.pkg.tar.xz' does not have a valid database archive extension.

Evitar la instalación de paquetes que pertenecen al grupo base

De forma predeterminada, /usr/bin/mkarchiso, un script que utiliza ~/archlive/build.sh, llama a uno de los arch-install-scripts denominado pacstrap sin el indicador -i, lo que hace que Pacman (Español) no espere la confirmación del usuario para instalar los paquetes durante el proceso de instalación.

Al incluir en la lista negra los paquetes del grupo base agregándolos a la línea IgnorePkg en el archivo ~/archlive/pacman.conf, Pacman (Español) pregunta si aún deben instalarse, lo que significa que lo harán cuando se omita la confirmación del usuario. Para deshacerse de estos paquetes hay varias opciones:

  • Engorroso: añada el indicador -i a cada línea que llame a pacstrap en /usr/bin/mkarchiso.
  • Limpio: cree una copia de /usr/bin/mkarchiso en la que agregue el indicador y adapte ~/archlive/build.sh para que llame a la versión modificada del script de mkarchiso.
  • Avanzado: cree una función para ~/archlive/build.sh que elimine explícitamente los paquetes después de la instalación base. Esto le dejaría la comodidad de no tener que pulsar tantas veces «intro» durante el proceso de instalación.

Instalar paquetes de multilib

Para instalar paquetes desde el repositorio multilib simplemente descoméntelo del repositorio en ~/archlive/pacman.conf:

pacman.conf
[multilib]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

Añadir archivos a la imagen

Nota: Debe ser superusuario para hacer esto, no cambie el nombre del usuario titular de ninguno de los archivos que copie, todo dentro del directorio airootfs debe ser propiedad de root. El nombre del usuario titular correcto se resolverá automáticamente.

El directorio airootfs actua como una cubierta, piense en él como el directorio raíz, /, de su sistema anfitrión, de manera que cada archivo que ponga dentro se copiará al arranque.

Así que, si tiene un conjunto de scripts de iptables en su sistema anfitrión que quiere poder usar en la posterior imagen live, cópielos así:

# cp -r /etc/iptables ~/archlive/airootfs/etc

Colocar archivos del directorio home del usuario en la imagen live es un poco diferente. No los ponga en airootfs/home, en lugar de eso cree un directorio skel dentro de airootfs/ y colóquelos ahí. Después añadiremos las órdenes relevantes al archivo customize_airootfs.sh que vamos a crear para copiarlos en el arranque y definir los permisos.

Primero, cree el directorio skel:

# mkdir ~/archlive/airootfs/etc/skel

Ahora copie los archivos de «home» al directorio skel, por ejemplo para .bashrc:

# cp ~/.bashrc ~/archlive/airootfs/etc/skel/

Cuando se ejecuta ~/archlive/airootfs/root/customize_airootfs.sh y se crea un nuevo usuario, los archivos del directorio skel se copiarán automáticamente a la nueva carpeta de inicio («home»), con los permisos establecidos correctamente.

De manera similar, es necesario tener cuidado con los archivos de configuración especiales que residen en algún lugar descendiente de la jerarquía. Como ejemplo, el archivo de configuración /etc/X11/xinit/xinitrc reside en una ruta que puede sobrescribirse al instalar un paquete. Para emplazar el archivo de configuración, se debe colocar el archivo xinitrc personalizado en ~/archlive/airootfs/etc/skel/ y luego modificar customize_airootfs.sh para moverlo apropiadamente .

Cargador de arranque

El archivo por defecto debería funcionar bien, de manera que no debería necesitar tocarlo.

Debido a la naturaleza modular de isolinux, puedes usar un montón de añadidos, ya que todos los archivos *.c32 se pueden copiar y están disponibles. Eche un vistazo al sitio oficial de syslinux y al repositorio git de archiso. Utilizando dichos añadidos, es posible hacer menús visualmente atractivos y complejos. Consulte esto.

UEFI Secure Boot

Si desea que su Archiso pueda iniciarse en un entorno donde esté activado UEFI Secure Boot, debe usar un cargador de arranque firmado. Puede seguir las instrucciones en Secure Boot#Using a signed boot loader.

Gestor de inicio de sesión

Iniciar X con el arranque el sistema, en un sistema basado en systemd (Español), las cosas se manejan activando el archivo .service de su gestor de inicio de sesión. Si sabe qué enlace necesita para el archivo .service en cuestión: perfecto. Si no, puede averiguarlo fácilmente, en el caso de que esté usando el mismo gestor de pantallas en su sistema. Basta con escribir::

# ls -l /etc/systemd/system/display-manager.service

Ahora cree el mismo enlace de software en ~/archlive/airootfs/etc/systemd/system. Para LXDM:

# ln -s /usr/lib/systemd/system/lxdm.service ~/archlive/airootfs/etc/systemd/system/display-manager.service

Esto activará LXDM al inicio del sistema en su sistema live.

Por otro lado, puede activar el servicio en airootfs/root/customize_airootfs.sh junto con otros servicios que estés activados allí.

Si desea que el entorno gráfico se inicie automáticamente durante el arranque, asegúrese de editar airootfs/root/customize_airootfs.sh y reemplace

systemctl set-default multi-user.target

con

systemctl set-default graphical.target

Cambiar el acceso automáticamente

La configuración para el inicio de sesión automático de getty se encuentra en airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf.

Puede modificar este archivo para cambiar el usuario que inicie sesión automáticamente:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin isouser --noclear %I 38400 linux

O elimínelo por completo para desactivar el inicio de sesión automático.

Compilar la ISO

Ya está listo para poner sus archivos en la .iso, la cual podrá grabar en un CD o USB:

Primero cree el directorio out/(opcional, build.sh lo creará si no existe):

# mkdir ~/archlive/out/

luego dentro de ~/archlive, ejecute:

# ./build.sh -v

Este script descargará e instalará los paquetes que especificó en work/*/airootfs, creará las imágenes del kernel y de init, aplicará las personalizaciones y finalmente compilará la iso en la carpeta out/.

Reconstruir la ISO

La reconstrucción de la ISO después de las modificaciones no tiene soporte oficial. Sin embargo, es fácilmente factible aplicando dos pasos. Primero tiene que eliminar los archivos de bloqueo presentes en el directorio de trabajo:

# rm -v work/build.make_*

Además, se requiere editar el script airootfs/root/customize_airootfs.sh, y añadir una orden id al comienzo de la línea useradd como se muestra aquí. De lo contrario, la reconstrucción se detiene en este punto porque el usuario que se va a agregar ya existe FS#41865.

! id arch && useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/zsh arch

También elimine los datos persistentes, como los usuarios creados, o los enlaces simbólicos, como /etc/sudoers.

Las reconstrucciones pueden acelerarse ligeramente editando el script pacstrap (ubicado en /bin/pacstrap) y cambiando lo siguiente en la línea 361:

Antes:

if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then

Después:

if ! pacman -r "$newroot" -Sy --needed "${pacman_args[@]}"; then

Esto aumenta la velocidad del arranque inicial, ya que no tiene que descargar ni instalar ninguno de los paquetes básicos que ya están instalados.

Utilizar la ISO

Véase la Guía de instalación para conocer distintas opciones.

Ejecutar la ISO en QEMU

 qemu-system-x86_64 \
   -accel kvm \
   -boot order=d,menu=on,reboot-timeout=5000 \
   -m size=3072,slots=0,maxmem=$((3072*1024*1024)) \
   -k en \
   -name archiso,process=archiso_0 \
   -drive file=/path/to/archlinux-yyyy.mm.dd-x86_64.iso,media=cdrom,readonly=on \
   -display sdl \
   -vga virtio \
   -enable-kvm \
   -no-reboot \
   -no-shutdown

Véase también

Documentación y tutoriales