Pagina 1 di 1

Kernel custom e pacchetti glibc e libsvga_helper

Inviato: ven 9 mag 2008, 15:15
da gianco
Ciao a tutti,
vorrei soddisfare una piccola curiosità: normalmente mi ricompilo un kernel ad hoc per la mia macchina e mi chiedevo se fosse magari necessario (o comunque preferibile, in termini di compatibilità e performance) avere l'accortezza di ricompilarsi anche i due pacchetti glibc e libsvga_helper, dal momento che il primo, come da SlackBuild di Pat, ha come opzione del configure

Codice: Seleziona tutto

--with-headers=/usr/src/linux-${KERNEL_HEADERS}/include
con ${KERNEL_HEADERS} = 2.6.24.5 (nella versione attuale della 12.1) e il secondo è strettamente legato al kernel distribuito con Slackware e quindi con versioni diverse del kernel, verrebbe a mancare del tutto il modulo in questione.

Dico anche che, negli anni passati ad usare Slackware, la cosa non mi ha mai creato alcun problema e che, come ho detto all'inizio del post, è solo una pura curiosità.

Spero di non aver sollevato questioni di lana caprina :D .

Re: Kernel custom e pacchetti glibc e libsvga_helper

Inviato: sab 10 mag 2008, 2:13
da Toni
dal changelog
a/glibc-solibs-2.7-i486-2.tgz: Upgraded to glibc-2.7 compiled against Linux
2.6.23.9 kernel headers.

l/glibc-2.7-i486-2.tgz: Upgraded to glibc-2.7, built against Linux 2.6.23.9
kernel headers.

l/glibc-profile-2.7-i486-10.tgz: Recompiled against Linux 2.6.24.5 headers.
sicuramente i pacchetti glibc* sono strettamente correlati al kernel .
Qualsisi programma faccia uso di risorse hardware , e quindi deve interpellare il kernel ,lo fa attraverso le glibc (gnu c library) , ovvero l'unico modo per interfacciarsi al kernel sono le glibc.

Per quanto riguarda libsvga_helper non saprei dirti.

Re: Kernel custom e pacchetti glibc e libsvga_helper

Inviato: sab 10 mag 2008, 9:54
da gianco
Grazie della risposta, googlando un pochino, in realtà ho scoperto che, per quanto riguarda le glibc l'opzione veramente importante sarebbe questa:
`--enable-kernel=version'
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.
di cui questa sarebbe poi solo una logica conseguenza:
`--with-headers=directory'
Look for kernel header files in directory, not /usr/include. Glibc needs information from the kernel's private header files. Glibc will normally look in /usr/include for them, but if you specify this option, it will look in DIRECTORY instead.

This option is primarily of use on a system where the headers in /usr/include come from an older version of glibc. Conflicts can occasionally happen in this case. Note that Linux libc5 qualifies as an older version of glibc. You can also use this option if you want to compile glibc with a newer set of kernel headers than the ones found in /usr/include.
A naso, quindi, direi che si, ricompilando le glibc con

Codice: Seleziona tutto

--enable-kernel=versione-kernel-in-uso
--with-headers=/usr/src/versione-kernel-in-uso

si dovrebbe avere un aumento (quanto apprezzabile è da vedere) delle prestazioni, resta da valutare se poi se applicazioni compilate con le glibc che avevano un --enable-kernel=versione-kernel-precedente continuano a funzionare :-k .

Scusate se mi sono quasi risposto da solo, spero comunque che, al limite, abbiamo imparato qualcosa. :D

Re: Kernel custom e pacchetti glibc e libsvga_helper

Inviato: sab 10 mag 2008, 14:00
da submax82
non dovrebbero aumentare le prestazioni ma solo la stabilità... almeno credo

per i pacchetti è importante solo la versione delle glibc ma non il kernel con qui sono state compilate.

penso che il copromesso migliore sia sempre lasciare gli headers del kernel originale con cui sono compilate le glibc e aggiornare solo il kernel senza installare nel sistema i nuovi headers; infatti era quello che diceva Pat in un readme della 11.0
As a general rule, installing kernel headers
that are newer than the kernel glibc was compiled with *may* cause problems

Re: Kernel custom e pacchetti glibc e libsvga_helper

Inviato: sab 10 mag 2008, 15:39
da gianco
submax82 ha scritto: penso che il copromesso migliore sia sempre lasciare gli headers del kernel originale con cui sono compilate le glibc e aggiornare solo il kernel senza installare nel sistema i nuovi headers; infatti era quello che diceva Pat in un readme della 11.0
Si, questa è la strategia che ho adottato fino ad ora, memore del README che citi anche tu. Mi sembra di ricordare che prima (1), invece, cambiassi il link simbolico

Codice: Seleziona tutto

/usr/src/linux -> /usr/src/linux-versione-corrente
Grazie anche a te per la risposta.

Ciao.

(1) :iocero: :)

Re: Kernel custom e pacchetti glibc e libsvga_helper

Inviato: sab 10 mag 2008, 15:45
da submax82
bè si ma il link di cui parli è utile farlo ugualmente ... nel senso che installare gli headers nel sistema è inteso metterli in /usr/include/ ... mentre quel link può essere comodo per quando si compilano i pacchetti in quanto contengono tutti i sorgenti e anche gli headers del kernel a cui è stato linkato.

Re: Kernel custom e pacchetti glibc e libsvga_helper

Inviato: sab 10 mag 2008, 20:56
da Mario Vanoni
- gli headers del kernel servono alla distro per creare glibc
- glibc serve per compilare programmi in userspace
- ai programmi userspace e` _sconsigliato_ di usarli,
> vedi LKML, e.g. strncmp di glibc e` diverso di quello del kernel
- ogni kernel superiore a X.Y.Z supportera` questi programmi userspace
- con kernel inferiori a X.Y.Z invece non e` garantito niente, anzi ...
- con linux-2.6.24.5 andranno anche programmi sotto 2.6.25 ecc.

IMVHO

Mario Vanoni

Re: Kernel custom e pacchetti glibc e libsvga_helper

Inviato: sab 10 mag 2008, 21:31
da Toni
- glibc serve per compilare programmi in userspace
io direi fondamentalmente per eseguirli , visto che le glibc , in genere, non vengono compilate staticamente con gli eseguibili , per ovvi motivi.
- gli headers del kernel servono alla distro per creare glibc
- ai programmi userspace e` _sconsigliato_ di usarli,
potresti essere più chiaro

Re: Kernel custom e pacchetti glibc e libsvga_helper

Inviato: sab 10 mag 2008, 22:23
da Mario Vanoni
il_notturnista ha scritto:
- glibc serve per compilare programmi in userspace
io direi fondamentalmente per eseguirli , visto che le glibc , in genere, non vengono compilate staticamente con gli eseguibili , per ovvi motivi.
- gli headers del kernel servono alla distro per creare glibc
- ai programmi userspace e` _sconsigliato_ di usarli,
potresti essere più chiaro
a) i miei programmi C li compilo solo statici (make -O2 -s -static)

b) alcuni furbi usano trucchi del kernel in programmi userspace,
> includendoli, se il kernel li cambia, rien ne va plus!

Mario Vanoni

Re: Kernel custom e pacchetti glibc e libsvga_helper

Inviato: sab 10 mag 2008, 22:49
da Toni
a) i miei programmi C li compilo solo statici (make -O2 -s -static)
Hai detto bene i tuoi programmi . Pensa a che spreco di risorse se un intero parco software di una distribuzione fosse compilato in suddetto modo ;)
b) alcuni furbi usano trucchi del kernel in programmi userspace,
> includendoli, se il kernel li cambia, rien ne va plus!
Non credo furbi , più che altro ignoranti . Producono spazzatura non codice.