Glasnost Linux Main Repo
Glasnost Linux is a Linux distribution forked from KISS Linux
- Clang is used as the default compiler instead of gcc
- LLVM bintuils are used instead of GNU binutils
- The KISS package manager is modified to support cross-compilation and rudimentary binary package updates
- Cross compilation of packages is supported wherever possible
- Built packages are located in: ~/.cache/kiss/bin/arch
- kiss-bup utility is provided to allow binary package updates on remote machines. Uses busybox httpd and curl
- For the KISS package manager, a value in the 2nd field of the
depends
file now implies that a package is required on the build machine, but not on the target machine
This system allows cross compilation of packages between any of the supported architectures:
- aarch64
- armv7
- i686
- powerpc64
- powerpc64le
- riscv64
- x86_64
chroot tarballs are provided for each architecture here.
This distribution is currently intended only for experienced Linux users. Installation should be treated similar to KISS Linux.
If you don't want to use the tarballs, it may be possible to bootstrap the system using this repo.
Make building packages for foreign architectures as easy as building native packages on KISS Linux.
If you are cross-building you need to know:
- The architecture you are building on
- The architecture you are building for
- You need to run Glasnost on the machine you are building on. Working inside a chroot is fine.
- Inside your Glasnost installation, download the Glasnost tarball for the architecture you want to build for.
- Use
sudo
to extract the tarball somewhere. - Set the environment variable
KISS_ROOT
to that location. - Run
kiss b packagename
orkiss u
as you would normally. You can leave yourKISS_PATH
the same.
On your installation of glasnost x86_64:
- Fetch the chroot tarball for aarch64
- Extract the tarball into a directory which represents your target machine. For example:
mkdir glasnost-pinephone
tar xf glasnost-chroot-aarch64-2021.10-01.tar.xz -C glasnost-pinephone --strip-components=1
KISS_ROOT=glasnost-pinephone kiss b openssh
- On your build machine, go to ~/.cache/kiss/bin
- Run httpd on some port. For example:
httpd -p 54321
- Run
ls
, make a note of the directory name that contains the packages you just built. This will be something likeglasnost-pinephone_2ebab4c766acfa8e3cec1678f3449faa
in the above example. - On the target machine (the one that will receive binary updates) run
export KISS_REMOTE_REPO=http://myserver:54321/reponame
, where reponame is the directory name from step 3. - On the target machine, run
kiss-bup
.
This is not like normal package management on e.g. Arch, where you can install particular binary packages from a remote repo. Glasnost and KISS are more like Gentoo, where you build packages yourself. On these distros you would not generally build all the packages in your repo - just the ones you are interested in using.
In Glasnost, you download and extract a chroot which becomes a binary repo for the target machine. When you use kiss-bup
, any packages built for that repo are installed on the target machine.
You can maintain multiple binary repos for any supported architecture. They will each have a directory in ~/.cache/kiss/bin/.
I prefer to use hardware which does not use non-free firmware or contain monitoring processors to which I do not have access. I also prefer to build the packages on my system to my own requirements as needed.
There are now several machines available capable of running Linux which do not have Intel ME, AMD PSP or similar technologies. Some like the Talos II have many cores and are capable of building large packges like Firefox in a relatively short time.
Others for example the PineBook Pro or PinePhone have relatively open hardware but are slower and may take many hours to compile larger packages.
I wanted a way to build packages on a more powerful machine and distribute them to a less powerful machine, regardless of architecture. Something like FreeBSD's Poudriere but simpler, for Linux.
- Dylan Araps for creating KISS Linux. Glasnost uses the KISS package manager and package repositories.
- M. Herdiansyah for creating the kiss-llvm bootstrap repo. This is what was used to bootstrap Glasnost.