Current Software Specifications: Difference between revisions

From wiki of GNU/Linux PowerPC Notebook Project
Jump to navigation Jump to search
No edit summary
Line 189: Line 189:
=== Related Projects to Watch ===
=== Related Projects to Watch ===
{| class="wikitable"
{| class="wikitable"
! Project !! Relevance
|+ Open Source Distributions Supporting PowerPC
|-  
|-
| Debian PowerPC || Maintains PPC64 ports and packages
! Distribution Name !! Based On !! Active Status !! Last Release !! Source Code Repository !! Endian Support !! Notes
|-  
|-
| Void PPC || Maintains lightweight PPC builds
! Linux Distributions (Including Less Mainstream/Historical)
|-  
|-
| Gentoo PPC || Flexible, source-based PPC support
| Debian || Debian || Active || May 17, 2025 (Debian 12.11) || https://salsa.debian.org/ || Big Endian (powerpc), Little Endian (ppc64el) || Mainstream, but including for completeness. Development for ppc64 (big-endian) is mostly stalled.
|-  
|-
| Yocto/OpenEmbedded || Board support packages and rootfs config
| Fedora || Fedora || Active || April 15, 2025 (Fedora 42) || https://src.fedoraproject.org/ || Big Endian (ppc64), Little Endian (ppc64le) || Mainstream, but including for completeness. Dropped 32-bit PowerPC support after Fedora 22.
|-  
|-
| OpenPOWER Firmware || Future firmware replacement roadmap
| Gentoo Linux || Source-based || Active || Rolling || https://gitweb.gentoo.org/ || Both (ppc, ppc64) || Mainstream, but including for completeness. Requires compiling from source. ppc64 profile is bi-endian.
|-
| openSUSE || SUSE || Active || Rolling (Tumbleweed), Stable (Leap) || https://build.opensuse.org/ || Both || Mainstream, but including for completeness. Offers both stable and rolling releases.
|-
| Ubuntu || Debian || Active || Rolling || https://git.launchpad.net/ubuntu || Both || Mainstream, but including for completeness. Check specific release notes for architecture support.
|-
| Void Linux || Independent || Active (unofficial port) || Rolling || https://github.com/void-linux/void-packages || Both || Mainstream, but including for completeness. Community-led effort.
|-
| MintPPC || Linux Mint/Debian || Active || Rolling || https://github.com/MintPPC || Both || Mainstream, but including for completeness. Specifically designed for PowerPC (Old World and New World Macs).
|-
| Adélie Linux || Independent || Active || December 20, 2024 (1.0-BETA6) || https://git.adelielinux.org/ || Big Endian || Mainstream, but including for completeness. Supports G3, G4, and G5 PowerPC.
|-
| Fienix || Debian || Active || Rolling || https://gitlab.com/fienix || Both || Mainstream, but including for completeness. A derivative of Debian tailored for PowerPC.
|-
| Arch Linux || Independent || Active (unofficial port) || January 1, 2025 (2025.01.01) || https://gitlab.archlinux.org/archlinux || Big Endian || Mainstream, but including for completeness. Unofficial port.
|-
| Chimera Linux || Independent || Beta || April 20, 2025 (Rolling Release) || https://github.com/chimera-linux/ || Both (ppc, ppc64le) || Less mainstream, but active. Uses musl libc and FreeBSD userland.
|-
| **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.
|-
| **MkLinux** || Microkernel (Mach) / Linux || Inactive || 1998 || (Likely archived) || Big Endian || Early port of Linux to PowerPC Macintosh. Development ceased.
|-
| **OpenPPC** || Independent || Inactive || 2006 || (Likely archived) || Big Endian || Aimed to be a user-friendly PowerPC Linux distribution. Development ceased.
|-
| **CruxPPC** || CRUX || Inactive || Unknown || (Likely archived) || Big Endian || A port of the lightweight CRUX distribution to PowerPC. Status uncertain.
|-
! FreeBSD Distributions (Including Less Mainstream/Historical)
|-
| FreeBSD || BSD || Active || March 11, 2025 (13.5-RELEASE) || https://cgit.freebsd.org/src/ || Both || Mainstream, but including for completeness. Tier 2 support for 32-bit and 64-bit PowerPC. 32-bit support deprecated.
|-
| MidnightBSD || FreeBSD || Active || Rolling || https://github.com/midnightbsd || Both || Mainstream, but including for completeness. Aims to adapt FreeBSD for desktop usage.
|-
| NetBSD || BSD || Active || Rolling || https://github.com/netbsd/src || Both || Mainstream, but including for completeness. Known for portability. MacPPC is Tier II.
|-
| OpenBSD || BSD || Active || Rolling || https://github.com/openbsd/src || Big Endian || Mainstream, but including for completeness. Focuses on security and has official support for PowerPC, particularly 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 || Mainstream, but including for completeness. Has a PowerPC port, may require manual compilation.
|}
|}



Revision as of 16:40, 19 May 2025

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

  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

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-build and debootstrap
  • Debian Installer (d-i)
  • QA tools: lintian, piuparts, autopkgtest
Open Source Distributions Supporting PowerPC
Distribution Name Based On Active Status Last Release Source Code Repository Endian Support Notes
Linux Distributions (Including Less Mainstream/Historical)
Debian Debian Active May 17, 2025 (Debian 12.11) https://salsa.debian.org/ Big Endian (powerpc), Little Endian (ppc64el) Mainstream, but including for completeness. 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) Mainstream, but including for completeness. Dropped 32-bit PowerPC support after Fedora 22.
Gentoo Linux Source-based Active Rolling https://gitweb.gentoo.org/ Both (ppc, ppc64) Mainstream, but including for completeness. Requires compiling from source. ppc64 profile is bi-endian.
openSUSE SUSE Active Rolling (Tumbleweed), Stable (Leap) https://build.opensuse.org/ Both Mainstream, but including for completeness. Offers both stable and rolling releases.
Ubuntu Debian Active Rolling https://git.launchpad.net/ubuntu Both Mainstream, but including for completeness. Check specific release notes for architecture support.
Void Linux Independent Active (unofficial port) Rolling https://github.com/void-linux/void-packages Both Mainstream, but including for completeness. Community-led effort.
MintPPC Linux Mint/Debian Active Rolling https://github.com/MintPPC Both Mainstream, but including for completeness. Specifically designed for PowerPC (Old World and New World Macs).
Adélie Linux Independent Active December 20, 2024 (1.0-BETA6) https://git.adelielinux.org/ Big Endian Mainstream, but including for completeness. Supports G3, G4, and G5 PowerPC.
Fienix Debian Active Rolling https://gitlab.com/fienix Both Mainstream, but including for completeness. A derivative of Debian tailored for PowerPC.
Arch Linux Independent Active (unofficial port) January 1, 2025 (2025.01.01) https://gitlab.archlinux.org/archlinux Big Endian Mainstream, but including for completeness. Unofficial port.
Chimera Linux Independent Beta April 20, 2025 (Rolling Release) https://github.com/chimera-linux/ Both (ppc, ppc64le) Less mainstream, but active. Uses musl libc and FreeBSD userland.
**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.
**MkLinux** Microkernel (Mach) / Linux Inactive 1998 (Likely archived) Big Endian Early port of Linux to PowerPC Macintosh. Development ceased.
**OpenPPC** Independent Inactive 2006 (Likely archived) Big Endian Aimed to be a user-friendly PowerPC Linux distribution. Development ceased.
**CruxPPC** CRUX Inactive Unknown (Likely archived) Big Endian A port of the lightweight CRUX distribution to PowerPC. Status uncertain.
FreeBSD Distributions (Including Less Mainstream/Historical)
FreeBSD BSD Active March 11, 2025 (13.5-RELEASE) https://cgit.freebsd.org/src/ Both Mainstream, but including for completeness. Tier 2 support for 32-bit and 64-bit PowerPC. 32-bit support deprecated.
MidnightBSD FreeBSD Active Rolling https://github.com/midnightbsd Both Mainstream, but including for completeness. Aims to adapt FreeBSD for desktop usage.
NetBSD BSD Active Rolling https://github.com/netbsd/src Both Mainstream, but including for completeness. Known for portability. MacPPC is Tier II.
OpenBSD BSD Active Rolling https://github.com/openbsd/src Big Endian Mainstream, but including for completeness. Focuses on security and has official support for PowerPC, particularly 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 Mainstream, but including for completeness. 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.

Technical Resources

Community and Support