From 2b867db6734a8382cca269e443d6b85b97ad0b9d Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 16 Jul 2026 12:43:33 +0200 Subject: [PATCH] refactor: improve build script structure and update package installation steps --- build-rootfs.sh | 138 +++++++++++++++++++++++++++++++----------------- 1 file changed, 91 insertions(+), 47 deletions(-) diff --git a/build-rootfs.sh b/build-rootfs.sh index c045203..557322f 100644 --- a/build-rootfs.sh +++ b/build-rootfs.sh @@ -6,14 +6,13 @@ set -euo pipefail # EspOS OpenRC RootFS Builder # Debian 13 Trixie + EspOS unstable # -# Genera: +# Output: # espos-openrc-rootfs.tar.xz # # No incluye: # - live user # - escritorio # - instalador -# - configuración ISO # ========================================== @@ -28,12 +27,7 @@ ESPOS_SUITE="espos-unstable" ROOTFS="$(pwd)/rootfs" OUTPUT="espos-openrc-rootfs.tar.xz" - -# Paquete keyring generado previamente KEYRING_PACKAGE="espos-archive-keyring" - - -# Nombre del keyring instalado por el paquete KEYRING_PATH="/usr/share/keyrings/espos-archive-keyring.gpg" @@ -51,17 +45,21 @@ openssh-server openrc dbus elogind +init-system-helpers " + ESPOS_PACKAGES=" base-files +espos-release " + cleanup() { - echo "[+] Desmontando sistemas virtuales" + echo "[+] Cleaning mounts" umount -lf "$ROOTFS/dev/pts" 2>/dev/null || true umount -lf "$ROOTFS/dev" 2>/dev/null || true @@ -74,16 +72,17 @@ trap cleanup EXIT -echo "[+] Eliminando rootfs anterior" +echo "[+] Removing old rootfs" rm -rf "$ROOTFS" -echo "[+] Creando Debian ${DEBIAN_SUITE}" +echo "[+] Creating Debian ${DEBIAN_SUITE} minbase" debootstrap \ + --variant=minbase \ --arch="$ARCH" \ "$DEBIAN_SUITE" \ "$ROOTFS" \ @@ -91,13 +90,14 @@ debootstrap \ -echo "[+] Copiando resolv.conf" +echo "[+] Copying DNS" cp /etc/resolv.conf "$ROOTFS/etc/resolv.conf" -echo "[+] Montando pseudo filesystems" +echo "[+] Mounting virtual filesystems" + mount --bind /dev "$ROOTFS/dev" mount --bind /dev/pts "$ROOTFS/dev/pts" @@ -107,22 +107,28 @@ mount -t sysfs sys "$ROOTFS/sys" - -echo "[+] Actualizando repositorios firmados" +echo "[+] Installing ca-certificates first" chroot "$ROOTFS" apt update - - -echo "[+] Instalando sistema base" - - chroot "$ROOTFS" apt install -y \ - $BASE_PACKAGES + ca-certificates -echo "[+] Preparando repo EspOS temporal" + +echo "[+] Blocking systemd packages" + + +cat > "$ROOTFS/etc/apt/preferences.d/no-systemd" < "$ROOTFS/etc/apt/sources.list.d/espos.list" </dev/null || true + + + +echo "[+] Installing EspOS archive keyring" + + +if ls "$ROOTFS/tmp/packages/${KEYRING_PACKAGE}"*.deb >/dev/null 2>&1 +then + + chroot "$ROOTFS" dpkg -i \ + /tmp/packages/${KEYRING_PACKAGE}*.deb + +else + + echo "[ERROR] Missing ${KEYRING_PACKAGE}.deb" + exit 1 + +fi + + + +echo "[+] Switching EspOS repo to signed-by" cat > "$ROOTFS/etc/apt/sources.list.d/espos.list" </dev/null || true + + + +echo "[+] Configuring OpenRC init" ln -sf /sbin/openrc-init "$ROOTFS/sbin/init" -echo "[+] Eliminando systemd" - - -chroot "$ROOTFS" apt purge -y \ - systemd \ - systemd-sysv \ - 2>/dev/null || true - - - -echo "[+] Configurando hostname" +echo "[+] Configuring hostname" echo "espos" > "$ROOTFS/etc/hostname" -echo "[+] Configurando locales" +echo "[+] Generating locales" chroot "$ROOTFS" bash -c " @@ -190,7 +232,7 @@ locale-gen -echo "[+] Habilitando servicios base OpenRC" +echo "[+] Enabling OpenRC base services" chroot "$ROOTFS" rc-update add devfs sysinit || true @@ -199,18 +241,19 @@ chroot "$ROOTFS" rc-update add sysfs boot || true -echo "[+] Limpiando APT" +echo "[+] Cleaning apt" chroot "$ROOTFS" apt clean + rm -rf "$ROOTFS/var/lib/apt/lists/*" rm -rf "$ROOTFS/tmp/*" -echo "[+] Creando rootfs comprimido" +echo "[+] Creating rootfs archive" tar \ @@ -221,8 +264,9 @@ tar \ echo -echo "======================================" -echo " EspOS OpenRC rootfs creado" +echo "========================================" +echo " EspOS OpenRC rootfs created" echo +echo " Output:" echo " $OUTPUT" -echo "======================================" \ No newline at end of file +echo "========================================" \ No newline at end of file