Current Software Specifications
Software Stack: From First Boot to Full Distribution
Note: This is an initial draft of the software roadmap for the PowerPC Notebook project. At this stage, this is more of brain dump, rather than a polished roadmap. Contributions and comments are welcome.
Target architecture: PPC64 Big Endian.
Introduction
The software stack for the PowerPC Notebook is a critical enabler for the hardware. Our challenge is to bring up a modern, open-source Linux system on non-mainstream architecture (PowerPC), using a custom motherboard based on the NXP T2080 (?) SoC. That means:
- Bootstrapping software from scratch, with limited upstream support
- Building and testing a minimal Linux system to prove hardware works
- Gradually evolving toward a user-friendly, maintainable Linux distribution
We outline a progressive roadmap: from booting the board to building our own distro, using modern infrastructure and tools wherever possible.
1. Basic Plan: Booting the First Prototype
The first goal is to ensure our hardware can boot into a minimal Linux environment.
What Needs to Be Done
| Task | Description |
|---|---|
| Set up cross toolchain | Use NXP’s PowerPC GCC SDK for T2080 |
| Build U-Boot | Start from T2080RDB_defconfig, customize for our board
|
| Write Device Tree (DTS) | Tailor the .dts to our motherboard’s peripherals |
| Build kernel | Use NXP's patched or mainline kernel with minimal config |
| Load root filesystem | Use Initramfs, NFS, SD card or TFTP |
| Test via serial console | Use UART for logs and early debugging |
Why
- Validates CPU, memory, and power circuitry
- Enables testing and debugging of other peripherals
- Serves as foundation for OS bring-up and userland development
2. Essentials: Proving the Prototype Works
Once we can boot, we need a minimal userland to interact with the system.
Components Required
| Component | Functionality |
|---|---|
| U-Boot | Initialize CPU, memory, load kernel |
| Linux kernel | Hardware detection and device drivers |
| Root filesystem | BusyBox or minimal Debian NFS root |
| Serial console | Primary I/O for early interaction |
| Storage access | SD, SATA, or USB (at least one working path) |
| Device tree blob | Custom for motherboard |
Goal
- Boot into a shell prompt
- Validate basic system resources (
/proc/cpuinfo,dmesg, etc.) - Confirm networking, storage, and peripheral availability
3. Nice-to-Haves: Editors, Tools, and Utilities
Once the system is up, we add tools to support development, testing, and usability.
Suggested Additions
| Category | Tools |
|---|---|
| Editors | nano, vim |
| Networking | curl, wget, ping, ssh |
| Debugging | gdb, strace, perf, valgrind |
| System info | htop, lshw, i2c-tools, lsusb |
| Disk tools | fdisk, parted, e2fsprogs, btrfs-progs |
| Package management | apt, dpkg, or apk (depending on base) |
4. Distro: Building Our Own PowerPC Linux Distribution
Eventually, we want a user-facing Linux distribution specifically optimized for the PowerPC Notebook.
Building Blocks
| Component | Details |
|---|---|
| Base System | Debian PPC64, Gentoo, or Void PPC |
| Kernel | Custom-built with PowerPC Notebook config |
| Init system | systemd or OpenRC |
| Package management | apt (Debian), emerge (Gentoo), xbps (Void) |
| Desktop environment | XFCE, MATE, GNOME (PPC64 builds) |
| Installer | CLI or graphical installer image |
| Update system | apt repos or rsync-based delta updates |
| Branding | Custom themes, logos, powerpcnotebook.org |
Distro Build Systems to Consider
- debootstrap / live-build (Debian-based builds)
- Buildroot (for minimal rootfs + kernel images)
- Yocto Project (flexible meta-distribution)
- Gentoo Catalyst (for full ISO or stage builds)
5. CI/CD Pipelines and Build Infrastructure
To ensure maintainability, reproducibility, and collaboration, we aim to adopt continuous integration and modern DevOps practices.
CI/CD Goals
- Automatically build U-Boot, kernel, and rootfs images
- Run tests on emulated environments (QEMU PPC64)
- Deploy daily/weekly builds for community testing
- Detect regressions early and validate commits
Tools
| Use Case | Toolchain |
|---|---|
| CI/CD pipelines | GitHub Actions, GitLab CI, Buildbot |
| Emulated testing | QEMU PowerPC64 + expect/serial scripts |
| Cross-builds | Docker + powerpc64-linux-gnu-gcc toolchains
|
| Image hosting | GitHub Pages, Netlify, custom CDN |
| Build orchestration | cbuild, Yocto Autobuilder, Jenkins |
Example CI Flow
- Push to
mainbranch - GitHub Actions builds U-Boot, kernel, and rootfs
- QEMU boots the image and verifies UART output
- Artifacts are uploaded to
artifacts.powerpcnotebook.org
6. Docker Images for Build and Dev Environments
Pre-configured Docker images help developers build and test quickly across any host system.
Use Cases
- Build U-Boot or Linux kernel from any host
- Package testing in isolated environments
- Running PPC-specific tools in reproducible containers
Example Images
| Image Name | Description |
|---|---|
| powerpc-dev-env | Full dev env with toolchain and make |
| powerpc-kernel-builder | Kernel-specific builder and configs |
| powerpc-debian-chroot | Debootstrap PPC64 rootfs for package test |
7. Inspirations from Debian and Other Projects
We aim to reuse and adapt ideas from existing projects to accelerate development.
Relevant Debian Practices
- Reproducible Builds
- Debian Ports infrastructure
live-buildanddebootstrap- Debian Installer (
d-i) - QA tools: lintian, piuparts, autopkgtest
Related Projects to Watch
This information may be outdated as it is not easy to keep up with all the developments. Feel free to update the wiki in case of errors or omissions.
| Distribution Name | Based On | Active Status | Last Release | Source Code Repository | Endian Support | 32-bit Support | 64-bit Support | Notes |
|---|---|---|---|---|---|---|---|---|
| Linux Distributions (Including Less Mainstream/Historical) | ||||||||
| Adélie Linux | Independent | Active | December 20, 2024 (1.0-BETA6) | https://git.adelielinux.org/ | Big Endian | ✅ | ✅ | Supports G3, G4, and G5 PowerPC. |
| Arch Linux | Independent | Active (unofficial port) | January 1, 2025 (2025.01.01) | https://gitlab.archlinux.org/archlinux | Big Endian | ✅ | ✅ | Unofficial port. |
| Chimera Linux | Independent | Beta | April 20, 2025 (Rolling Release) | https://github.com/chimera-linux/ | Both (ppc, ppc64le) | ✅ | ✅ | Uses musl libc and FreeBSD userland. |
| CruxPPC | CRUX | Inactive | Unknown | https://cruxppc.org/ | Big Endian | ✅ | ❌ | A port of the lightweight CRUX distribution to PowerPC. Status uncertain. |
| Debian | Debian | Active | May 17, 2025 (Debian 12.11) | https://salsa.debian.org/ | Big Endian (powerpc), Little Endian (ppc64el) | ✅ | ✅ | Development for ppc64 (big-endian) is mostly stalled. |
| Fedora | Fedora | Active | April 15, 2025 (Fedora 42) | https://src.fedoraproject.org/ | Big Endian (ppc64), Little Endian (ppc64le) | ❌ | ✅ | Dropped 32-bit PowerPC support after Fedora 22. |
| Fienix | Debian | Active | Rolling | https://gitlab.com/fienix | Both | ✅ | ✅ | A derivative of Debian tailored for PowerPC. |
| Gentoo Linux | Source-based | Active | Rolling | https://gitweb.gentoo.org/ | Both (ppc, ppc64) | ✅ | ✅ | Requires compiling from source. ppc64 profile is bi-endian. |
| MkLinux | Microkernel (Mach) / Linux | Inactive | 1998 | https://www.mklinux.org/development/cvs.html | Big Endian | ✅ | ❌ | Early port of Linux to PowerPC Macintosh. Development ceased. |
| MintPPC | Linux Mint/Debian | Active | Rolling | https://github.com/MintPPC | Both | ✅ | ✅ | Specifically designed for PowerPC (Old World and New World Macs). |
| openSUSE | SUSE | Active | Rolling (Tumbleweed), Stable (Leap) | https://build.opensuse.org/ | Both | ✅ | ✅ | Offers both stable and rolling releases. |
| OpenPPC | Independent | Inactive | 2006 | (Likely archived) | Big Endian | ✅ | ❌ | Aimed to be a user-friendly PowerPC Linux distribution. Development ceased. |
| Ubuntu | Debian | Active | Rolling | https://git.launchpad.net/ubuntu | Both | ✅ | ✅ | Check specific release notes for architecture support. |
| Void Linux (PPC) | Independent | Inactive | 2023 | https://github.com/void-ppc | Both | ✅ | ✅ | Community-led effort. |
| Yellow Dog Linux | Red Hat/Fedora | Inactive | August 6, 2009 (6.2) | (Likely archived, e.g., via WayBack Machine) | Both | ✅ | ✅ | Historically significant for PlayStation 3 and PowerPC Macs. Development ceased. |
| FreeBSD Distributions (Including Less Mainstream/Historical) | ||||||||
| FreeBSD | BSD | Active | March 11, 2025 (13.5-RELEASE) | https://cgit.freebsd.org/src/ | Both | ✅ | ✅ | Tier 2 support for 32-bit and 64-bit PowerPC. 32-bit support deprecated in 15.0. |
| MidnightBSD | FreeBSD | Active | Rolling | https://github.com/midnightbsd | Both | ✅ | ✅ | Aims to adapt FreeBSD for desktop usage. |
| NetBSD | BSD | Active | Rolling | https://github.com/netbsd/src | Both | ✅ | ✅ | Known for portability. MacPPC is Tier II. |
| OpenBSD | BSD | Active | Rolling | https://github.com/openbsd/src | Big Endian | ✅ | ✅ | Focuses on security and has official support for Apple's Mac-based PowerPC hardware. |
| Other Open Source Distributions (Including Less Mainstream/Historical) | ||||||||
| Haiku | Independent (BeOS inspired) | Beta | Rolling | https://github.com/haiku/haiku | Little Endian | ✅ | ❌ | Has a PowerPC port, may require manual compilation. |
8. Build Tooling (WIP/Placeholders)
This section will document the exact steps, tools, and workflows needed to build every part of the software stack.
Build Tooling Overview
- Cross-toolchain setup (e.g. NXP SDK, crosstool-ng, LLVM)
- U-Boot build and customization
- Linux kernel configuration and build
- Root filesystem generation methods (debootstrap, Buildroot, Yocto)
- Build orchestration (Makefiles, shell scripts, CI runners)
- Packaging tools for our distro (dpkg, xbps, etc.)
- Secure image signing (U-Boot SPL, FIT images, secure boot)
- Emulator-based validation and test harnesses
Note: Details for each item will be populated progressively as we finalize architecture and test results.