forked from espos/rootfs
refactor: improve build script structure and update package installation steps
This commit is contained in:
+91
-47
@@ -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 "========================================"
|
||||||
Reference in New Issue
Block a user