Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Linux Images

Prebuilt Linux kernels and root filesystems for PowerPC systems.

Kernel Images

Microwatt Kernel (v6.1)

Specifications:

  • Architecture: PowerPC 64-bit big-endian
  • Config: microwatt_defconfig
  • Size: ~2.3MB compressed
  • Features: Serial console, initramfs, networking

Download:

wget https://powercommons.org/downloads/zImage-microwatt-6.1
wget https://powercommons.org/downloads/microwatt.dtb

Boot:

litex_term --kernel=zImage-microwatt-6.1 --kernel-adr=0x00000000 /dev/ttyUSB1

Root Filesystems

Minimal Busybox (8MB)

Contents:

  • Busybox userspace
  • Basic utilities (ls, cat, vi)
  • Network tools (ping, wget)
  • No package manager

Download:

wget https://powercommons.org/downloads/rootfs-minimal.cpio.gz

Use:

# Embed in kernel
mkimage -A powerpc -O linux -T ramdisk -C gzip -d rootfs-minimal.cpio.gz rootfs.uImage

Debian Minimal (256MB)

Contents:

  • Debian base system
  • apt package manager
  • GCC compiler
  • Python 3

Download:

wget https://powercommons.org/downloads/rootfs-debian-base.tar.gz

Mount:

# Extract to SD card or network boot
tar -xzf rootfs-debian-base.tar.gz -C /mnt/sdcard

Device Trees

VCU-118 Device Tree

wget https://powercommons.org/downloads/vcu118-microwatt.dtb

Source (for customization):

wget https://powercommons.org/downloads/vcu118-microwatt.dts

# Edit and recompile
dtc -I dts -O dtb -o custom.dtb vcu118-microwatt.dts

Build Your Own

Kernel

See PowerPC Toolchain guide.

git clone --depth 1 -b v6.1 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
cd linux
make ARCH=powerpc CROSS_COMPILE=powerpc64-linux-gnu- microwatt_defconfig
make ARCH=powerpc CROSS_COMPILE=powerpc64-linux-gnu- -j$(nproc)

Output: arch/powerpc/boot/zImage

Root Filesystem with Buildroot

git clone https://git.buildroot.net/buildroot
cd buildroot
make qemu_ppc64_pseries_defconfig
make menuconfig  # Customize
make -j$(nproc)

Output: output/images/rootfs.cpio.gz


Boot Examples

Serial Boot (RAM)

Load kernel via serial:

litex_term --kernel=zImage-microwatt-6.1 /dev/ttyUSB1

Network Boot (TFTP)

Configure U-Boot:

setenv serverip 192.168.1.100
setenv ipaddr 192.168.1.10
tftpboot 0x01000000 zImage-microwatt-6.1
bootm 0x01000000

SD Card Boot

Write kernel to SD:

dd if=zImage-microwatt-6.1 of=/dev/sdX bs=1M

Verification

Check kernel version:

# After boot
uname -a

Expected:

Linux microwatt 6.1.0 #1 SMP powerpc64 GNU/Linux

Customization

Add Packages to Debian Root

# Mount rootfs
mkdir /tmp/rootfs
sudo tar -xzf rootfs-debian-base.tar.gz -C /tmp/rootfs

# Chroot (requires qemu-user-static)
sudo chroot /tmp/rootfs /bin/bash
apt update
apt install -y python3 git vim

# Repackage
sudo tar -czf rootfs-debian-custom.tar.gz -C /tmp/rootfs .

Performance

Boot time on VCU-118 @ 100MHz:

  • Kernel decompression: 15s
  • Kernel init: 20s
  • Userspace init: 10s
  • Total to prompt: ~45 seconds

License

  • Kernel: GPL-2.0
  • Debian packages: Various (mostly GPL/LGPL)
  • Buildroot rootfs: GPL-2.0+

See individual package licenses.


Issues

Boot problems? See: