Linux, as distributed by Linus Torvalds et al, contains non-Free Software, i.e., software that does not respect your essential freedoms, and it induces you to install additional non-Free Software that it doesn't contain.

GNU Linux-libre is a project to maintain and publish 100% Free versions of Linux, removing the offending portions.

Freed-ora is a sub-project that prepares and maintains 100% Free RPMs that track Fedora's non-Free kernels.

Our kernel-libre packages are used by BLAG, a 100% Free distribution based on Fedora, and GdNewHat, another RPM distro that purports to be 100% Free.

We thank the FSF for offering us build machines, and BLAG for having offered us build machines and mirrors in the past.

Downloads

The primary download site and its mirrors contain yum repositories with 100% Free kernel source and binary packages for various releases of Fedora. There's a sample yum.repo here.

Packages containing debug information for the kernels are provided in a separate debuginfo repository. They are much larger than the kernels themselves, and of relatively limited use, so not all mirrors carry them.

Freed-ora packages

  • freed-ora-release: Sets up yum configuration files and signature keys for the yum repositories listed below, enabling only stable releases and updates by default.
  • freed-ora-freedom: Checks at install-time that none of the non-Free packages in Fedora are installed, configures kernel-libre as default kernel for future kernel updates, and avoids the accidental installation of most such packages in the future.
  • freed-ora (src): Source RPM for the packages above.

Suggested use:

rpm --import http://linux-libre.fsfla.org/pub/linux-libre/SIGNING-KEY.linux-libre
rpm -i http://linux-libre.fsfla.org/pub/linux-libre/freed-ora/freed-ora-release.noarch.rpm
yum -y install freed-ora-freedom

The last command above will fail as long as you have any non-Free packages from Fedora remaining. The error output will let you know which packages you are to remove to achieve “Freed-ora freedom”. It's likely to report something like:

freed-ora-freedom conflicts with *-firmware-...
freed-ora-freedom conflicts with microcode_ctl-...
freed-ora-freedom conflicts with kernel-...
freed-ora-freedom conflicts with perf-...

The *-firmware packages can be removed right away, but you have to be more careful about the kernel packages.

Start by removing firmware and microcode packages, replacing *-firmware with whatever firmware packages the attempt to install freed-ora-freedom reported. A literal *-firmware will probably work, but it might remove too much, if Fedora ever releases Free packages whose names match this.

yum remove *-firmware microcode_ctl

Then, for each reported kernel-* and perf-* package, install the corresponding -libre package:

yum install kernel-libre-...
yum install perf-libre-...

Make the newly-installed kernel-libre the default for the next boot:

grubby --set-default=`ls -t /boot/vmlinuz-*libre* | sed 1q`

Then reboot into it, and when the system comes back up, you can safely remove the non-Free kernel packages:

yum remove kernel-...
yum remove perf-...

And now, you can install freed-ora-freedom, to arrange for future kernel-libre updates to be chosen as default, to avoid having non-Free firmware installed behind your back, and to get a warning when a non-Free kernel is installed.

yum install freed-ora-freedom

Stable releases and updates

These are some Freed versions of kernels released by Fedora, as stable releases or updates. Their non-Free counterparts have presumably gone through the Fedora release or update testing process.

Updates under test

These are some Freed versions of kernels published by Fedora for testing purposes. Their non-Free counterparts have presumably gone through some initial testing that precedes the publication as an update candidate for testing.

Random additional builds

These are some Freed versions of kernels ever gone through the Fedora package build system. Neither these packages nor their non-Free counterparts have gone through any quality assurance whatsoever. They might as well fry your machine or wipe out all your data, and you may very well not like that. You have been warned!

Raw sources

The src directory is a dumping ground for Freed versions of Linux upstream source tarballs, stable and development (-rc and -git) patches. Patches that don't require clean-up are not stored there.

It is organized to simplify its use by the build system. If you are looking for a more organized tree, look in http://www.fsfla.org/selibre/linux-libre/download/releases instead.

SVN repository

Freed-ora

The directories in this tree contain sources for freed-ora-release and freed-ora-freedom.

Current

The directories in this tree track the kernel package in the Fedora git repository, containing all patches, spec and configuration files needed to build Linux-libre RPMs.

Earlier versions tracked the CVS repository, containing only files that are modified or added in order to make the kernel 100% Free Software.

Tags

These are historical snapshots of earlier versions of the trees above, enabling the complete sources of any earlier builds to be recovered.

Recovering sources and building

First, check out a current or historical tree from FSFLA's Subversion repository, for example:

svn checkout \
http://www.fsfla.org/svn/fsfla/software/linux-libre/freed-ora/current/master

Now you'll have to download tarballs and patch files:

fedpkg sources

This will fail to download a -libre tarball or patch files, because they are not in Fedora's source repositories. You'll be able to download any missing files from our own Freed-ora source repository, http://linux-libre.fsfla.org/pub/linux-libre/freed-ora/src, and you'll be able to check you got the right file by gpg-checking the .sign file you already got from the SVN repository. So, if fedpkg complains that it can't get linux-2.6.35-libre2.tar.bz2, run:

wget http://linux-libre.fsfla.org/pub/linux-libre/freed-ora/src/linux-2.6.35-libre2.tar.bz2
gpg --verify linux-2.6.35-libre2.tar.bz2.sign
fedpkg sources

The last command will let fedpkg download other files it can. If it fails another file, repeat until it completes successfully, at which point you should be ready to build:

rpmbuild -bs --define "_sourcedir `pwd`" *.spec
mock rebuild *.src.rpm # or rpmbuild --rebuild *.src.rpm
mock rebuild --target noarch *.src.rpm # likewise

Now, if it was the wget command that failed, check this section.

Recovering old CVS-based sources

After you check out an old CVS build tag from within http://www.fsfla.org/svn/fsfla/software/linux-libre/freed-ora/tags, fetch the remaining files from the Fedora CVS repository:

cvs -z9 update

You don't need a Fedora login. This uses anonymous access to the CVS server to fetch the Free files that we don't duplicate in FSFLA's repository. Files containing non-Free Software won't be downloaded by this command, CVS will show them as locally modified or removed.

Then, use Fedora's infrastructure to fetch the tarballs and patch files:

make download

At this point you should be ready for Fedora local builds.

make mock
make x86_64
make i686
make noarch

Failure to download sources

Old Freed tarballs or patch files may be removed by the time you try to download them. It is still possible to recover the Freed tarballs and patch files, but it takes a bit more work, and it will involve getting non-Free Software downloaded from kernel.org into your machine.

For old CVS-based versions, revert the file named upstream to what's in Fedora CVS, then download the sources from kernel.org, and finally revert upstream to what's in SVN:

cvs diff -u upstream | patch -p0 -R
make download
svn revert upstream

You'll notice there are some .xdelta or .xdelta.bz2 files in your tree, whose names resemble those you have downloaded, but with a word 'libre' in them. These are the ones you'll need to clean up the non-Free tarballs and patches into Free ones.

We use xdelta rather than patch files because they're unidirectional, so we don't redistribute the non-Free Software ourselves, not even as a reversible patch meant to remove that non-Free Software. Besides, xdelta supports binary files, so it can be used for the tarballs.

We create xdeltas without internal compression, so that you can have an idea of what's being added by the delta, although not quite see what's being removed.

To recover say the linux-2.6.32-libre.tar.bz2 tarball out of linux-2.6.32.tar.bz2, run:

bunzip2 < linux-2.6.32.tar.bz2 > linux-2.6.32.tar
xdelta patch linux-2.6.32-libre.xdelta linux-2.6.32.tar \
                         linux-2.6.32-libre.tar
bzip2 -9 linux-2.6.32-libre.tar.bz2
rm -f linux-2.6.32.tar

The deblobbing approach introduced by Linux-libre doesn't require deblobbing of patch files very often. However, at times non-Free Software is added or moves about during development cycles, or even as part of stable releases. When this happens, you can follow a similar procedure to apply the xdelta so as to form cleaned-up patches.

Sadly, for newer builds based on Fedora's git repository, there's no automated way to locate the non-Free sources to apply the xdeltas to, you have to locate them in kernel.org yourself.

Be Free!