Pi to 3.8.0 – Nasty hacks..
I have – after some messy hacking – managed to get the Raspberry Pi updated to kernel 3.8.0..
The starting point was the 3.7.1 Pi code, at https://github.com/Olipro/linux-RPi. The kernel.org patch for 3.8.0 assumes the code base is 3.7.0, so I had to ‘revert’ the 3.7.1 patch. The ‘incremental’ patches at kernel.org start with the 3.7.1 – to 3.7.2 patch, but the 3.7.0 to 3.7.1 patch can be found in the main kernel tree, at http://www.kernel.org/pub/linux/kernel/v3.0/patch-3.7.1.bz2 Then ‘revert’ the patch, by appending the -R parameter..
That will give you a 3.7.0 version of the Pi kernel/module/drivers code, so then apply the standard 3.8 kernel.org patch from ftp://ftp.kernel.org/pub/linux/kernel/v3.0/ to update it to 3.8.0.. This will not apply 100% cleanly, so more hacking needs to be done, to get it to compile without errors!
In drivers/mmc/host,
Remove all references to __devinit and __devexit from sdhci-bcm2708.c (as they have gone, since 3.8..)
and change line 1365 from
.remove = __devexit_p (sdhci_bcm2708_remove),
to
.remove = sdhci_bcm2708_remove,
Replace the 3.8 version of smsc95xx.c and smsc95xx.h with the 3.7 versions, in drivers/net/usb
Remove references to __devinit and __devexit and __devinitdata from all bcm2835……c source files in sound/arm.
This should result in a Pi kernel that will (cross) compile successfully, but not without several ‘warnings’..
Result:
Fedora release 18 (Spherical Cow)
Kernel 3.8.0-pi on an armv6l (ttyAMA0)
………….
# uname -a
Linux rgpi 3.8.0-pi #1 Fri Feb 22 16:13:35 GMT 2013 armv6l armv6l armv6l GNU/Linux
Note: This should only be attempted if you have some idea what you are doing. It is a nasty hack, and may well produce unforeseen errors. Not recommended for production environments, and where data is valuable!
Robert Gadsdon. February 22nd, 2013.
Updated February 27th, to provide correct link to the 3.7.0-1 patch, as pointed out by Joerg Neikes..
Revert patch
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.7.1.tar.bz2
Hallo Joerg,
Yes, I realized the patch was the one on the main kernel tree, after I wrote the article, but had a brain freeze at the time..
The correct one is http://www.kernel.org/pub/linux/kernel/v3.0/patch-3.7.1.tar.bz2
Thanks,
Robert.
Hi Robert,
seems like they removed th patch 3.7.1 on http.
wget ftp://www.kernel.org/linux/kernel/v3.0/patch-3.7.1.bz2
I put it on my Rasp now for future work.
wget http://212.117.64.103:/patch-3.7.1.bz2
Joerg
It is at http://www.kernel.org/pub/linux/kernel/v3.0/patch-3.7.1.bz2.
Robert.
What do you mean by “Remove all references to __devinit and __devexit” ?
Basically, open the source code file sdhci-bcm2708.c in an editor, and search for all occurrences of these, and delete them, then save the file.