← Back to team overview

sslug-teknik team mailing list archive

Re: kernel too old

 

Den 30-06-2010 23:05, Kristian Nørgaard skrev:
> ( Da jeg ikke har fået nogen svar på sslug.programmering, tillader jeg
> mig at prøve her )
> 
> Jeg oplever ind i mellem at noget jeg har kompileret og linket statisk
> ikke kan køre på en ældre maskine.
> 
> Programmet fejler med: kernel too old.

> Det er jo naturligt nok for så vidt.
> Spørgsmål:
> 
> 1) Hvordan afgør jeg udfra et statisk linket program hvilken kerne den
> kræver?
> 
> 2) Hvilke faktorer bestemmer hvilken kerne mit program kræver?
>    * Kernen på udviklingsmaskinen?
>    * Compiler version?
>    * Anvendte features i programmeringen?

libc og features.

> 3) Er der nogle særlige velkendte spring mht til kompatibilitet, a la:
> programmer bygget med kerne 2.6.x eller derover vil aldrig kunne køre på
> en kerne 2.4.y eller lignende...


interfacet til kernen er systemkald (se "man syscalls" der står
kerneversioner). Der er kommet nogle med tiden til og forsvundet et par
stykker. Men de er pakket ind i funktioner i libc (fx glibc).


Eller naturligvis hvis du koder direkte mod kernes, fx laver
kernemoduler og inkluderer kerne-headers, men det er nok ikke tilfældet.

> 4) Er det muligt at bygge til en ældre kerne end den som man faktisk
> sidder med?

Ja, du kan selv oversætte en glibc med --enable-kernel=version

http://www.gnu.org/software/libc/manual/html_node/Configuring-and-compiling.html:

==
    This option is currently only useful on GNU/Linux systems. The
version parameter should have the form X.Y.Z and describes the smallest
version of the Linux kernel the generated library is expected to
support. The higher the version number is, the less compatibility code
is added, and the faster the code gets.
==

Eller måske bruge en anden libc, fx ulibc


> 
> 
> 
> / Kristian
> ( Ubuntu 10.04 )
> 
> 



References