[oe] Distros supporting older kernels?

Khem Raj raj.khem at gmail.com
Wed Jun 15 14:58:43 UTC 2011


On 6/14/2011 11:00 PM, Steffen Sledz wrote:
> On 12.06.2011 13:47, Koen Kooi wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> On 12-06-11 11:19, Steffen Sledz wrote:
>>> On 10.06.2011 00:43, Khem Raj wrote:
>>>> On 06/09/2011 06:02 AM, Steffen Sledz wrote:
>>>>> Hi Distro Maintainers,
>>>>>
>>>>> as you could read in earlier messages of mine, we're forced to use an
>>>>> older kernel version (2.6.24) for our hardware. This brings a lot of
>>>>> problems as you can imagine (e.g. we're also bound to udev-141).
>>>>>
>>>>> Until now we've used angstrom-2008.1 with some own patches
>>>>> according to
>>>>> the linux-libc-headers and udev versions for our hardware which were
>>>>> reasonably not accepted by the Angstrom maintainers (see
>>>>> discussions [1]
>>>>> or [2]).
>>>>>
>>>>> In there current situation (angstrom-2008.1 is deprecated, the new
>>>>> layer
>>>>> concept will come up) we're looking for a new, better, less hacky
>>>>> solution.
>>>>>
>>>>> My first question therefor is if there are any distros explicitely
>>>>> supporting older kernels (pre 2.6.27) yet? Or are willing to work
>>>>> on it?
>>>>>
>>>>
>>>> I guess a machine layer on top of oe-core could be something you can
>>>> work out and add/override needed recipes in this layer.
>>>
>>> I think it's not that easy.
>>>
>>> For kernels prior to 2.6.27 you can't use a lot of core components (e.g.
>>> udev with versions higher than 141 or eggdbus) which *a lot of other
>>> components* depend on.
>>>
>>> The underlying problem are some kernel API functions like inotify_init1
>>> or epoll_create1. Some distros (e.g. Angstrom) use linux-libc-headers
>>> 2.6.31 which is higher then 2.6.27 (what in my opinion conflicts with
>>> [1]). So there's no chance to detect the mentioned kernel functions
>>> correctly at compile time. :(
>>>
>>> As a consequence you have to check this in *all* programs at runtime.
>>> This is a good wish but hard to realize. E.g. the udev maintainers
>>> itself rejected a related patch[2] and say that they are not willing to
>>> support older kernel versions.
>>>
>>> So in my opinion there are two possible ways:
>>>
>>> 1. Use only the old supported versions of the components (udev-141 and
>>> glib-dbus instead of eggdbus) with all the consequences for other
>>> programs.
>>>
>>> 2. Determine *all* critical kernel functions, look for *all* the places
>>> where these are used, and patch them.
>>>
>>> Both are a lot more than some override recipes. So i think this needs an
>>> own distro with all the maintenance and testing.
>>
>> 3) Cut your losses and update your kernel port. At some point it just
>> isn't economically feasible aymore to bend userspace against an obsolete
>> kernel.
>
> You can believe me, we would like to do nothing more than this.
>
> But unfortunately we got only one big patch of more than 10000 lines
> against 2.6.24 from the CPU manufacturer (ex Oxford Semiconductors, now
> PLX Technology).
>
> We do not have the power to split up and port this code to newer kernel
> versions and the manufacturer is not willing to do it. :(

Create a linux-libc-headers recipe which builds out of your 2.6.24 
kernel that can fix glibc compatibility and lot other userspace problems
unless some apps really really need new features from kernel. Then you
have to either backport that functionality in kernel or use older 
version of app which does not depend on the new functionality so this
way you can probably have something

If a standard distro should support it or not depends on distro userbase
for that machine
>
> Regards,
> Steffen
>





More information about the Openembedded-devel mailing list