Current Software Specifications: Difference between revisions

From wiki of GNU/Linux PowerPC Notebook Project
Jump to navigation Jump to search
Created page with "= 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.'''  <br>'''Target architecture: PPC64 Big Endian.''' == Introduction == The software stack for the PowerPC Notebook is a critical enabler for the hardware. Our..."
 
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
= Software Stack: From First Boot to Full Distribution =
= 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.''' &nbsp;<br>'''Target architecture: PPC64 Big Endian.'''
'''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 ==
== 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:
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 &nbsp;<br>* Building and testing a minimal Linux system to prove hardware works &nbsp;<br>* Gradually evolving toward a user-friendly, maintainable Linux distribution &nbsp;
* 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.
We outline a '''progressive roadmap''': from booting the board to building our own distro, using modern infrastructure and tools wherever possible.


Line 15: Line 19:


=== What Needs to Be Done ===
=== What Needs to Be Done ===
 
{| class="wikitable"
{| class="wikitable" style="margin:auto"<br>! Task !! Description<br>|-<br>| Set up cross toolchain || Use NXP’s PowerPC GCC SDK for T2080<br>|-<br>| Build U-Boot || Start from &lt;code&gt;T2080RDB_defconfig&lt;/code&gt;, customize for our board<br>|-<br>| Write Device Tree (DTS) || Tailor the .dts to our motherboard’s peripherals<br>|-<br>| Build kernel || Use NXP's patched or mainline kernel with minimal config<br>|-<br>| Load root filesystem || Use Initramfs, NFS, SD card or TFTP<br>|-<br>| Test via serial console || Use UART for logs and early debugging<br>|}
! Task !! Description
|-  
| Set up cross toolchain || Use NXP’s PowerPC GCC SDK for T2080
|-  
| Build U-Boot || Start from <code>T2080RDB_defconfig</code>, 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 ===
=== Why ===


* Validates CPU, memory, and power circuitry &nbsp;<br>* Enables testing and debugging of other peripherals &nbsp;<br>* Serves as foundation for OS bring-up and userland development
* 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 ==
== 2. Essentials: Proving the Prototype Works ==
Line 26: Line 45:
Once we can boot, we need a minimal userland to interact with the system.
Once we can boot, we need a minimal userland to interact with the system.


=== Components Required ===<br>{| class="wikitable"<br>! Component !! Functionality<br>|-<br>| U-Boot || Initialize CPU, memory, load kernel<br>|-<br>| Linux kernel || Hardware detection and device drivers<br>|-<br>| Root filesystem || BusyBox or minimal Debian NFS root<br>|-<br>| Serial console || Primary I/O for early interaction<br>|-<br>| Storage access || SD, SATA, or USB (at least one working path)<br>|-<br>| Device tree blob || Custom for motherboard<br>|}
=== 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 ===
=== Goal ===


* Boot into a shell prompt &nbsp;<br>* Validate basic system resources (&lt;code&gt;/proc/cpuinfo&lt;/code&gt;, &lt;code&gt;dmesg&lt;/code&gt;, etc.) &nbsp;<br>* Confirm networking, storage, and peripheral availability &nbsp;
* 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 ==
== 3. Nice-to-Haves: Editors, Tools, and Utilities ==
Line 36: Line 72:
Once the system is up, we add tools to support development, testing, and usability.
Once the system is up, we add tools to support development, testing, and usability.


=== Suggested Additions ===<br>{| class="wikitable"<br>! Category !! Tools<br>|-<br>| Editors || nano, vim<br>|-<br>| Networking || curl, wget, ping, ssh<br>|-<br>| Debugging || gdb, strace, perf, valgrind<br>|-<br>| System info || htop, lshw, i2c-tools, lsusb<br>|-<br>| Disk tools || fdisk, parted, e2fsprogs, btrfs-progs<br>|-<br>| Package management || apt, dpkg, or apk (depending on base)<br>|}
=== 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 ==
== 4. Distro: Building Our Own PowerPC Linux Distribution ==
Line 42: Line 93:
Eventually, we want a user-facing Linux distribution specifically optimized for the PowerPC Notebook.
Eventually, we want a user-facing Linux distribution specifically optimized for the PowerPC Notebook.


=== Building Blocks ===<br>{| class="wikitable"<br>! Component !! Details<br>|-<br>| Base System || Debian PPC64, Gentoo, or Void PPC<br>|-<br>| Kernel || Custom-built with PowerPC Notebook config<br>|-<br>| Init system || systemd or OpenRC<br>|-<br>| Package management || apt (Debian), emerge (Gentoo), xbps (Void)<br>|-<br>| Desktop environment || XFCE, MATE, GNOME (PPC64 builds)<br>|-<br>| Installer || CLI or graphical installer image<br>|-<br>| Update system || apt repos or rsync-based delta updates<br>|-<br>| Branding || Custom themes, logos, powerpcnotebook.org<br>|}
=== 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 ===
=== Distro Build Systems to Consider ===


* debootstrap / live-build (Debian-based builds) &nbsp;<br>* Buildroot (for minimal rootfs + kernel images) &nbsp;<br>* Yocto Project (flexible meta-distribution) &nbsp;<br>* Gentoo Catalyst (for full ISO or stage builds) &nbsp;
* 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 ==
== 5. CI/CD Pipelines and Build Infrastructure ==


Before reinventing the wheel, we aim to reuse as much as possible from other PowerPC-supporting Linux distributions.
To ensure maintainability, reproducibility, and collaboration, we aim to adopt continuous integration and modern DevOps practices.


=== Sources of Reusable Packages ===<br>* '''Debian Ports''': Many packages already built for PPC64 (Big Endian) &nbsp;<br>* '''Gentoo PPC64''': Source-based packages easily recompiled for our target &nbsp;<br>* '''Void Linux PPC''': Lightweight, musl or glibc-based &nbsp;<br>* '''Buildroot''': Embedded-focused, ideal for minimal images &nbsp;<br>* '''Yocto layers/meta-ppc''': Helpful BSPs and tooling &nbsp;
=== CI/CD Goals ===
 
=== Cross-compiling Approach ===
 
1. Use `powerpc64-linux-gnu-gcc` cross-toolchain &nbsp;<br>2. Cross-compile Debian source packages or Gentoo ebuilds &nbsp;<br>3. Create our own package repository (e.g., Debian-style repo or overlay FS) &nbsp;<br>4. Validate on QEMU before deploying to real hardware &nbsp;
 
=== Tools and Infrastructure ===<br>{| class="wikitable"<br>! Purpose !! Tool<br>|-<br>| Source retrieval || apt-src, emerge, xbps-src<br>|-<br>| Compilation || cross-make, dpkg-buildpackage, Gentoo's crossdev<br>|-<br>| Patching || quilt, debdiff, git am<br>|-<br>| Staging and testing || chroot, Docker, QEMU<br>|}


'''Goal''': Reduce duplication, benefit from upstream security updates, and create a lean maintainable software stack.
* 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


== 6. CI/CD Pipelines and Build Infrastructure ==
=== Tools ===
 
{| class="wikitable"
To ensure maintainability, reproducibility, and collaboration, we aim to adopt continuous integration and modern DevOps practices.
! 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
|}


=== CI/CD Goals ===
=== Example CI Flow ===


* Automatically build U-Boot, kernel, and rootfs images &nbsp;<br>* Run tests on emulated environments (QEMU PPC64) &nbsp;<br>* Deploy daily/weekly builds for community testing &nbsp;<br>* Detect regressions early and validate commits &nbsp;
# Push to <code>main</code> branch
=== Tools ===<br>{| class="wikitable"<br>! Use Case !! Toolchain<br>|-<br>| CI/CD pipelines || GitHub Actions, GitLab CI, Buildbot<br>|-<br>| Emulated testing || QEMU PowerPC64 + expect/serial scripts<br>|-<br>| Cross-builds || Docker + &lt;code&gt;powerpc64-linux-gnu-gcc&lt;/code&gt; toolchains<br>|-<br>| Image hosting || GitHub Pages, Netlify, custom CDN<br>|-<br>| Build orchestration || cbuild, Yocto Autobuilder, Jenkins<br>|}
# GitHub Actions builds U-Boot, kernel, and rootfs
# QEMU boots the image and verifies UART output
# Artifacts are uploaded to <code>artifacts.powerpcnotebook.org</code>


== 7. Docker Images for Build and Dev Environments ==
== 6. Docker Images for Build and Dev Environments ==


Pre-configured Docker images help developers build and test quickly across any host system.
Pre-configured Docker images help developers build and test quickly across any host system.
Line 77: Line 160:
=== Use Cases ===
=== Use Cases ===


* Build U-Boot or Linux kernel from any host &nbsp;<br>* Package testing in isolated environments &nbsp;<br>* Running PPC-specific tools in reproducible containers &nbsp;
* Build U-Boot or Linux kernel from any host
=== Example Images ===<br>{| class="wikitable"<br>! Image Name !! Description<br>|-<br>| powerpc-dev-env || Full dev env with toolchain and make<br>|-<br>| powerpc-kernel-builder || Kernel-specific builder and configs<br>|-<br>| powerpc-debian-chroot || Debootstrap PPC64 rootfs for package test<br>|}
* Package testing in isolated environments
* Running PPC-specific tools in reproducible containers


== 8. Inspirations from Debian and Other Projects ==
=== 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
|}
 
== 7. Inspirations from Debian and Other Projects ==


We aim to reuse and adapt ideas from existing projects to accelerate development.
We aim to reuse and adapt ideas from existing projects to accelerate development.
Line 86: Line 181:
=== Relevant Debian Practices ===
=== Relevant Debian Practices ===


* Reproducible Builds &nbsp;<br>* Debian Ports infrastructure &nbsp;<br>* &lt;code&gt;live-build&lt;/code&gt; and &lt;code&gt;debootstrap&lt;/code&gt; &nbsp;<br>* Debian Installer (&lt;code&gt;d-i&lt;/code&gt;) &nbsp;<br>* QA tools: lintian, piuparts, autopkgtest &nbsp;
* Reproducible Builds
=== Related Projects to Watch ===<br>{| class="wikitable"<br>! Project !! Relevance<br>|-<br>| Debian PowerPC || Maintains PPC64 ports and packages<br>|-<br>| Void PPC || Maintains lightweight PPC builds<br>|-<br>| Gentoo PPC || Flexible, source-based PPC support<br>|-<br>| Yocto/OpenEmbedded || Board support packages and rootfs config<br>|-<br>| OpenPOWER Firmware || Future firmware replacement roadmap<br>|}
* 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 ===
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.
{| class="wikitable sortable" style="height: 948px;"
|+ Open Source Distributions Supporting PowerPC (Including Less Mainstream Projects)
|- style="height: 51px;"
! style="height: 51px; width: 437.406px;" | Distribution Name !! style="height: 51px; width: 154.828px;" | Based On !! style="height: 51px; width: 111.594px;" | Active Status !! style="height: 51px; width: 197.031px;" | Last Release !! style="height: 51px; width: 280.281px;" | Source Code Repository !! style="height: 51px; width: 238.719px;" | Endian Support !! style="height: 51px; width: 90.6406px;" | 32-bit Support !! style="height: 51px; width: 90.6406px;" | 64-bit Support !! style="height: 51px; width: 467.109px;" | Notes
|- style="height: 28px;"
! style="height: 28px; width: 437.406px;" | Linux Distributions (Including Less Mainstream/Historical)
|
|
|
|
|
|
|
|
|- style="height: 28px;"
| style="height: 28px; width: 451.656px;" | Adélie Linux || style="height: 28px; width: 169.078px;" | Independent || style="height: 28px; width: 125.844px;" | Active || style="height: 28px; width: 211.281px;" | December 20, 2024 (1.0-BETA6) || style="height: 28px; width: 294.531px;" | https://git.adelielinux.org/ || style="height: 28px; width: 252.969px;" | Big Endian || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 481.359px;" | Supports G3, G4, and G5 PowerPC.
|- style="height: 51px;"
| style="height: 51px; width: 451.656px;" | Arch Power || style="height: 51px; width: 169.078px;" | Independent || style="height: 51px; width: 125.844px;" | Active (unofficial port) || style="height: 51px; width: 211.281px;" | January 1, 2025 (2025.01.01) || style="height: 51px; width: 294.531px;" | https://github.com/kth5/archpower/wiki || style="height: 51px; width: 252.969px;" | Big Endian (powerpc), Little Endian (ppc64el) || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 481.359px;" | Unofficial port.
|- style="height: 28px;"
| style="height: 28px; width: 451.656px;" | Chimera Linux || style="height: 28px; width: 169.078px;" | Independent || style="height: 28px; width: 125.844px;" | Beta || style="height: 28px; width: 211.281px;" | April 20, 2025 (Rolling Release) || style="height: 28px; width: 294.531px;" | https://github.com/chimera-linux/ || style="height: 28px; width: 252.969px;" | Both (ppc, ppc64le) || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 481.359px;" | Uses musl libc and FreeBSD userland.
|- style="height: 28px;"
| style="height: 28px; width: 451.656px;" | CruxPPC || style="height: 28px; width: 169.078px;" | CRUX || style="height: 28px; width: 125.844px;" | Inactive || style="height: 28px; width: 211.281px;" | Unknown || style="height: 28px; width: 294.531px;" | https://cruxppc.org/ || style="height: 28px; width: 252.969px;" | Big Endian || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 104.891px;" | {{cross}} || style="height: 28px; width: 481.359px;" | A port of the lightweight CRUX distribution to PowerPC. Status uncertain.
|- style="height: 51px;"
| style="height: 51px; width: 451.656px;" | Debian || style="height: 51px; width: 169.078px;" | Debian || style="height: 51px; width: 125.844px;" | Active || style="height: 51px; width: 211.281px;" | May 17, 2025 (Debian 12.11) || style="height: 51px; width: 294.531px;" | https://www.debian.org/ports/powerpc/inst/install || style="height: 51px; width: 252.969px;" | Big Endian (powerpc), Little Endian (ppc64el) || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 481.359px;" | Development for ppc64 (big-endian) is mostly stalled.
|- style="height: 51px;"
| style="height: 51px; width: 451.656px;" | Fedora || style="height: 51px; width: 169.078px;" | Fedora || style="height: 51px; width: 125.844px;" | Active || style="height: 51px; width: 211.281px;" | April 15, 2025 (Fedora 42) || style="height: 51px; width: 294.531px;" | https://src.fedoraproject.org/ || style="height: 51px; width: 252.969px;" | Big Endian (ppc64), Little Endian (ppc64le) || style="height: 51px; width: 104.891px;" | {{cross}} || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 481.359px;" | Dropped 32-bit PowerPC support after Fedora 22.
|- style="height: 28px;"
| style="height: 28px; width: 451.656px;" | Fienix || style="height: 28px; width: 169.078px;" | Debian || style="height: 28px; width: 125.844px;" | Active || style="height: 28px; width: 211.281px;" | Rolling || style="height: 28px; width: 294.531px;" | https://gitlab.com/fienix || style="height: 28px; width: 252.969px;" | Both || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 481.359px;" | A derivative of Debian tailored for PowerPC.
|- style="height: 28px;"
| style="height: 28px; width: 451.656px;" | Gentoo Linux || style="height: 28px; width: 169.078px;" | Source-based || style="height: 28px; width: 125.844px;" | Active || style="height: 28px; width: 211.281px;" | Rolling || style="height: 28px; width: 294.531px;" | https://gitweb.gentoo.org/ || style="height: 28px; width: 252.969px;" | Both (ppc, ppc64) || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 481.359px;" | Requires compiling from source. ppc64 profile is bi-endian.
|- style="height: 51px;"
| style="height: 51px; width: 451.656px;" | MkLinux || style="height: 51px; width: 169.078px;" | Microkernel (Mach) / Linux || style="height: 51px; width: 125.844px;" | Inactive || style="height: 51px; width: 211.281px;" | 1998 || style="height: 51px; width: 294.531px;" | https://www.mklinux.org/development/cvs.html || style="height: 51px; width: 252.969px;" | Big Endian || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 104.891px;" | {{cross}} || style="height: 51px; width: 481.359px;" | Early port of Linux to PowerPC Macintosh. Development ceased.
|- style="height: 28px;"
| style="height: 28px; width: 451.656px;" | MintPPC || style="height: 28px; width: 169.078px;" | Linux Mint/Debian || style="height: 28px; width: 125.844px;" | Active || style="height: 28px; width: 211.281px;" | Rolling || style="height: 28px; width: 294.531px;" | https://github.com/MintPPC || style="height: 28px; width: 252.969px;" | Both || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 481.359px;" | Specifically designed for PowerPC (Old World and New World Macs).
|- style="height: 51px;"
| style="height: 51px; width: 451.656px;" | openSUSE || style="height: 51px; width: 169.078px;" | SUSE || style="height: 51px; width: 125.844px;" | Active || style="height: 51px; width: 211.281px;" | Rolling (Tumbleweed), Stable (Leap) || style="height: 51px; width: 294.531px;" | https://build.opensuse.org/ || style="height: 51px; width: 252.969px;" | Both || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 481.359px;" | Offers both stable and rolling releases.
|- style="height: 51px;"
| style="height: 51px; width: 451.656px;" | OpenPPC || style="height: 51px; width: 169.078px;" | Independent || style="height: 51px; width: 125.844px;" | Inactive || style="height: 51px; width: 211.281px;" | 2006 || style="height: 51px; width: 294.531px;" | (Likely archived) || style="height: 51px; width: 252.969px;" | Big Endian || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 104.891px;" | {{cross}} || style="height: 51px; width: 481.359px;" | Aimed to be a user-friendly PowerPC Linux distribution. Development ceased.
|- style="height: 28px;"
| style="height: 28px; width: 451.656px;" | Ubuntu || style="height: 28px; width: 169.078px;" | Debian || style="height: 28px; width: 125.844px;" | Active || style="height: 28px; width: 211.281px;" | Rolling || style="height: 28px; width: 294.531px;" | https://git.launchpad.net/ubuntu || style="height: 28px; width: 252.969px;" | Both || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 481.359px;" | Check specific release notes for architecture support.
|- style="height: 28px;"
| style="height: 28px; width: 451.656px;" | Void Linux (PPC) || style="height: 28px; width: 169.078px;" | Independent || style="height: 28px; width: 125.844px;" | Inactive || style="height: 28px; width: 211.281px;" | 2023 || style="height: 28px; width: 294.531px;" | https://github.com/void-ppc || style="height: 28px; width: 252.969px;" | Both || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 481.359px;" | Community-led effort.
|- style="height: 51px;"
| style="height: 51px; width: 451.656px;" | Yellow Dog Linux || style="height: 51px; width: 169.078px;" | Red Hat/Fedora || style="height: 51px; width: 125.844px;" | Inactive || style="height: 51px; width: 211.281px;" | August 6, 2009 (6.2) || style="height: 51px; width: 294.531px;" | (Likely archived, e.g., via WayBack Machine) || style="height: 51px; width: 252.969px;" | Both || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 481.359px;" | Historically significant for PlayStation 3 and PowerPC Macs. Development ceased.
|-
| style="width: 451.656px;" | T2 SDE<br>
| style="width: 169.078px;" | -
| style="width: 125.844px;" | Active
| style="width: 211.281px;" | <br>
| style="width: 294.531px;" | https://t2sde.org/documentation/
| style="width: 252.969px;" | Both
| style="width: 104.891px;" | {{check}}
| style="width: 104.891px;" | {{check}}
| style="width: 481.359px;" | System to create new distributions. Similar to Yotco.
|-
| style="width: 451.656px;" | Bedrock Linux
| style="width: 169.078px;" | -
| style="width: 125.844px;" | <br>
| style="width: 211.281px;" | <br>
| style="width: 294.531px;" | https://bedrocklinux.org/
| style="width: 252.969px;" | <br>
| style="width: 104.891px;" | {{check}}
| style="width: 104.891px;" | {{check}}
| style="width: 481.359px;" | Sytem to create a new distribution by picking and choosing components from various distributions.
|- style="height: 28px;"
! style="height: 28px; width: 437.406px;" | FreeBSD Distributions (Including Less Mainstream/Historical)
|
|
|
|
|
|
|
|
|- style="height: 51px;"
| style="height: 51px; width: 451.656px;" | FreeBSD || style="height: 51px; width: 169.078px;" | BSD || style="height: 51px; width: 125.844px;" | Active || style="height: 51px; width: 211.281px;" | March 11, 2025 (13.5-RELEASE) || style="height: 51px; width: 294.531px;" | https://cgit.freebsd.org/src/ || style="height: 51px; width: 252.969px;" | Both || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 481.359px;" | Tier 2 support for 32-bit and 64-bit PowerPC. 32-bit support deprecated in 15.0.
|- style="height: 28px;"
| style="height: 28px; width: 451.656px;" | MidnightBSD || style="height: 28px; width: 169.078px;" | FreeBSD || style="height: 28px; width: 125.844px;" | Active || style="height: 28px; width: 211.281px;" | Rolling || style="height: 28px; width: 294.531px;" | https://github.com/midnightbsd || style="height: 28px; width: 252.969px;" | Both || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 481.359px;" | Aims to adapt FreeBSD for desktop usage.
|- style="height: 28px;"
| style="height: 28px; width: 451.656px;" | NetBSD || style="height: 28px; width: 169.078px;" | BSD || style="height: 28px; width: 125.844px;" | Active || style="height: 28px; width: 211.281px;" | Rolling || style="height: 28px; width: 294.531px;" | https://github.com/netbsd/src || style="height: 28px; width: 252.969px;" | Both || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 104.891px;" | {{check}} || style="height: 28px; width: 481.359px;" | Known for portability. MacPPC is Tier II.
|- style="height: 51px;"
| style="height: 51px; width: 451.656px;" | OpenBSD || style="height: 51px; width: 169.078px;" | BSD || style="height: 51px; width: 125.844px;" | Active || style="height: 51px; width: 211.281px;" | Rolling || style="height: 51px; width: 294.531px;" | https://github.com/openbsd/src || style="height: 51px; width: 252.969px;" | Big Endian || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 481.359px;" | Focuses on security and has official support for Apple's Mac-based PowerPC hardware.
|- style="height: 51px;"
! style="height: 51px; width: 437.406px;" | Other Open Source Distributions (Including Less Mainstream/Historical)
|
|
|
|
|
|
|
|
|- style="height: 51px;"
| style="height: 51px; width: 451.656px;" | Haiku || style="height: 51px; width: 169.078px;" | Independent (BeOS inspired) || style="height: 51px; width: 125.844px;" | Beta || style="height: 51px; width: 211.281px;" | Rolling || style="height: 51px; width: 294.531px;" | https://github.com/haiku/haiku || style="height: 51px; width: 252.969px;" | Little Endian || style="height: 51px; width: 104.891px;" | {{check}} || style="height: 51px; width: 104.891px;" | {{cross}} || style="height: 51px; width: 481.359px;" | Has a PowerPC port, may require manual compilation.
|}


== 9. Build Tooling (WIP Placeholder Section) ==
== 8. Build Tooling (WIP/Placeholders) ==


This section will document the exact steps, tools, and workflows needed to build every part of the software stack.
This section will document the exact steps, tools, and workflows needed to build every part of the software stack.
Line 95: Line 291:
=== Build Tooling Overview ===
=== Build Tooling Overview ===


* Cross-toolchain setup (e.g. NXP SDK, crosstool-ng, LLVM)<br>* U-Boot build and customization<br>* Linux kernel configuration and build<br>* Root filesystem generation methods (debootstrap, Buildroot, Yocto)<br>* Build orchestration (Makefiles, shell scripts, CI runners)<br>* Packaging tools for our distro (dpkg, xbps, etc.)<br>* Secure image signing (U-Boot SPL, FIT images, secure boot)<br>* Emulator-based validation and test harnesses
* 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.
'''Note:''' Details for each item will be populated progressively as we finalize architecture and test results.


== 10. Other Links and Resources ==
== 9. Other Links and Resources ==


=== Technical Resources ===
=== Technical Resources ===


* [https://www.nxp.com/products/processors-and-microcontrollers/power-architecture/qoriq-platforms/t-series/qoriq-t2080-and-t2081-multicore-communications-processors:T2080 NXP T2080 Reference Manual] &nbsp;<br>* [https://source.denx.de/u-boot/u-boot Denx U-Boot Git] &nbsp;<br>* [https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/ Linux PowerPC Git] &nbsp;<br>* [https://wiki.debian.org/PowerPC Debian PowerPC Wiki] &nbsp;<br>* [https://voidlinux-ppc.org/ Void PPC Project] &nbsp;
* [https://www.nxp.com/products/processors-and-microcontrollers/power-architecture/qoriq-platforms/t-series/qoriq-t2080-and-t2081-multicore-communications-processors:T2080 NXP T2080 Reference Manual]
* [https://source.denx.de/u-boot/u-boot Denx U-Boot Git]
* [https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/ Linux PowerPC Git]
* [https://wiki.debian.org/PowerPC Debian PowerPC Wiki]
* [https://voidlinux-ppc.org/ Void PPC Project]


=== Community and Support ===
=== Community and Support ===


* [https://www.powerprogress.org/ Power Progress Community] &nbsp;<br>* [https://wiki.debian.org/PowerPC#Communication PowerPC IRC/Matrix] &nbsp;<br>* [https://openpowerfoundation.org/ OpenPOWER Foundation] &nbsp;<br>
* [https://www.powerprogress.org/ Power Progress Community]
* [https://wiki.debian.org/PowerPC#Communication PowerPC IRC/Matrix]
* [https://openpowerfoundation.org/ OpenPOWER Foundation]

Latest revision as of 18:29, 19 May 2025

Software Stack: From First Boot to Full Distribution

[edit | edit source]

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

[edit | edit source]

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

[edit | edit source]

The first goal is to ensure our hardware can boot into a minimal Linux environment.

What Needs to Be Done

[edit | edit source]
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
  • 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

[edit | edit source]

Once we can boot, we need a minimal userland to interact with the system.

Components Required

[edit | edit source]
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
  • 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

[edit | edit source]

Once the system is up, we add tools to support development, testing, and usability.

Suggested Additions

[edit | edit source]
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

[edit | edit source]

Eventually, we want a user-facing Linux distribution specifically optimized for the PowerPC Notebook.

Building Blocks

[edit | edit source]
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

[edit | edit source]
  • 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

[edit | edit source]

To ensure maintainability, reproducibility, and collaboration, we aim to adopt continuous integration and modern DevOps practices.

CI/CD Goals

[edit | edit source]
  • 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

[edit | edit source]
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

[edit | edit source]
  1. Push to main branch
  2. GitHub Actions builds U-Boot, kernel, and rootfs
  3. QEMU boots the image and verifies UART output
  4. Artifacts are uploaded to artifacts.powerpcnotebook.org

6. Docker Images for Build and Dev Environments

[edit | edit source]

Pre-configured Docker images help developers build and test quickly across any host system.

Use Cases

[edit | edit source]
  • Build U-Boot or Linux kernel from any host
  • Package testing in isolated environments
  • Running PPC-specific tools in reproducible containers

Example Images

[edit | edit source]
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

[edit | edit source]

We aim to reuse and adapt ideas from existing projects to accelerate development.

Relevant Debian Practices

[edit | edit source]
  • Reproducible Builds
  • Debian Ports infrastructure
  • live-build and debootstrap
  • Debian Installer (d-i)
  • QA tools: lintian, piuparts, autopkgtest
[edit | edit source]

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.

Open Source Distributions Supporting PowerPC (Including Less Mainstream Projects)
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 Power Independent Active (unofficial port) January 1, 2025 (2025.01.01) https://github.com/kth5/archpower/wiki Big Endian (powerpc), Little Endian (ppc64el) ✅ ✅ 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://www.debian.org/ports/powerpc/inst/install 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.
T2 SDE
- Active
https://t2sde.org/documentation/ Both ✅ ✅ System to create new distributions. Similar to Yotco.
Bedrock Linux -

https://bedrocklinux.org/
✅ ✅ Sytem to create a new distribution by picking and choosing components from various distributions.
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)

[edit | edit source]

This section will document the exact steps, tools, and workflows needed to build every part of the software stack.

Build Tooling Overview

[edit | edit source]
  • 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.

[edit | edit source]

Technical Resources

[edit | edit source]

Community and Support

[edit | edit source]