#!/bin/bash # extract-kernel-config.sh — Pull kernel config from Tiny Core rootfs # Usage: ./hack/extract-kernel-config.sh [path-to-core.gz] set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" ROOTFS_DIR="${ROOTFS_DIR:-$PROJECT_ROOT/build/rootfs-work}" COREGZ="${1:-$ROOTFS_DIR/rootfs}" OUTPUT="$PROJECT_ROOT/build/cache/kernel-config" if [ -d "$COREGZ" ]; then # Rootfs already extracted ROOTFS="$COREGZ" elif [ -f "$COREGZ" ]; then # Extract core.gz TMPDIR=$(mktemp -d) cd "$TMPDIR" zcat "$COREGZ" | cpio -idm 2>/dev/null ROOTFS="$TMPDIR" fi # Try /proc/config.gz in rootfs if [ -f "$ROOTFS/proc/config.gz" ]; then zcat "$ROOTFS/proc/config.gz" > "$OUTPUT" echo "==> Extracted kernel config to: $OUTPUT" "$PROJECT_ROOT/build/config/kernel-audit.sh" "$OUTPUT" else echo "Kernel config not found in rootfs /proc/config.gz" echo "" echo "Alternative: Boot the Tiny Core ISO in QEMU and run:" echo " zcat /proc/config.gz > /tmp/kernel-config" echo " # Then copy it out" echo "" echo "Or check if /boot/config-* exists in the ISO" # Try looking in /boot for f in "$ROOTFS"/boot/config-*; do [ -f "$f" ] || continue cp "$f" "$OUTPUT" echo "==> Found boot config: $f → $OUTPUT" "$PROJECT_ROOT/build/config/kernel-audit.sh" "$OUTPUT" exit 0 done fi [ -d "${TMPDIR:-}" ] && rm -rf "$TMPDIR"