Archiso (Español)
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
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
releng
para hacer una imagen totalmente personalizada, puede seguir en #Configurar el soporte live.
- 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.
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 apacstrap
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
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