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. This should be treated as high level thinking for now to give us a starting point rather than as a finalized roadmap. Comments and contributions 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
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 ===
{| class="wikitable"
! 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 (<code>/proc/cpuinfo</code>, <code>dmesg</code>, 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 ===
{| class="wikitable"
! 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 ===
{| class="wikitable"
! 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. Reusing and Cross-compiling from Existing Distros
Before reinventing the wheel, we aim to reuse as much as possible from other PowerPC-supporting Linux distributions.
=== Sources of Reusable Packages ===
* Debian Ports: Many packages already built for PPC64 (Big Endian)
* Gentoo PPC64: Source-based packages easily recompiled for our target
* Void Linux PPC: Lightweight, musl or glibc-based
* Buildroot: Embedded-focused, ideal for minimal images
* Yocto layers/meta-ppc: Helpful BSPs and tooling
Cross-compiling Approach
1. Use `powerpc64-linux-gnu-gcc` cross-toolchain
2. Cross-compile Debian source packages or Gentoo ebuilds
3. Create our own package repository (e.g., Debian-style repo or overlay FS)
4. Validate on QEMU before deploying to real hardware
=== Tools and Infrastructure ===
{| class="wikitable"
! Purpose !! Tool
|-
| Source retrieval || apt-src, emerge, xbps-src
|-
| Compilation || cross-make, dpkg-buildpackage, Gentoo's crossdev
|-
| Patching || quilt, debdiff, git am
|-
| Staging and testing || chroot, Docker, QEMU
|}
Goal: Reduce duplication, benefit from upstream security updates, and create a lean maintainable software stack.
6. 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 ===
{| class="wikitable"
! Use Case !! Toolchain
|-
| CI/CD pipelines || GitHub Actions, GitLab CI, Buildbot
|-
| Emulated testing || QEMU PowerPC64 + expect/serial scripts
|-
| Cross-builds || Docker + <code>powerpc64-linux-gnu-gcc</code> toolchains
|-
| Image hosting || GitHub Pages, Netlify, custom CDN
|-
| Build orchestration || cbuild, Yocto Autobuilder, Jenkins
|}
7. 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 ===
{| class="wikitable"
! 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
|}
8. 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
* <code>live-build</code> and <code>debootstrap</code>
* Debian Installer (<code>d-i</code>)
* QA tools: lintian, piuparts, autopkgtest
=== Related Projects to Watch ===
{| class="wikitable"
! Project !! Relevance
|-
| Debian PowerPC || Maintains PPC64 ports and packages
|-
| Void PPC || Maintains lightweight PPC builds
|-
| Gentoo PPC || Flexible, source-based PPC support
|-
| Yocto/OpenEmbedded || Board support packages and rootfs config
|-
| OpenPOWER Firmware || Future firmware replacement roadmap
|}
9. Build Tooling (WIP Placeholder Section)
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.
10. Other Links and Resources
Technical Resources
- NXP T2080 Reference Manual
* Denx U-Boot Git
* Linux PowerPC Git
* Debian PowerPC Wiki
* Void PPC Project