refactor: improve build script structure and update package installation steps

This commit is contained in:
2026-07-16 12:43:33 +02:00
parent 7200224822
commit 2b867db673
+91 -47
View File
@@ -6,14 +6,13 @@ set -euo pipefail
# EspOS OpenRC RootFS Builder # EspOS OpenRC RootFS Builder
# Debian 13 Trixie + EspOS unstable # Debian 13 Trixie + EspOS unstable
# #
# Genera: # Output:
# espos-openrc-rootfs.tar.xz # espos-openrc-rootfs.tar.xz
# #
# No incluye: # No incluye:
# - live user # - live user
# - escritorio # - escritorio
# - instalador # - instalador
# - configuración ISO
# ========================================== # ==========================================
@@ -28,12 +27,7 @@ ESPOS_SUITE="espos-unstable"
ROOTFS="$(pwd)/rootfs" ROOTFS="$(pwd)/rootfs"
OUTPUT="espos-openrc-rootfs.tar.xz" OUTPUT="espos-openrc-rootfs.tar.xz"
# Paquete keyring generado previamente
KEYRING_PACKAGE="espos-archive-keyring" KEYRING_PACKAGE="espos-archive-keyring"
# Nombre del keyring instalado por el paquete
KEYRING_PATH="/usr/share/keyrings/espos-archive-keyring.gpg" KEYRING_PATH="/usr/share/keyrings/espos-archive-keyring.gpg"
@@ -51,17 +45,21 @@ openssh-server
openrc openrc
dbus dbus
elogind elogind
init-system-helpers
" "
ESPOS_PACKAGES=" ESPOS_PACKAGES="
base-files base-files
espos-release
" "
cleanup() cleanup()
{ {
echo "[+] Desmontando sistemas virtuales" echo "[+] Cleaning mounts"
umount -lf "$ROOTFS/dev/pts" 2>/dev/null || true umount -lf "$ROOTFS/dev/pts" 2>/dev/null || true
umount -lf "$ROOTFS/dev" 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" rm -rf "$ROOTFS"
echo "[+] Creando Debian ${DEBIAN_SUITE}" echo "[+] Creating Debian ${DEBIAN_SUITE} minbase"
debootstrap \ debootstrap \
--variant=minbase \
--arch="$ARCH" \ --arch="$ARCH" \
"$DEBIAN_SUITE" \ "$DEBIAN_SUITE" \
"$ROOTFS" \ "$ROOTFS" \
@@ -91,13 +90,14 @@ debootstrap \
echo "[+] Copiando resolv.conf" echo "[+] Copying DNS"
cp /etc/resolv.conf "$ROOTFS/etc/resolv.conf" cp /etc/resolv.conf "$ROOTFS/etc/resolv.conf"
echo "[+] Montando pseudo filesystems" echo "[+] Mounting virtual filesystems"
mount --bind /dev "$ROOTFS/dev" mount --bind /dev "$ROOTFS/dev"
mount --bind /dev/pts "$ROOTFS/dev/pts" mount --bind /dev/pts "$ROOTFS/dev/pts"
@@ -107,22 +107,28 @@ mount -t sysfs sys "$ROOTFS/sys"
echo "[+] Installing ca-certificates first"
echo "[+] Actualizando repositorios firmados"
chroot "$ROOTFS" apt update chroot "$ROOTFS" apt update
echo "[+] Instalando sistema base"
chroot "$ROOTFS" apt install -y \ 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" <<EOF
Package: systemd systemd-sysv libsystemd0
Pin: release *
Pin-Priority: -1
EOF
echo "[+] Adding temporary EspOS repository"
cat > "$ROOTFS/etc/apt/sources.list.d/espos.list" <<EOF cat > "$ROOTFS/etc/apt/sources.list.d/espos.list" <<EOF
@@ -130,25 +136,60 @@ deb [trusted=yes] ${ESPOS_REPO} ${ESPOS_SUITE} main
EOF EOF
echo "[+] Cargando repo..."
chroot "$ROOTFS" apt update echo "[+] Copying local deb packages"
echo "[+] Instalando keyring" mkdir -p "$ROOTFS/tmp/packages"
chroot "$ROOTFS" apt install -y espos-archive-keyring
echo "[+] Cambiando repo a signed-by"
cp ./*.deb "$ROOTFS/tmp/packages/" 2>/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" <<EOF cat > "$ROOTFS/etc/apt/sources.list.d/espos.list" <<EOF
deb [signed-by=${KEYRING_PATH}] ${ESPOS_REPO} ${ESPOS_SUITE} main deb [signed-by=${KEYRING_PATH}] ${ESPOS_REPO} ${ESPOS_SUITE} main
EOF EOF
echo "[+] Actualizando repositorios firmados"
echo "[+] Updating signed repositories"
chroot "$ROOTFS" apt update chroot "$ROOTFS" apt update
echo "[+] Instalando paquetes EspOS"
echo "[+] Installing OpenRC base system"
chroot "$ROOTFS" apt install -y \
$BASE_PACKAGES
echo "[+] Installing EspOS packages"
chroot "$ROOTFS" apt install -y \ chroot "$ROOTFS" apt install -y \
@@ -156,31 +197,32 @@ chroot "$ROOTFS" apt install -y \
echo "[+] Configurando OpenRC como init" echo "[+] Removing remaining systemd packages"
chroot "$ROOTFS" apt purge -y \
systemd \
systemd-sysv \
systemd-timesyncd \
2>/dev/null || true
echo "[+] Configuring OpenRC init"
ln -sf /sbin/openrc-init "$ROOTFS/sbin/init" ln -sf /sbin/openrc-init "$ROOTFS/sbin/init"
echo "[+] Eliminando systemd" echo "[+] Configuring hostname"
chroot "$ROOTFS" apt purge -y \
systemd \
systemd-sysv \
2>/dev/null || true
echo "[+] Configurando hostname"
echo "espos" > "$ROOTFS/etc/hostname" echo "espos" > "$ROOTFS/etc/hostname"
echo "[+] Configurando locales" echo "[+] Generating locales"
chroot "$ROOTFS" bash -c " 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 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 chroot "$ROOTFS" apt clean
rm -rf "$ROOTFS/var/lib/apt/lists/*" rm -rf "$ROOTFS/var/lib/apt/lists/*"
rm -rf "$ROOTFS/tmp/*" rm -rf "$ROOTFS/tmp/*"
echo "[+] Creando rootfs comprimido" echo "[+] Creating rootfs archive"
tar \ tar \
@@ -221,8 +264,9 @@ tar \
echo echo
echo "======================================" echo "========================================"
echo " EspOS OpenRC rootfs creado" echo " EspOS OpenRC rootfs created"
echo echo
echo " Output:"
echo " $OUTPUT" echo " $OUTPUT"
echo "======================================" echo "========================================"