This repository contains the ISO build script, the configuration files for preinstalled packages, and the Github Actions workflows.
PulsarOS is built 100% by Github Actions, fully auditable end-to-end, and the ISO images are uploaded to Sourceforge (since Github Releases has very low size limits).
The build script checks for missing dependencies and tells you what to install. But if you want to set everything up beforehand:
sudo pacman -S --needed \
arch-install-scripts squashfs-tools grub xorriso mtools dosfstools \
binutils libisoburn sassc imagemagick psmisc \
fakeroot rsync jq curl unzip wget git \
meson ninja blueprint-compiler gettext gobject-introspection gtk-update-icon-cache cmake \
cargo rustThe last two lines are only needed for --local builds, which compile the
packages from the /PKG folder (custom Nautilus needs meson/ninja; the
Spotlight launcher is a Rust/GTK4 app built with cargo).
sudo apt-get install -y \
mmdebstrap squashfs-tools grub-common grub-efi-amd64-bin grub-pc-bin \
xorriso mtools dosfstools binutils unzip sassc imagemagick psmisc \
debian-archive-keyring rsync jq curl wget fakeroot git| Package | Purpose |
|---|---|
arch-install-scripts / mmdebstrap |
Bootstrap the base chroot (pacstrap / mmdebstrap) |
squashfs-tools |
Compress the rootfs into a SquashFS image |
grub / grub-common + grub-pc-bin + grub-efi-amd64-bin |
Build the GRUB bootloader for the ISO |
xorriso |
Create hybrid ISO images (BIOS + UEFI) |
mtools |
Manipulate FAT filesystems (EFI image inside ISO) |
dosfstools |
Format FAT partitions (EFI image) |
binutils / libisoburn |
Linker and ISO manipulation tools |
sassc |
SCSS compiler for GRUB and Plymouth themes |
imagemagick |
Image processing for branding assets |
psmisc |
Provides fuser to kill leftover processes on port 5900 |
fakeroot |
Build packages without real root privileges |
rsync |
Sync the base chroot into the working target |
jq / curl / wget / unzip / git |
Download and extract resources during build |
meson / ninja / blueprint-compiler / gettext / gobject-introspection |
Build the custom Nautilus (Finder) from source (--local) |
cargo / rust |
Build the native Spotlight launcher (Rust/GTK4, no Python) (--local) |
If you want to test ISOs without burning real hardware:
# Arch
sudo pacman -S qemu-full edk2-ovmf
# Debian/Ubuntu
sudo apt-get install -y qemu-system-x86 ovmfThe main file for the build is build-iso.sh, which accepts the following flags:
--branch stable, replacing stable with any other Debian branch; currently only stable can be used.--localto package from the packages in the/PKGfolder, which must be in the same folder that contains the/ISOfolder--refindIndicates that the rEFInd version should be built--grubBuilds the GRUB version--archBuilds the ARCH version (if this flag is absent, the Debian version is built)--nvidiaBuild ISO image with privative drivers (BROADCOM, NVIDIA, etc...)
The file for quickly testing the ISOs is run-qemu.sh, which accepts the following arguments:
--isoBoots from a previously built ISO image instead of directly from the chroot (build/rootfs-target)--refindSelects the rEFInd bootloader (used with--iso)--grubSelects the GRUB bootloader (used with--iso, default)--nvidiaUses the NVIDIA variant of the rootfs/ISO--archUses the ARCH variant of the rootfs/ISO--debianUses the Debian variant of the rootfs/ISO (default)--branch|-b <branch>Sets the branch, must bestable,forkyorrolling(default:stable)
Without --iso, the script boots the compiled rootfs (build/rootfs-target-<branch>-<distro>[-nvidia]) directly via 9pfs, without the need to package an ISO, making testing instantaneous.
The ISO version, release name, and branch must be specified.
PulsarOS is fully declarative; packages are built and obtained from repo PKG
All the code is licensed under MIT-INLED