# Building Linux for ReviveSparc This guide covers building and booting a Linux kernel on the ReviveSparc emulator. ## Supported Kernels | Kernel Version | Status | Notes | |----------------|--------|-------| | 6.12+ | Full | All features working | | 6.6 LTS | Full | Recommended for production | | 6.1 LTS | Full | Older but stable | | 5.15 LTS | Partial | No SMP support | ## Cross-Compilation Setup Install a SPARC64 cross-compiler: ```bash # Debian/Ubuntu sudo apt install gcc-sparc64-linux-gnu # Fedora sudo dnf install cross-gcc-sparc64-linux-gnu # Build from source (see toolchain guide) ./tools/build-toolchain.sh --target=sparc64-linux-gnu ``` ## Building the Kernel ### Get the Source ```bash git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git cd linux git checkout v6.12 ``` ### Apply ReviveSparc Patches ```bash # From the ReviveSparc repository ./tools/apply-kernel-patches.sh /path/to/linux ``` ### Configure ```bash make ARCH=sparc64 CROSS_COMPILE=sparc64-linux-gnu- revivesparc_defconfig ``` Or customize: ```bash make ARCH=sparc64 CROSS_COMPILE=sparc64-linux-gnu- menuconfig ``` ### Build ```bash make ARCH=sparc64 CROSS_COMPILE=sparc64-linux-gnu- -j$(nproc) ``` The kernel image is at `arch/sparc64/boot/image` and `vmlinux` (ELF). ## Building an Initramfs Create a minimal root filesystem: ```bash # Create a simple init script cat > init << 'EOF' #!/bin/busybox /bin/busybox --install -s mount -t proc proc /proc mount -t sysfs sysfs /sys echo "Welcome to ReviveSparc Linux!" exec /bin/sh EOF # Create the initramfs mkdir -p rootfs/{bin,proc,sys,dev,etc} cp init rootfs/ cp /path/to/busybox rootfs/bin/ # Package it cd rootfs find . | cpio -H newc -o | gzip > ../initramfs.gz ``` ## Booting ```bash ./sparc-emu \ -kernel vmlinux \ -initrd initramfs.gz \ -append "console=ttyS0,115200 root=/dev/ram rdinit=/init" \ -nographic ``` ### Command-Line Options | Option | Description | |--------|-------------| | `-kernel` | Path to the kernel vmlinux | | `-initrd` | Path to the initramfs image | | `-append` | Kernel command line | | `-nographic` | No graphical output (serial console) | | `-m` | Memory size (e.g., `-m 512M`) | | `-smp` | Number of cores (e.g., `-smp 4`) | | `-net` | Network backend (e.g., `-net user`) | ### Booting with Device Tree ReviveSparc provides a device tree blob (DTB) for the emulated platform: ```bash ./sparc-emu \ -kernel vmlinux \ -dtb revivesparc.dtb \ -initrd initramfs.gz \ -append "console=ttyS0,115200" \ -nographic ``` ## Building for NetBSD ```bash # Build a SPARC64 NetBSD kernel cd /usr/src ./build.sh -m sparc64 -U kernel=GENERIC # Run under ReviveSparc ./sparc-emu \ -kernel netbsd-sparc64 \ -append "console=com0" \ -nographic ``` ## Building for OpenBSD ```bash # Build a SPARC64 OpenBSD kernel cd /usr/src make -C sys/arch/sparc64/conf GENERIC config GENERIC cd ../compile/GENERIC make # Run under ReviveSparc ./sparc-emu \ -kernel bsd.sparc64 \ -nographic ```