PortaLinux Build/Ports System - Release Archive
The PortaLinux Build/Ports System is the main way of building a PortaLinux system. It is also the oldest part of the entire project. It started off as a reimplementation of PocketLinux, itself being CinnamonWolfy's first attempt at trying to build Linux From Scratch and eventually evolving into a Linux Live Kit clone before being completely scrapped due to its build system being extremely fragile. The first release of the PortaLinux Build System is a reimplementation of PocketLinux 0.04
Here are the releases of this project repo:
- v0.01: Initial release
- v0.02: Lower RAM and storage usage
- v0.03: Even lower RAM/Storage usage and Volume Scanning implementation
- v0.04: Smaller kernel
- v0.05: Build System Rewrite, and More
- v0.06: Build System Refactor, and More
- v0.07: More compatibility and Package manager
- v0.08: libncurses and nano, aarch64 support, custom-platforms and more
- v0.08.1: I'm sorry about the last release
- v0.08.1-hotfix: we are very sorry
- v0.09: ./compile refactor, bootable toy-musl, pl-init
- v0.10: LLVM, Nix, and pl-init
- v0.10.1: pl-glibc and pl-busymusl discontinued, pl-srv init system
- v0.10.2: pl-srv and boot init update
- v0.10.3: The final release of 0.10.x
- v0.11-beta: New config system, Ruby-based build system
- v0.11-rc1: Keyboard layout switcher, Zlib and pl-rt
- v0.11-rc1-hotfix: pl-srv hotfix update
- v0.11-rc2: Dependency-based init system, Complete PLML Module
- v0.11-rc3: Base API Complete, Logging init system, Dash as /bin/sh
- v0.11-rc4: Final Release Candidate
- v0.12-ports-test: Added PortaLinux Ports System
- v0.12-ports-test2: Multi-stage package support
- v0.11: Feature Update Complete
- v0.12-ports-test3: PLML support and better source fetching
v0.01: Initial release
Released on 2022/4/16 by CinnamonWolfy
First release
- System boots with functional rootfs in QEMU
- Takes about 3 minutes to boot, and requires 384MB/366 MiB of RAM to fully start.
v0.02: Lower RAM and storage usage
Released on 2022/4/17 by CinnamonWolfy
Second release
- Rootfs is now 30MiB smaller
- Bootable kernel image now requires 220MiB of RAM and 32MiB of storage to boot
v0.03: Even lower RAM/Storage usage and Volume Scanning implementation
Released on 2022/4/18 by CinnamonWolfy
Third release.
- RAM and storage usage has been lowered yet again. The bare minimum to start up PortaLinux is now 136MiB RAM and 22 MiB storage.
- Volume/Device scanning is starting to get implemented
v0.04: Smaller kernel
Released on 2022/4/23 by CinnamonWolfy
Fourth release
Features
- Kernel + Compressed rootfs is now 12 MiB in size
Known Bugs:
- i915 driver blackscreens while booting
- ACPI
might beIS disabled
v0.05: Build System Rewrite, and More
Released on 2022/9/17 by CinnamonWolfy
Fifth release
Changes
- Build system has been completely rewritten
- Added support for ARM and other non-x86 architectures
- Added support for musl C library
- Added support for external/custom kernel configs
v0.06: Build System Refactor, and More
Released on 2022/9/22 by CinnamonWolfy
Sixth release. Here are the new changes:
- Build system has been refactored so that it is easier to update/swap out components (thanks to (name witheld) for the idea and for helping with development :3)
- Pre-init now switches from ramfs to tmpfs
- Pre-init is much smaller
- Init now runs getty
- Init drops you into a login screen instead of a shell
- Glibc variant has Bash preinstalled
Current Goals:
- Get X11 running
- Create a simple package manager
v0.07: More compatibility and Package manager
Released on 2022/9/28 by CinnamonWolfy
Seventh release. Here are the changes:
- Better compatibility with other targets (thank you (name witheld) :3)
- Added the PortaLinux Package Manager (pl-install)
Current Goals:
- Proper PowerPC support
- Proper X11 support
v0.08: libncurses and nano, aarch64 support, custom-platforms and more
Released on 2022/10/12 by CinnamonWolfy
Eighth release. Here are the changes:
- Proper aarch64 support (thanks (name witheld) :3)
- Proper custom platforms support (once again, thank you (name witheld) :3)
- Added libncurses to
compile_toolchain
- Added libncurses and nano to
compile_extra_pkgs
- Default target changed from i486-gnu to i486-musl
v0.08.1: I'm sorry about the last release
Released on 2022/10/15 by CinnamonWolfy
NOTICE: I'm genuinely sorry about the issues with the last release. I will test my future releases more thoroughly from now on
Ninth release. Here's what's changed:
- It actually compiles a toolchain and rootfs now (thanks (name witheld))
- Fixed many bugs within the init process (
/etc/inittab
and/etc/init.d/rcS
) - Shrank code size
v0.08.1-hotfix: we are very sorry
Released on 2022/10/17 by (name witheld. Not CinnamonWolfy)
so we forgot to test the --target-system parser when the refactor happened, and turns out it broke. seems to be the only thing that broke though so i'm just gonna add -hotfix to the current version and re-upload the previous artifacts. please refer to v0.08.1's patch notes for what changed from v0.08. i'm gonna try to setup local ci on my server to make sure that small issues like this will never happen again in a release. again, we (me and @pocketlinux32) are very sorry, and we will make sure nothing like this will happen again (or at least for a while).
v0.09: ./compile refactor, bootable toy-musl, pl-init
Released on 2022/11/7 by CinnamonWolfy
Eleventh release. Here are the new changes:
./compile
has been completely refactored and has been split into various modules (thanks (name witheld) :3)- Toybox support has been added to pl-musl. This specific configuration is known as pl-toymusl
- pl-init now boots to a respawning shell
- Added some LLVM flags for a future version. Currently unused
v0.10: LLVM, Nix, and pl-init
Released on 2022/11/20 by (name witheld. Not CinnamonWolfy)
Twelfth Release! Changes:
- LLVM PortaLinux is here!!! Right now its experimental and only tested on the default target of i486-musl, but future releases will fully stabilize it and make it the default toolchain for Musl PortaLinux, except on targets that are considered experimental or not available in the upstream LLVM project. You can try it out by launching the compile script with LLVM=1 ./compile
- A shell.nix and flake.nix file were added to provide a reproducible development environment and easier building on NixOS. This was silently added in the previous version
but is now fully tested to build a LLVM toolchain, kernel, and boot-img on NixOS running the script with
nix-shell --pure
. ./compile --build boot-img
no longer requires the whole script to be run as root, it will now usepkexec
orsudo
to ask for permission to create device nodes.- pl-init can now start programs and services through
/etc/inittab
. This feature is experimental and disabled by default.
This release of PortaLinux is the result of months of hard work to refactor ./compile
and lots searching through obscure documentation, blog posts, and old guides to build a
LLVM/clang sysroot from source. In the next couple of releases we will stabilize the LLVM support to work on all stable targets supported by the upstream LLVM project, experimenting
with adding a vendored rust toolchain to for dynamic linking of rust libraries, adding official PowerPC releases, adding support for Wayland and X11, and more.
v0.10.1: pl-glibc and pl-busymusl discontinued, pl-srv init system
Released on 2023/3/15 by CinnamonWolfy
After almost 4 months, a new PortaLinux update has been made ^w^
Thirteeth release. Here are the new changes made:
- Removed Glibc and Busybox support from the build script (RIP pl-glibc 2019-2023, you will not be missed x3)
- Switched from toybox init system to pl-srv init system. This is the first release of the pl-srv init system and will eventually be moved to its own repo
- pl32lib and libplml have been added to the base PortaLinux rootfs. These libraries will make part of the Base PortaLinux API
v0.10.2: pl-srv and boot init update
Released on 2023/4/17 by CinnamonWolfy
Fourteenth Release. Here are the changes:
- pl-srv has been moved into its own repo: pocketlinux32/pl-srv
- Did some changes in
pl-files/pl-utils/toybox-init
and the shell service files to output a boot greet message
This is the last PortaLinux release with this build system. PortaLinux 0.11 will have a proper modular config system written in Python
v0.10.3: The final release of 0.10.x
Released on 2023/7/10 by CinnamonWolfy
I might have said that 0.10.2 was gonna be the last release with this build system, but I broke 0.10.2's build system by upgrading some of my projects to a better build system. Anyways, fifteenth release, and here are the changes:
- pl32lib-ng and libplml build procedures have been updated to work with their new build system
- pl32lib-ng download URLs has been modified to download a specific version of the library rather than the main branch
- Updated toybox version from 0.8.8 to 0.8.9. This fixes the broken filesystem I/O behavior in toybox 0.8.8 and older (I corrupted a PortaLinux install due to this bug, so it would've really broken some systems. Luckily, it's only recently that this dingus project has gotten any sort of attention, so I shouldn't get yelled at x3)
This version should not break with updates to any of my other projects, so this will be the last 0.10.x release, and the next release (0.11) will have a brand-new build system written in Ruby
v0.11-beta: New config system, Ruby-based build system
Released on 2023/8/16 by CinnamonWolfy
Sixteenth Release. Here are the new features:
- Configure system and Build system have been properly separated
- Configure system rebuilt from scratch
- Configure system has a patching and overlay system (thank you (name witheld))
- Build system almost completely rewritten in Ruby
- Added
pl-info
command - Merged and modified init scripts
- Modified issue file to be automatically updateable by the init script
- Updated Toybox to 0.8.10
- Updated pl32lib-ng to 1.06
- Updated libplml to 0.02
- Updated pl-srv to 0.03
- Updated LLVM to 16.0.6
- Updated GCC to 13.1.0
- Updated Linux to 5.15.126
This was a massive update changing almost all aspects of the project's tools. I can now rest easy knowing this is the latest version of this project ^w^
v0.11-rc1: Keyboard layout switcher, Zlib and pl-rt
Released on 2023/11/13 by CinnamonWolfy
Seventeenth release. Here are the changes:
- pl32lib-ng and libplml have been replaced by pl-rt 0.06.1
- This is the new PortaLinux runtime and it combines both into one concise library
- Added Zlib
- This kinda had to be added, since a big chunk of embedded applications use some form of compression, which also includes the future C-based PortaLinux package manager. It would just be easier for everyone if it was just included, and it would make gzip a lot faster while not even adding 32KB to the overall size of the rootfs
- pl-srv has been updated to 0.04
- Toybox now uses system Zlib
Developer Note: released just on time for portalinux day ^w^
v0.11-rc1-hotfix: pl-srv hotfix update
Released on 2023/11/13 by CinnamonWolfy
Eighteenth release. Here are the changes:
- pl-srv updated to 0.04.2
- I screwed up with the bandaid fix, sorry about that
v0.11-rc2: Dependency-based init system, Complete PLML Module
Released on 2023/12/8 by CinnamonWolfy
Nineteenth Release. Here are the features:
- pl-rt updated to 0.07
- Adds array support in PLML
- pl-srv updated to 0.05.1
- Adds support for basic dependency based startup
- Build script supports external custom scripts
- Configure system supports arbitrary package downloads outside of preset
- Automount script can now properly manage storage device mounting
LLVM support will most likely be added in the next release
v0.11-rc3: Base API Complete, Logging init system, Dash as /bin/sh
Released on 2024/1/2 by CinnamonWolfy
Twentieth release. Here are the changes:
- The Base PortaLinux API is complete, which means that any software targeting this version will always work on subsequent PortaLinux releases
- toysh has been replaced with Dash as the system shell, as toysh has a bug where it refuses to terminate after a script exits
- pl-srv has logging support
- gcc updated to 13.2.0
- Linux kernel updated to 6.1.69
Developer's notes:
we're almost done with 0.11, pl-rt and pl-srv just need to be fully finished :3
v0.11-rc4: Final Release Candidate
Released on 2024/7/22 by CinnamonWolfy
Twenty-first release. Here are the changes:
- Updated pl-rt from 1.00-rc1 to 1.03.2
- I added quite a few more API calls, as well as support for building with Meson
- Updated pl-srv from 0.06 to 0.08.1
- This update has made pl-srv a true dependency-based init system (making it a true systemd-like init system), and it also added Meson support as well as adding simple service logging
- Updated toybox from 0.8.10 to 0.8.11
- This added xzcat to the root filesystem
- Updated musl from 1.2.4 to 1.2.5
This will be the last big change to the 0.11 release of PortaLinux. Any more features will be added on a separate branch for the 0.12 release, and will be backported to 0.11 after the final 0.11 update is released. The LLVM script is the last piece remaining to be fully rewritten and it will be finished soon
v0.12-ports-test: Added PortaLinux Ports System
Released on 2024/8/20 by CinnamonWolfy
Twenty-second release. Here are the new changes:
- Added pl-ports.rb
- This will become the PortaLinux Ports System and it will be the main way to retrieve packages from the Internet
- The PortaLinux Build System will be updated to use the facilities found here
- Updated README.md
- It is now more readable and to the point
Developer Notes:
this will be the start of another major update to pl. hopefully it won't take a year to release tho
v0.12-ports-test2: Multi-stage package support
Released on 2024/9/2 by CinnamonWolfy
Twenty-third release. Here are the changes:
- Added Multi-Stage Package support.
- This won't really be useful within the regular ports system, but it will be very useful in the PortaLinux Build System rewrite
Developer Notes:
this will be the last ports test release. next 0.12 release will be when i get the rootfs to compile. next release in line will be the final version of 0.11
v0.11: Feature Update Complete
Released on 2024/9/11 by CinnamonWolfy
Twenty-fourth release. Here are the changes over v0.11-rc4:
- LLVM support is complete
- Some patches to the build system to make it less GCC-centric
- Updates to some packages
Developer Notes:
this version is complete. (name witheld. Not CinnamonWolfy) will take over the maintenance of this branch while i work on 0.12
v0.12-ports-test3: PLML support and better source fetching
Released on 2025/1/7 by CinnamonWolfy
Twenty-fifth release, Here are the changes:
- PLML support has been added to Ports System
- A PLML RubyGem has been created and can be compiled by running
cd plml && ./build.sh
- A pure Ruby implementation of the gem will probably be written and this native wrapper will be kept for Native Ports System
- Improved source fetching
- Added support to download sources hosted on GitHub
Developer Notes:
this will be the start of another major update to pl. hopefully it won't take a year to release tho