Kernel Deblobing

From Wikipedia: A binary blob is a closed-source binary-only piece of software without publicly available source code. Since 1996, Linux kernel includes more and more binary blobs, to handle closed-sources devices (without technical documentation which would authorize free firmwares development for them). Proprietary softwares always introduce security or privacy concerns.

Linux kernel deblobing is the operation which removes binary blobs, to get a completly free kernel. This is done with shell scripts named deblob-main, deblob-check and deblob-version, where version represents the kernel revision. Thoses scripts are provided by the Free Software Foundation Latin America, for each kernel revision since 2.6.21 (FSFLA also provides Linux-libre distribution).

Deblobing kernel obviously means that devices with proprietary firmwares can't be used, like closed-sources Intel Wifi or Nvidia graphics cards for example.

Deblobing hardened-sources
For set the USE flag   in, sources will be automaticly deblobed after being emerged.

Deblobing gentoo-sources (or any other sources)
USE flag no more deblobs, this must be manualy done.

is used in the following commands, adapt them when needed.

Emerging Sources
If not done, first accept  licence, needed for gentoo-sources.


 * If the file exists:


 * If the file doesn't exist:

Then emerge gentoo-sources:

… and set symlink to the emerged sources. First get the list of available sources:

… then choose the right ones:

Then change directory to :

Downloading Deblob Scripts
Explore FSFLA's deblob scripts tree and download the emerged kernel revision scripts. directory is choosen for  sources:

Make the scripts executable (by root only):

Python Version
Deblob scripts use Python 2.7 interpreter, set it at the beggining of the interpreters list. Get the list with:

… then:

Deblob Command
Then start deblobing:

During the operation, which may be long, all deblobing information is displayed. After that the kernel can be compiled as usual. -gnu suffix will be appended to it's name, 4.4.26-gentoo-gnu in this example.

List of Removed Blobs
To get the list of removed blobs with their kernel symbol names, redirect the deblob command output to a file:

As kernel sources can be re-emerged after being deblobed, this is a convenient way, without kernel compilation, to investigate if targeted hardware should work without binary blobs.

External resources

 * The Free Software Foundation Latin America (FSFLA) web site
 * The Binary blob Wikipedia article