Linux-libre

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Linux-libre
Original authorLinus Torvalds et al.
DeveloperFree Software Foundation Latin America
Initial releaseFebruary 20, 2008; 18 years ago (2008-02-20)[1]
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inC and Assembly
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Platformx86-64, i386, IA-32, ARM (Parabola), MIPS (Debian), m68k,[2] RISC-V,[3] IBM POWER8 and above[4]
    Available inEnglish
    TypeKernel
    LicenseGPL-2.0-only[5]
    Websitewww.fsfla.org/ikiwiki/selibre/linux-libre/

    According to the Free Software Foundation Latin America, Linux-libre is a modified version of the Linux kernel that contains no binary blobs, obfuscated code, or code released under proprietary licenses.[6] In the Linux kernel, those types of code are mostly used for proprietary firmware images. While generally redistributable, they do not give the user the freedom to audit, modify, or, consequently, redistribute their modified versions. The GNU Project keeps Linux-libre in synchronization with the mainline Linux kernel.[7]

    History

    [edit | edit source]

    The Linux kernel started to include binary blobs in 1996.[8] The work to clear out the binary blobs began in 2006 with gNewSense's find-firmware and gen-kernel. This work was taken further by the BLAG Linux distribution in 2007 when deblob and Linux-libre was born.[9][10]

    Linux-libre was first released by the Free Software Foundation Latin America (FSFLA), then endorsed by the Free Software Foundation (FSF)[11] as a valuable component for the totally free Linux distributions. It became a GNU package in March 2012.[12] Alexandre Oliva is the project maintainer.

    Proprietary firmware removal

    [edit | edit source]
    The GNU logo with Freedo, Linux-libre's mascot

    Methods

    [edit | edit source]

    The removal process is achieved by using a script called deblob-main.[13] This script is inspired by the one used for gNewSense. Jeff Moe made subsequent modifications to meet certain requirements for its use with the BLAG Linux and GNU distribution. There is another script called deblob-check,[14] which is used to check if a kernel source file, a patch or a compressed sources file still contains software which is suspected of being proprietary.

    Benefits

    [edit | edit source]

    Aside from the primary intended effect of running a system with only free software, the practical consequences of removing device firmware that a user is not allowed to study or modify has both positive and negative effects.

    Removal of device firmware can be considered an advantage for security and stability.

    When the firmware cannot be audited for bugs, security problems, and malicious functions such as backdoors, or when the firmware cannot be fixed by the Linux kernel maintainers themselves, even if they know of problems, it is possible for the entire system to be compromised by a malicious firmware. Without the ability to perform a security audit on manufacturer-provided firmware, even an innocent bug could undermine the safety of the running system.[15]

    Hardware support

    [edit | edit source]

    Removing proprietary firmware from the kernel will cause loss of functionality of certain hardware that does not have a free software replacement available.[7] This affects certain sound, video, TV tuner, and network cards, especially in the case of recent Intel Wi-Fi cards and recent Nvidia graphics cards, as well as some other devices. When possible, free software replacement firmware is provided as a substitute,[7][16] such as the openfwwf[17] for b43, carl9170[18] and ath9k_htc[19] wireless card drivers. Reviewer Ramces Red summarized the issue with Linux-Libre, writing, "it does not always have the best hardware support."[7]

    Microcode

    [edit | edit source]

    Linux-libre does not suggest the user install CPU microcode update bundles, since the code is proprietary.[20] Microcode update bundles have been used in the mainline Linux kernel version, among other things, to mitigate hardware vulnerabilities.[21]

    Availability

    [edit | edit source]

    The source code and precompiled packages of the deblobbed Linux kernel are available directly from the distributions which use the Linux-libre scripts. Freed-ora is a subproject which prepares and maintains RPM packages based on Fedora.[22] There are also precompiled packages for Debian[23] and derived distributions such as Ubuntu.[24]

    Distributions

    [edit | edit source]
    Parabola GNU/Linux-libre uses Linux-libre as its default kernel and ship with linux-libre-tools packages.[25]

    Distributions in which Linux-libre is the default kernel

    [edit | edit source]

    Considered small distributions

    Historical

    Distributions that compile a free Linux kernel

    [edit | edit source]

    These distros do not use the packaged Linux-libre but instead completely remove binary blobs from the mainline Linux kernel. The source is then compiled and the resulting free Linux kernel is used by default in these systems:

    • Debian (May install binary blobs with the installer or kernel by default.[28][29])
    • Trisquel (The Linux-libre deblob script is used during its development[30][31]).

    Historical

    Linux-libre as an alternative kernel

    [edit | edit source]

    Distributions in which Linux is the default kernel used and which propose Linux-libre as an alternative kernel:

    See also

    [edit | edit source]

    Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ jebba: BLAG :: View topic - Linux Libre Archived October 11, 2018, at the Wayback Machine BLAG forums, 2008.
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    15. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    16. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    17. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    18. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    19. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    20. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    21. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    22. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    23. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    24. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    25. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    26. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    27. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    28. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    29. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    30. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    31. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    32. ^ Index of downloads, ututo.org, retrieved 16 February 2017
    33. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    34. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    35. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    36. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    37. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    38. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    39. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    40. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    41. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]