Current Software Specifications: Difference between revisions
Hiiripollo (talk | contribs) |
Hiiripollo (talk | contribs) |
||
| Line 188: | Line 188: | ||
=== Related Projects to Watch === | === Related Projects to Watch === | ||
{| class="wikitable" | {| class="wikitable sortable" | ||
|+ Open Source Distributions Supporting PowerPC | |+ Open Source Distributions Supporting PowerPC (Including Less Mainstream Projects) | ||
|- | |- | ||
! Distribution Name !! Based On !! Active Status !! Last Release !! Source Code Repository !! Endian Support !! Notes | ! 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) | ! Linux Distributions (Including Less Mainstream/Historical) | ||
|- | |- | ||
| | | Adélie Linux || Independent || Active || December 20, 2024 (1.0-BETA6) || https://git.adelielinux.org/ || Big Endian || {{check}} || {{check}} || 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 || {{check}} || {{check}} || Unofficial port. | ||
|- | |- | ||
| | | Chimera Linux || Independent || Beta || April 20, 2025 (Rolling Release) || https://github.com/chimera-linux/ || Both (ppc, ppc64le) || {{check}} || {{check}} || Uses musl libc and FreeBSD userland. | ||
|- | |- | ||
| | | CruxPPC || CRUX || Inactive || Unknown || (Likely archived) || Big Endian || {{check}} || {{cross}} || 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) || {{check}} || {{check}} || 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) || {{cross}} || {{check}} || Dropped 32-bit PowerPC support after Fedora 22. | ||
|- | |- | ||
| | | Fienix || Debian || Active || Rolling || https://gitlab.com/fienix || Both || {{check}} || {{check}} || A derivative of Debian tailored for PowerPC. | ||
|- | |- | ||
| | | Gentoo Linux || Source-based || Active || Rolling || https://gitweb.gentoo.org/ || Both (ppc, ppc64) || {{check}} || {{check}} || Requires compiling from source. ppc64 profile is bi-endian. | ||
|- | |- | ||
| | | MkLinux || Microkernel (Mach) / Linux || Inactive || 1998 || (Likely archived) || Big Endian || {{check}} || {{cross}} || Early port of Linux to PowerPC Macintosh. Development ceased. | ||
|- | |- | ||
| | | MintPPC || Linux Mint/Debian || Active || Rolling || https://github.com/MintPPC || Both || {{check}} || {{check}} || Specifically designed for PowerPC (Old World and New World Macs). | ||
|- | |- | ||
| | | openSUSE || SUSE || Active || Rolling (Tumbleweed), Stable (Leap) || https://build.opensuse.org/ || Both || {{check}} || {{check}} || Offers both stable and rolling releases. | ||
|- | |- | ||
| | | OpenPPC || Independent || Inactive || 2006 || (Likely archived) || Big Endian || {{check}} || {{cross}} || Aimed to be a user-friendly PowerPC Linux distribution. Development ceased. | ||
|- | |- | ||
| | | Ubuntu || Debian || Active || Rolling || https://git.launchpad.net/ubuntu || Both || {{check}} || {{check}} || Check specific release notes for architecture support. | ||
|- | |- | ||
| | | Void Linux || Independent || Active (unofficial port) || Rolling || https://github.com/void-linux/void-packages || Both || {{check}} || {{check}} || Community-led effort. | ||
|- | |- | ||
| | | Yellow Dog Linux || Red Hat/Fedora || Inactive || August 6, 2009 (6.2) || (Likely archived, e.g., via WayBack Machine) || Both || {{check}} || {{check}} || Historically significant for PlayStation 3 and PowerPC Macs. Development ceased. | ||
|- | |- | ||
! FreeBSD Distributions (Including Less Mainstream/Historical) | ! FreeBSD Distributions (Including Less Mainstream/Historical) | ||
|- | |- | ||
| FreeBSD || BSD || Active || March 11, 2025 (13.5-RELEASE) || https://cgit.freebsd.org/src/ || Both || | | FreeBSD || BSD || Active || March 11, 2025 (13.5-RELEASE) || https://cgit.freebsd.org/src/ || Both || {{check}} || {{check}} || 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 || | | MidnightBSD || FreeBSD || Active || Rolling || https://github.com/midnightbsd || Both || {{check}} || {{check}} || Aims to adapt FreeBSD for desktop usage. | ||
|- | |- | ||
| NetBSD || BSD || Active || Rolling || https://github.com/netbsd/src || Both || | | NetBSD || BSD || Active || Rolling || https://github.com/netbsd/src || Both || {{check}} || {{check}} || Known for portability. MacPPC is Tier II. | ||
|- | |- | ||
| OpenBSD || BSD || Active || Rolling || https://github.com/openbsd/src || Big Endian || | | OpenBSD || BSD || Active || Rolling || https://github.com/openbsd/src || Big Endian || {{check}} || {{check}} || Focuses on security and has official support for Apple's Mac-based PowerPC hardware. | ||
|- | |- | ||
! Other Open Source Distributions (Including Less Mainstream/Historical) | ! Other Open Source Distributions (Including Less Mainstream/Historical) | ||
|- | |- | ||
| Haiku || Independent (BeOS inspired) || Beta || Rolling || https://github.com/haiku/haiku || Little Endian || | | Haiku || Independent (BeOS inspired) || Beta || Rolling || https://github.com/haiku/haiku || Little Endian || {{check}} || {{cross}} || Has a PowerPC port, may require manual compilation. | ||
|} | |} | ||
Revision as of 16:47, 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
- 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
| 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 | (Likely archived) | 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 | (Likely archived) | 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 | Independent | Active (unofficial port) | Rolling | https://github.com/void-linux/void-packages | 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.