Giter Site home page Giter Site logo

doytsujin / glasnost Goto Github PK

View Code? Open in Web Editor NEW

This project forked from glasnostlinux/glasnost

0.0 1.0 0.0 7.2 MB

An experimental Linux distribution based on KISS Linux. Runs on various architectures and allows cross-compilation.

Home Page: https://www.glasnost.org

Shell 53.23% C 42.41% Awk 0.45% CMake 3.91%

glasnost's Introduction

Glasnost Linux Main Repo

Glasnost Linux is a Linux distribution forked from KISS Linux

Differences between KISS Linux and Glasnost 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.

Objectives

Make building packages for foreign architectures as easy as building native packages on KISS Linux.

How to cross build

If you are cross-building you need to know:

  • The architecture you are building on
  • The architecture you are building for
  1. You need to run Glasnost on the machine you are building on. Working inside a chroot is fine.
  2. Inside your Glasnost installation, download the Glasnost tarball for the architecture you want to build for.
  3. Use sudo to extract the tarball somewhere.
  4. Set the environment variable KISS_ROOT to that location.
  5. Run kiss b packagename or kiss u as you would normally. You can leave your KISS_PATH the same.

Example: building a package for the pinephone (aarch64) on an x86_64 machine

On your installation of glasnost x86_64:

  1. Fetch the chroot tarball for aarch64
  2. 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

  1. KISS_ROOT=glasnost-pinephone kiss b openssh

How to install cross-built packages onto another machine

  1. On your build machine, go to ~/.cache/kiss/bin
  2. Run httpd on some port. For example: httpd -p 54321
  3. Run ls, make a note of the directory name that contains the packages you just built. This will be something like glasnost-pinephone_2ebab4c766acfa8e3cec1678f3449faa in the above example.
  4. 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.
  5. 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/.

Motivation

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.

Thanks to:

glasnost's People

Contributors

jedavies-dev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.