* Initial
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user