Files
netboot/rebuild-squashfs.sh
2026-01-30 22:51:37 +01:00

57 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# Rebuild squashfs image from existing rootfs (after making changes)
set -e
BUILD_DIR="/srv/netboot/build"
IMAGE_DIR="/srv/netboot/images"
HTTP_DIR="/srv/netboot/http"
VERSION=$(date +%Y%m%d-%H%M)
if [ ! -d "$BUILD_DIR/rootfs" ]; then
echo "Error: $BUILD_DIR/rootfs does not exist"
echo "Run build-image.sh first to create the rootfs"
exit 1
fi
echo "Rebuilding squashfs image version $VERSION"
# Copy kernel and initrd
mkdir -p $IMAGE_DIR/$VERSION
cp $BUILD_DIR/rootfs/boot/vmlinuz-* $IMAGE_DIR/$VERSION/vmlinuz
cp $BUILD_DIR/rootfs/boot/initrd.img-* $IMAGE_DIR/$VERSION/initrd.img
echo "Creating squashfs image..."
mksquashfs $BUILD_DIR/rootfs \
$IMAGE_DIR/$VERSION/filesystem.squashfs \
-comp xz \
-Xbcj x86 \
-b 1M \
-noappend
# Create version info
cat > $IMAGE_DIR/$VERSION/version.txt <<EOF
Build Date: $(date)
Ubuntu Version: Noble (24.04)
Kernel: $(ls $BUILD_DIR/rootfs/boot/vmlinuz-* | sed 's/.*vmlinuz-//')
Image Size: $(du -h $IMAGE_DIR/$VERSION/filesystem.squashfs | awk '{print $1}')
Rebuilt from modified rootfs
EOF
echo "Image created: $IMAGE_DIR/$VERSION/"
ls -lh $IMAGE_DIR/$VERSION/
# Update latest symlink
ln -sfn $VERSION $IMAGE_DIR/latest
# Deploy to HTTP directory
echo "Deploying to HTTP directory..."
rsync -av $IMAGE_DIR/$VERSION/ $HTTP_DIR/
ln -sfn $VERSION $HTTP_DIR/latest
echo ""
echo "Build complete! Version: $VERSION"
echo "Files available at: $HTTP_DIR/"
echo ""
echo "Old versions kept in: $IMAGE_DIR/"