From 717fcb9c81d2bc3cc7a84a3ebea6572d7ff0f5cf Mon Sep 17 00:00:00 2001 From: doc Date: Mon, 30 Jun 2025 20:06:28 +0000 Subject: uploading documentation --- procedures/buildandbpack.sh | 59 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100755 procedures/buildandbpack.sh (limited to 'procedures/buildandbpack.sh') diff --git a/procedures/buildandbpack.sh b/procedures/buildandbpack.sh new file mode 100755 index 0000000..cdc3564 --- /dev/null +++ b/procedures/buildandbpack.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +set -euo pipefail + +# 🔧 CONFIGURATION +FREEBSD_BRANCH="stable/14" +KERNCONF="STORAGE_ZFS" +MAKEJOBS=$(nproc) +BUILDROOT="$HOME/freebsd-kernel-build" +OBJDIR="/tmp/obj" +TOOLCHAIN_BIN="/tmp/amd64.amd64/usr/bin" + +# 🌱 Step 1: Prep Environment +mkdir -p "$BUILDROOT" +cd "$BUILDROOT" + +# 🔻 Step 2: Get FreeBSD source +if [ ! -d "src" ]; then + git clone https://git.freebsd.org/src.git + cd src + git checkout "$FREEBSD_BRANCH" +else + cd src + git fetch + git checkout "$FREEBSD_BRANCH" + git pull +fi + +# 🛠️ Step 3: Build FreeBSD toolchain (only once) +if [ ! -d "$TOOLCHAIN_BIN" ]; then + echo "[*] Bootstrapping FreeBSD native-xtools..." + bmake XDEV=amd64 XDEV_ARCH=amd64 native-xtools +else + echo "[*] Toolchain already built. Skipping..." +fi + +# 🔁 Step 4: Prepare kernel config +cd "$BUILDROOT/src/sys/amd64/conf" +if [ ! -f "$KERNCONF" ]; then + cp GENERIC "$KERNCONF" + echo "[*] Created new kernel config from GENERIC: $KERNCONF" +fi + +# 🧠 Step 5: Build the kernel +export PATH="$TOOLCHAIN_BIN:$PATH" +export MAKEOBJDIRPREFIX="$OBJDIR" + +cd "$BUILDROOT/src" +bmake -j"$MAKEJOBS" buildkernel TARGET=amd64 TARGET_ARCH=amd64 KERNCONF="$KERNCONF" + +# 📦 Step 6: Package the kernel +KERNEL_OUT="$OBJDIR/$BUILDROOT/src/amd64.amd64/sys/$KERNCONF" +PACKAGE_NAME="freebsd-kernel-$(date +%Y%m%d-%H%M%S).tar.gz" + +tar czf "$BUILDROOT/$PACKAGE_NAME" -C "$KERNEL_OUT" kernel + +# 📣 Done +echo "✅ Kernel build and package complete." +echo "➡️ Output: $BUILDROOT/$PACKAGE_NAME" + -- cgit v1.2.3