forked from espos/liveiso
First Commit
This commit is contained in:
Vendored
+46
@@ -0,0 +1,46 @@
|
|||||||
|
pipeline {
|
||||||
|
agent any
|
||||||
|
|
||||||
|
environment {
|
||||||
|
ROOTFS_JOB = "espos-rootfs"
|
||||||
|
}
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Clean') {
|
||||||
|
steps {
|
||||||
|
deleteDir()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage("Checkout") {
|
||||||
|
steps {
|
||||||
|
checkout scm
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Download RootFS') {
|
||||||
|
steps {
|
||||||
|
copyArtifacts(
|
||||||
|
projectName: env.ROOTFS_JOB,
|
||||||
|
selector: lastSuccessful()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Build ISO') {
|
||||||
|
steps {
|
||||||
|
sh '''
|
||||||
|
chmod +x build-liveiso.sh
|
||||||
|
sudo ./build-liveiso.sh
|
||||||
|
'''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
post {
|
||||||
|
success {
|
||||||
|
archiveArtifacts(
|
||||||
|
artifacts: '*.iso',
|
||||||
|
fingerprint: true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
WORKDIR="$(pwd)/work"
|
||||||
|
ROOTFS="$WORKDIR/rootfs"
|
||||||
|
ISO="$WORKDIR/iso"
|
||||||
|
|
||||||
|
rm -rf "$WORKDIR"
|
||||||
|
|
||||||
|
mkdir -p "$ROOTFS"
|
||||||
|
mkdir -p "$ISO/live"
|
||||||
|
|
||||||
|
echo "=== Extracting RootFS ==="
|
||||||
|
|
||||||
|
tar --zstd -xf espos-openrc-rootfs.tar.zst -C "$ROOTFS"
|
||||||
|
|
||||||
|
echo "=== Mounting pseudo filesystems ==="
|
||||||
|
|
||||||
|
mount --bind /dev "$ROOTFS/dev"
|
||||||
|
mount --bind /proc "$ROOTFS/proc"
|
||||||
|
mount --bind /sys "$ROOTFS/sys"
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
umount -lf "$ROOTFS/dev" 2>/dev/null || true
|
||||||
|
umount -lf "$ROOTFS/proc" 2>/dev/null || true
|
||||||
|
umount -lf "$ROOTFS/sys" 2>/dev/null || true
|
||||||
|
}
|
||||||
|
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
echo "=== Configuring Live User ==="
|
||||||
|
|
||||||
|
chroot "$ROOTFS" bash <<'EOF'
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
apt update
|
||||||
|
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt install -y \
|
||||||
|
sudo \
|
||||||
|
live-boot \
|
||||||
|
live-config
|
||||||
|
|
||||||
|
if ! id liveuser >/dev/null 2>&1; then
|
||||||
|
useradd -m -s /bin/bash liveuser
|
||||||
|
fi
|
||||||
|
|
||||||
|
passwd -d liveuser
|
||||||
|
|
||||||
|
echo "liveuser ALL=(ALL) NOPASSWD:ALL" \
|
||||||
|
> /etc/sudoers.d/liveuser
|
||||||
|
|
||||||
|
chmod 440 /etc/sudoers.d/liveuser
|
||||||
|
|
||||||
|
mkdir -p /etc/conf.d
|
||||||
|
|
||||||
|
cat >/etc/conf.d/agetty.tty1 <<CFG
|
||||||
|
agetty_options="--autologin liveuser --noclear"
|
||||||
|
CFG
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "=== Copying Kernel ==="
|
||||||
|
|
||||||
|
KERNEL="$(ls "$ROOTFS"/boot/vmlinuz-* | head -n1)"
|
||||||
|
INITRD="$(ls "$ROOTFS"/boot/initrd.img-* | head -n1)"
|
||||||
|
|
||||||
|
cp "$KERNEL" "$ISO/live/vmlinuz"
|
||||||
|
cp "$INITRD" "$ISO/live/initrd"
|
||||||
|
|
||||||
|
echo "=== Building SquashFS ==="
|
||||||
|
|
||||||
|
mksquashfs \
|
||||||
|
"$ROOTFS" \
|
||||||
|
"$ISO/live/filesystem.squashfs" \
|
||||||
|
-comp zstd \
|
||||||
|
-e boot
|
||||||
|
|
||||||
|
echo "=== Creating GRUB Layout ==="
|
||||||
|
|
||||||
|
mkdir -p "$ISO/boot/grub"
|
||||||
|
|
||||||
|
cat > "$ISO/boot/grub/grub.cfg" <<EOF
|
||||||
|
set timeout=5
|
||||||
|
|
||||||
|
menuentry "EspOS OpenRC Live" {
|
||||||
|
linux /live/vmlinuz boot=live quiet
|
||||||
|
initrd /live/initrd
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "=== Creating ISO ==="
|
||||||
|
|
||||||
|
grub-mkrescue \
|
||||||
|
-o EspOS-OpenRC-Live.iso \
|
||||||
|
"$ISO"
|
||||||
|
|
||||||
|
echo "=== Done ==="
|
||||||
|
|
||||||
|
ls -lh EspOS-OpenRC-Live.iso
|
||||||
Reference in New Issue
Block a user