What are the differences between Debian Linux Kernel and Linux-libre?
You've identified pretty much the only difference: the Debian kernel can load firmware, the Linux-libre kernel can't. Both kernels are free software, even as far as the Free Software Foundation is concerned — the FSF considers the Debian GNU/Linux distribution to be free software as long as no repositories are used beyond the main one; the issue they have with Debian is that Debian hosts non-free repositories on the same infrastructure.
Philosophically speaking, you could consider the difference to be as follows:
- the Debian kernel doesn't include any non-free firmware (bugs aside), but it allows users to load non-free firmware if they wish to do so;
- the Linux-libre kernel doesn't include any non-free firmware or anything looking like firmware, and it prevents users from loading non-free firmware even if they wish to do so.
Linux-libre is built by running a deblob
script on the kernel source code. This goes through the kernel source code, and makes various firmware-related changes:
- any firmware for which source code is available is preserved, but the script makes sure the source code is available;
- any module requiring firmware is stripped of the ability to load the firmware;
- any source code which looks like firmware (sequences of numbers) is removed;
- any file containing only firmware (e.g. the contents of
firmware/radeon
) is removed.
Some extra work goes into Linux-libre to restore functionality in certain cases; for example, the radeon
module is modified so that some r600
-supported cards can still be used, even without firmware. (Look for "Something like this might work on other radeon cards too." in the deblob
script.)
The Debian distribution includes one firmware package, firmware-linux-free
; this contains only firmware for which source code is available. The non-free repositories also contain a number of firmware packages built from firmware-nonfree
, but these aren't part of the main distribution.
That is pretty much the main, major and only difference: linux-libre
is the linux kernel with the "firmware binary blobs" removed.
What the FSF calls the firmware blobs are the parts of the linux kernel that are incompatible with the philosophy of free software. Often these pieces of firmware are in binary blobs which does not even come with any kind of source code (i mean, not even macro assembly). The linux libre project is hosted by the FSF at gnu.org but it is not a linux distro. The project is only an effort in cleaning the source code of the kernel, and is distributed as source code
The linux-libre kernel
is then compiled and shipped by 100% free software linux distros: BLAG, Dragora, Trisquel to cite a few. These distros take their philosophical commitment to distribute only free software, as defined by the FSF.
Debian on the other hand is not committed to distribute only free software as defined by the FSF. Debian's commitment is to the Debian social contract, which ironically has at its first commitment:
- Debian Will Remain 100% Free Software
I'm joking with the irony there. Debian's philosophical commitment is the same as the FSF's, the difference is how Debian defines free software and how the FSF defines free software. The difference between the two groups grew over time, which definition is better is too hard an argument to make. FSF is committed to is own guidelines whilst debian is committed to the guidelines presented in that same document linked above.
According to debian guidelines, less of the linux kernel code is considered not free software. Firmware blobs are not free software and are removed but as a separate effort. The kernel distributed by the debian project is slightly fatter (for lack of a better word).
Note that debian do have linux-firmware-free
and linux-firmware-nonfree
which allow users to include several pieces of firmware (some of them blobs) with apt-get
. Distros using linux-libre
do not have such facilities.
Of course, there is the major difference that the debian project
distributes a complete distro, whilst the linux-libre project
distributes code to be used by distros.