#! KRT's Blog
thoughts are things
#! KRT's Blog

Slackware-Libre BASH script

Share Tweet Share

A script to liberate a stock Slackware-15.0 installation. Motivation:  Freenix never released an iso for 15.0.  That inspired me to write a script that could transform a stock Slackware installation into something in the spirit of Freenix. Note:  This is NOT endorsed by Slackware proper (but I do …

A script to liberate a stock Slackware-15.0 installation.

Motivation:  Freenix never released an iso for 15.0.  That inspired me to write a script that could transform a stock Slackware installation into something in the spirit of Freenix.

Note:  This is NOT endorsed by Slackware proper (but I do thank Pat for all his hard work).  This NOT endorsed by Freenix.  This is NOT endorsed by the FSF.  This is NOT endorsed by ANYONE, actually.  I just created this as an excersise to see if I could write a BASH script.

I call it Slackware-Libre.

To join in the fun, just:

git clone https://git.disroot.org/shelldweller/Slackware-Libre.git

cd Slackware-Libre

chmod a+x *.sh  # the scripts need to be set as executable

Then you can run any (or all) of the scripts (as root), depending on your needs.

The slackware-libre.sh script rus the other three for a full conversion.  Installs libre packages by default, run the scripts separately to build packages only.

The remove-blacklist-nonfree-packages.sh script removes and blacklists all non-free packages as per the freenix.net forum.

The linux-libre-kernel-build-install.sh script builds (and optionally installs) the latest linux-libre kernel packages using Pat's script and the linux-libre source code.

The linux-libre-firmware-build-install.sh script builds (and optionally installs) the latest linux-libre firmware packages using Pat's script and the linux-libre-firmware source code.

NOTE:  I do not guarantee anything.  If you don't like the script, don't run it!  If you like it but want to change it, suggest changes or fork it!  I don't really care all that much.  I just wanted to see if I could write a BASH script that did a specific thing.  I have not tested for every edge case and I'm sure you can break it if you try.

from the README.md:

A project in the works to remove non-free packages from an installed Slackware-15.0 system. Both 64-bit and 32-bit versions can be liberated.

There are 4 scripts in total:

slackware-libre.sh

This is a meta-script that just runs the other three with necessary arguments. Needs to be run as root.

remove-blacklist-nonfree-packages.sh

This removes and blacklists all non-free packages as per freenix.net. This script can probably be run on any Slackware-based derivative, as long as slackpkg is present.

arguments:

  • BLACKLISTFILE = the location of your slackpkg blacklist file (default = /etc/slackpkg/blacklist)

linux-libre-kernel-build-instsall.sh

This builds and installs the Linux-Libre kernel, headers, modules. Modifies stock kernel-configs and SlackBuild files.

arguments:

  • STOCKVERSION = version of stock kernel to use kernel-configs from (default grabs latest from repo)
  • MAJORVERSION = branch of libre kernel to build from (defaults to stock kernel branch, i.e. 5.15)
  • LIBREVERSION = version of Linux-libre acutally being builg (defaults to latest version in MAJORVERSION branch)
  • RELEASE = release version of Slackware (i.e. 15.0). Fetches from running system by default.
  • REPOURL = URL of your preferred repo. (default = https://mirrors.slackware.com)
  • BUILDDIR = directory to build kernels in. THIS GETS DELETED, SO DON'T PASS AN IMPORTANT DIRECTORY YOU NEED TO KEEP! (default =/tmp/slackware-libre)
  • BLACKLISTFILE = the location of your slackpkg blacklist file (default = /etc/slackpkg/blacklist)
  • INSTALL_KERNEL = install packages after building them (default = no)

linux-libre-firmware-build-install.sh

This builds and installs the Linux-libre firmware. Modifies stock SlackBuild file.

arguments:

  • RELEASE = release version of Slackware (i.e. 15.0). Fetches from running system by default.
  • REPOURL = URL of your preferred repo. (default = https://mirrors.slackware.com)
  • BUILDDIR = directory to build firmware in. THIS GETS DELETED, SO DON'T PASS AN IMPORTANT DIRECTORY YOU NEED TO KEEP! (default =/tmp/slackware-libre)
  • BLACKLISTFILE = the location of your slackpkg blacklist file (default = /etc/slackpkg/blacklist)
  • INSTALL_FIRMWARE = install packages after building them (default = no)

NOTES:

  • The script DOES NOT clean up after itself.
  • You are invited to delete any leftover files and directories in /tmp/ .
  • However, the modified SlackBuild scripts and kernel packages all reside there.
  • You may want to save or share these before clearing out /tmp/ .
  • You will need about 3GB-5GB of free space for the full build.

For those unable or unwilling to build their own packages, some sample kernel and firmware packages can be found here.  I may or may not update these shortly after Pat updates the stock Slackware kernels.  There is an atom file (64-bit and 32-bit) you can put into a feed for update notifications if you're into that sort of thing.   YMMV.