[blag-devel] linux-libre

Delete this message

Reply to this message
Author: jeff
Date:  
To: blag-announce, BLAG Linux And GNU Development Discussion
Subject: [blag-devel] linux-libre
The official "vanilla" Linux kernel from Linus that gets distributed on
kernel.org has non-free[1] software in it. Here is one example from
linux-2.6.24/drivers/net/tg3.c:


/*
  * tg3.c: Broadcom Tigon3 ethernet driver.
  *
  * Copyright (C) 2001, 2002, 2003, 2004 David S. Miller (davem@???)
  * Copyright (C) 2001, 2002, 2003 Jeff Garzik (jgarzik@???)
  * Copyright (C) 2004 Sun Microsystems Inc.
  * Copyright (C) 2005-2007 Broadcom Corporation.
  *
  * Firmware is:
  *      Derived from proprietary unpublished source code,
  *      Copyright (C) 2000-2003 Broadcom Corporation.
  *
  *      Permission is hereby granted for the distribution of this firmware
  *      data in hexadecimal or equivalent format, provided this copyright
  *      notice is accompanying it.
  */



It then has screenfulls of non-free code like this:

0x0e000003, 0x00000000, 0x08001b24, 0x00000000, 0x10000003, 0x00000000,
0x0000000d, 0x0000000d, 0x3c1d0800, 0x37bd4000, 0x03a0f021, 0x3c100800,
0x26100000, 0x0e000010, 0x00000000, 0x0000000d, 0x27bdffe0, 0x3c04fefe,
0xafbf0018, 0x0e0005d8, 0x34840002, 0x0e000668, 0x00000000, 0x3c030800,
0x90631b68, 0x24020002, 0x3c040800, 0x24841aac, 0x14620003, 0x24050001,
0x3c040800, 0x24841aa0, 0x24060006, 0x00003821, 0xafa00010, 0x0e00067c,
0xafa00014, 0x8f625c50, 0x34420001, 0xaf625c50, 0x8f625c90, 0x34420001,
0xaf625c90, 0x2402ffff, 0x0e000034, 0xaf625404, 0x8fbf0018, 0x03e00008,
0x27bd0020, 0x00000000, 0x00000000, 0x00000000, 0x27bdffe0, 0xafbf001c,
0xafb20018, 0xafb10014, 0x0e00005b, 0xafb00010, 0x24120002, 0x24110001,
0x8f706820, 0x32020100, 0x10400003, 0x00000000, 0x0e0000bb, 0x00000000,
0x8f706820, 0x32022000, 0x10400004, 0x32020001, 0x0e0001f0, 0x24040001,
0x32020001, 0x10400003, 0x00000000, 0x0e0000a3, 0x00000000, 0x3c020800,
0x90421b98, 0x14520003, 0x00000000, 0x0e0004c0, 0x00000000, 0x0a00003c,
0xaf715028, 0x8fbf001c, 0x8fb20018, 0x8fb10014, 0x8fb00010, 0x03e00008,
0x27bd0020, 0x27bdffe0, 0x3c040800, 0x24841ac0, 0x00002821, 0x00003021,
0x00003821, 0xafbf0018, 0xafa00010, 0x0e00067c, 0xafa00014, 0x3c040800,
0x248423d8, 0xa4800000, 0x3c010800, 0xa0201b98, 0x3c010800, 0xac201b9c,
0x3c010800, 0xac201ba0, 0x3c010800, 0xac201ba4, 0x3c010800, 0xac201bac,
0x3c010800, 0xac201bb8, 0x3c010800, 0xac201bbc, 0x8f624434, 0x3c010800,
0xac221b88, 0x8f624438, 0x3c010800, 0xac221b8c, 0x8f624410, 0xac80f7a8,
0x3c010800, 0xac201b84, 0x3c010800, 0xac2023e0, 0x3c010800, 0xac2023c8,


Why Linus Torvalds tolerates and distributes this I have no idea. He surely has
some rationale buried in a LKML flamewar somewhere, but it doesn't change the
fact that there is clearly non-Free code in the Linux kernel.


A little over three years ago BLAG made a commitment[2] to RMS to only
distribute software that met the Free Software Definition. Since then, I have
learned about the issues with the non-Free Linux kernel (IIRC around the time
gnewsense popped up). I kept punting the issue hoping it would just go away and
upstream would solve it. They haven't and the blobs remained in the kernel.

After talking to Jaromil from dynebolic, looking at the gnewsense approach
(which has to remove additional non-free blobs that ubuntu adds), and debian's
approach I felt a single clean source tarball would be of benefit to everyone
who wants a truly Free Linux kernel. This new cleaned kernel source has been
dubbed "linux-libre" and I am its janitor. It is available here:


ftp://ftp.blagblagblag.org/pub/BLAG/linux/kernel/v2.6


If you actually go there, you'll see a TESTING directory--currently that is
where the tarballs are stored, but once everything is finalized they'll be in
the main directory. One issue I wanted to settle before moving things from
TESTING was a version numbering system that we could live with long term. I
have settled on the following approach, which is subject to change if anyone
comes up with good objections: I'm adding a last digit to show the "libre"
release based on the upstream kernel. Examples:

Linus version         Linux Libre version
2.6.24                2.6.24.0.0 first  libre release
2.6.24                2.6.24.0.1 second libre release
2.6.24.1              2.6.24.1.0 first  libre release
2.6.24.1              2.6.24.1.1 second libre release
2.6.24.2              2.6.24.2.5 sixth  libre release


So the latest linux-libre release is 2.6.24.2.1--my second spin based on
upstream's 2.6.24.2. In sum, the last digit is mine, the previous digits match
upstream.

The `deblob` script used to clean the kernel is in the scripts/ directory of
the tarball and can be used to clean other kernels.


Now that there is a nice tarball to use as a base, BLAG will be building it's
own kernels based upon that and not distributing any Fedora kernels. We have
unreleased ISOs spun that are using this new kernel and kernel RPMs are hitting
the repository. "Real-soon-now" we'll have new BLAG releases.


All for now,

-Jeff



[1] http://www.fsf.org/licensing/essays/free-sw.html
[2] http://forums.blagblagblag.org/viewtopic.php?t=571

BLAG forum thread on linux-libre:
http://forums.blagblagblag.org/viewtopic.php?t=4580

See also:
http://wiki.debian.org/KernelFirmwareLicensing
svn://svn.debian.org/kernel/dists/trunk/linux-2.6/debian/patches/debian/dfsg/files-1
http://svn.gnewsense.svnhopper.net/gnewsense/builder/trunk/firmware/firmware-removed


The initial list of removed drivers (additions/corrections most welcome):
########################
# Removed char Drivers #
########################
COMPUTONE - Computone IntelliPort Plus serial
ATARI_DSP56K - DSP56001 Device Driver
DRM_MGA - Matrox g200/g400
DRM_R128 - ATI Rage 128
DRM_RADEON - ATI Radeon
#########################
# Removed Media Drivers #
#########################
DVB_TDA10021 - Philips TDA10021 based
DVB_TDA8083 - Philips TDA8083 based
DVB_VES1820 - VLSI VES1820 based
DVB_VES1X93 - VLSI VES1893 or VES1993 based
DVB_AV7110 - AV7110 cards
DVB_BUDGET_AV - Budget cards with analog video inputs
DVB_BUDGET_CI - Budget cards with onboard CI connector
DVB_TTUSB_BUDGET - Technotrend/Hauppauge Nova-USB devices
USB_PWC - USB Philips Cameras
VIDEO_CPIA - CPiA Video For Linux
USB_DABUSB - DABUSB driver
USB_SN9C102 - USB SN9C1xx PC Camera Controller support
USB_IBMCAM - USB IBM (Xirlink) C-it Camera support
USB_VICAM - USB 3com HomeConnect (aka vicam)
#######################
# Removed net Drivers #
#######################
ACENIC - Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit
ADAPTEC_STARFIRE - Adaptec Starfire/DuraLAN support
BNX2 - Broadcom NetXtremeII
CASSINI - Sun Cassini
E100 - Intel(R) PRO/100+
MYRI_SBUS - MyriCOM Gigabit Ethernet
TEHUTI - Tehuti Networks 10G Ethernet
TIGON3 - Broadcom Tigon3
TYPHOON - 3cr990 series Typhoon
COPS - COPS LocalTalk PC
YAM - YAM driver for AX.25
PCMCIA_SMC91C92 - SMC 91Cxx PCMCIA
3C359 - 3Com 3C359 Token Link Velocity XL adapter
SMCTR - SMC ISA/MCA adapter
USB_KAWETH - USB KLSI KL5USB101-based ethernet device support
########################
# Removed s390 Drivers #
########################
QETH - Gigabit Ethernet device support
########################
# Removed SCSI Drivers #
########################
SCSI_QLOGICPTI - PTI Qlogic, ISP Driver
SCSI_ADVANSYS - AdvanSys SCSI
SCSI_QLOGIC_1280 - Qlogic QLA 1240/1x80/1x160 SCSI
#######################
# Removed USB Drivers #
#######################
USB_EMI26 - EMI 2|6 USB Audio interface
USB_EMI62 - EMI 6|2m USB Audio interface
USB_SISUSBVGA - USB 2.0 SVGA dongle support (Net2280/SiS315)
USB_SERIAL_KEYSPAN_MPR - USB Keyspan MPR Firmware
USB_SERIAL_KEYSPAN_USA18X - USB Keyspan USA-18X Firmware
USB_SERIAL_KEYSPAN_USA19 - USB Keyspan USA-19 Firmware
USB_SERIAL_KEYSPAN_USA19QI - USB Keyspan USA-19QI Firmware
USB_SERIAL_KEYSPAN_USA19QW - USB Keyspan USA-19QW Firmware
USB_SERIAL_KEYSPAN_USA19W - USB Keyspan USA-19W Firmware
USB_SERIAL_KEYSPAN_USA28 - USB Keyspan USA-28 Firmware
USB_SERIAL_KEYSPAN_USA28XA - USB Keyspan USA-28XA Firmware
USB_SERIAL_KEYSPAN_USA28XB - USB Keyspan USA-28XB Firmware
USB_SERIAL_KEYSPAN_USA28X - USB Keyspan USA-28X Firmware
USB_SERIAL_KEYSPAN_USA49W - USB Keyspan USA-49W Firmware
USB_SERIAL_KEYSPAN_USA49WLC - USB Keyspan USA-49WLC Firmware
USB_SERIAL_EDGEPORT - USB Inside Out Edgeport Serial Driver
USB_SERIAL_EDGEPORT_TI - USB Inside Out Edgeport Serial Driver (TI devices)
USB_SERIAL_TI - USB TI 3410/5052 Serial Driver
USB_SERIAL_WHITEHEAT - USB ConnectTech WhiteHEAT Serial Driver
#########################
# Removed video Drivers #
#########################
FB_ASILIANT - Asiliant (Chips) 69000 display support
FB_CT65550 - Chips 65550 display support
#########################
# Removed Sound Drivers #
#########################
SND_CS46XX - Cirrus Logic (Sound Fusion)
SND_KORG1212 - Korg 1212 IO
SND_MAESTRO3 - ESS Allegro/Maestro3
SND_YMFPCI - Yamaha YMF724/740/744/754