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.