Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/07/2009, à 10:26

saelyx

Idée : autocompilation du kernel

Linux se complète de plus en plus de modules, souvent beaucoup sont activés par défaut pour des raison de compatibilité, or pour ce qui est de la lourdeur du noyau et des performances (bien qu'étant déjà excellente, pour avoir testé Ubuntu 9.10alpha), et pourrait également permettre à plus de sécurité (protection contre les stack overflows par exemple, randomisation du heap, ...)

L'idée serait de faire un script ou un programme qui optimise un kernel Linux (donc récupéré depuis www.kernel.org) pour son matériel.

Grâce à lshw, lspci et je ne sais quoi d'autre, je pense qu'il est pas impossible d'optimiser les sources pour être minimaliste, par exemple j'a un Intel, les modules AMD ne me servent à rien, j'ai une carte graphique NVIDIA, les modules ATI, VOODOO ne me servent à rien, j'ai du wifi Intel IWL4965, le IWL3945 ne me sert à rien...

à "grand coups" de regex (grep/sed), je pense cela possible, je creuse un peu plus la faisabilité, je lance l'idée dans l'espoir d'éveiller la curiosité des développeurs mais aussi pour permettre à quiconque voulant optimiser son Linux en fonction de sa machine.


-----BEGIN GEEK CODE BLOCK-----
GCS d- s+:+ a? C++ UL+++ P L++ E--- W+ N o-- K- w+ O-- M- V-
PS+ PE Y PGP t 5 X+ R- tv-- b+ DI- D++ G e-- h--- r+++ z+++
------END GEEK CODE BLOCK------

Hors ligne

#2 Le 29/07/2009, à 10:46

billou

Re : Idée : autocompilation du kernel

C'est vrai qu'un script accessible (et graphique) dans un souci d'optimisation du kernel, serait un plus... Je ne pense pas que ça soit irréalisable, mais ça demanderais de disposer de pas mal de compétences en ce qui concerne le kernel.

D'ailleurs, le script de base doit déjà exister, car lors d'une installation avancée de ubuntu ou debian, non graphique, l'installateur propose d'installer si l'on veut uniquement les modules nécessaires pour le matériel détecté.

Hors un problème se pose... Tu devra recompiler le kernel à chaque fois que tu rajoutera du nouveau matos non?

Hors ligne

#3 Le 29/07/2009, à 10:52

GentooUser

Re : Idée : autocompilation du kernel

Tu sais les modules non chargés de coûtent déjà rien en performance ! à pars quelques mo sur le disque-dur.

Hors ligne

#4 Le 29/07/2009, à 13:27

Elzen

Re : Idée : autocompilation du kernel

C'est curieux, je m'étais fait une réflexion de ce genre récemment, mais plus vaste que juste pour le noyau...

Étant donné qu'apt peut gérer des paquets sources (dépôts indiqués par deb-src dans le sources.list et commande apt-source), ne pourrait-on pas envisager un genre de plugin qui tournerait en tâche de fond pour vérifier pour chaque paquet binaire installé s'il existe un paquet source de la même version, et si oui, qui télécharge ces sources, le compile à l'arrière-plan (en s'adaptant si possible aux ressources disponibles pour en bouffer le moins possible) et remplace les fichiers ?
De cette manière, on bénéficierait simultanément des avantages des paquets binaires avec apt (installation rapide, bonne gestion des dépendances, tout ça) et des avantages de la compilation (logiciels optimisés pour la machine, tout ça).

Ça pourrait se coupler avec votre projet : le truc graphique proposant les différentes options d'optimisation du noyau s'afficherait juste après l'installation, et le compilateur en tâche de fond s'en occuperait ensuite.

Hors ligne

#5 Le 29/07/2009, à 13:28

saelyx

Re : Idée : autocompilation du kernel

@billou : c'est vrai que sur un ordinateur fixe

@GentooUser : c'est vrai. Ce serait donc plus pour alléger le noyau que pour des soucis de performances.

Vous pensez que c'est inutile ? J'commence à le croire...


-----BEGIN GEEK CODE BLOCK-----
GCS d- s+:+ a? C++ UL+++ P L++ E--- W+ N o-- K- w+ O-- M- V-
PS+ PE Y PGP t 5 X+ R- tv-- b+ DI- D++ G e-- h--- r+++ z+++
------END GEEK CODE BLOCK------

Hors ligne

#6 Le 29/07/2009, à 13:39

DrDam

Re : Idée : autocompilation du kernel

je poserai la question autrement ... pour un utilisateur lambda avec comme machine : Aspire M3201[/url]

Processeur     :  AMD Athlon™ X2 dual-core processor
Mémoire :  DDRII 800 Dual Channel 4GB
Propriétés graphiques    
    * ATI Radeon™ HD 3200 Graphics
    * Slot PCI 16X Express => Nvidia GeForce 9500 GT
Audio    
    * Audio 7.1
    * Optimized Dolby® Home Theater® audio enhancement, featuring Dolby® Digital, Dolby® Pro Logic® II, Dolby® Headphone, Dolby® Virtual Speaker, et Dolby® Digital Live technologies

Connectivité    
    * Lecteurs de cartes mémoire 18-in-1 pour Sony® Memory Stick, Memory Stick PROTM, CompactFlashTM Type I, CompactFlashTM Type II, SmartMedia (SM), Secure Digital (SD), MultiMediaCard (MMC) and xD Card. (plus 1 x USB port)
    * Audio : Six jacks audio 7.1 (à l'arrière), Entrée/Sortie son (en façade)
    * Gigabyte (10/100/1000)
    * 4 ports USB2
    * Clavier/Souris PS2/USB
    * 1 port Firewire

Disques durs : 320 Go SATAII HDD 3.5
Lecteurs optiques : Graveur DVD dual et double couche
Slots d'extension     : 2 x PCI, 1 x 1X PCIE, 1 x 16X PCIE

en gros ... avec ubuntu 9.04 .... + pack_dev_web (eclipse PDT / LAMP / mysql)


avec tout "compiler sur mesure" le gain se joue sur quoi ? quelques secondes ? plus de stabilité ?


Tout ce qui a été crée par l'Homme devrait être patrimoine de l'humanité
Vous etes perdu ?, là ce sera trop loin

Hors ligne

#7 Le 29/07/2009, à 14:05

Eldermê

Re : Idée : autocompilation du kernel

ArkSeth a écrit :

C'est curieux, je m'étais fait une réflexion de ce genre récemment, mais plus vaste que juste pour le noyau...

Étant donné qu'apt peut gérer des paquets sources (dépôts indiqués par deb-src dans le sources.list et commande apt-source), ne pourrait-on pas envisager un genre de plugin qui tournerait en tâche de fond pour vérifier pour chaque paquet binaire installé s'il existe un paquet source de la même version, et si oui, qui télécharge ces sources, le compile à l'arrière-plan (en s'adaptant si possible aux ressources disponibles pour en bouffer le moins possible) et remplace les fichiers ?
De cette manière, on bénéficierait simultanément des avantages des paquets binaires avec apt (installation rapide, bonne gestion des dépendances, tout ça) et des avantages de la compilation (logiciels optimisés pour la machine, tout ça).

Ça pourrait se coupler avec votre projet : le truc graphique proposant les différentes options d'optimisation du noyau s'afficherait juste après l'installation, et le compilateur en tâche de fond s'en occuperait ensuite.

Euh, non...

Tu imagines le temps que ça prendrait pour tout recompiler en tache de fond ? En utilisant toutes les ressources disponibles, pour compiler une "grosse" appli comme Firefox ou OpenOffice, il va falloir plusieurs heures (évidemment, avec si on prend the-dernier-processeur-42-coeurs-de-la-mort-qui-tue, cela ira plus vite mais sur une config à peine ancienne...). Alors tout compiler en arrière-plan, je n'y crois pas du tout.

Et puis pour moi, si on veut s'amuser à compiler, on prend une distribution source comme Gentoo, c'est fait pour ça wink


Mon blog : petit projet de jeux en 3D (libres, bien sûr).

Hors ligne

#8 Le 29/07/2009, à 14:19

Elzen

Re : Idée : autocompilation du kernel

Mais justement : la vitesse de compilation perd de son importance quand il y a un paquet binaire installé préalablement.

Le système en question laisserait les paquets binaires en place tout le temps que nécessaire (avec éventuellement plusieurs redémarrages de l'ordi en cours de route si ce n'est pas fini quand l'utilisateur s'arrête), et ne remplacerait les fichiers qu'une fois sa tâche terminée.

L'intérêt ne serait pas de "s'amuser" à compiler, mais de fonctionner en mode "paquets binaires avec optimisation tardive", en quelque sorte.

Hors ligne

#9 Le 29/07/2009, à 15:39

saelyx

Re : Idée : autocompilation du kernel

C'est vrai qu'en fait l'idée du noyau sur-mesure n'apporterai peut être pas tant que ça en performance, mais en terme de lourdeur je pense que la différence peut se faire. Surtout d'un point de vue sécurité, si tout le monde n'a pas même tout à fait le même noyau, et qu'une faille est trouvée pour un noyau particulier, tout le monde n'est pas atteint.


-----BEGIN GEEK CODE BLOCK-----
GCS d- s+:+ a? C++ UL+++ P L++ E--- W+ N o-- K- w+ O-- M- V-
PS+ PE Y PGP t 5 X+ R- tv-- b+ DI- D++ G e-- h--- r+++ z+++
------END GEEK CODE BLOCK------

Hors ligne

#10 Le 29/07/2009, à 15:39

bailchanis

Re : Idée : autocompilation du kernel

DrDam a écrit :

avec tout "compiler sur mesure" le gain se joue sur quoi ? quelques secondes ? plus de stabilité ?

de quelles secondes parles tu ? du temps de boot ? oui il y a moyen d'y gagner du temps mais c'est pas spécialement le plus intéressant ...


Par contre, en passant d'un système binaire à un système source, sur mon vieux barton 3200+ j'avais gagné une bonne dizaine de fps sur wow (auquel je jouais à l'époque) et une réactivité du système sans trop de comparaison...

ArkSeth a écrit :

Mais justement : la vitesse de compilation perd de son importance quand il y a un paquet binaire installé préalablement.

Oui et non ... sur mon vieux barton, par exemple, la compilation d'un noyau prend un peu plus d'une heure et à condition de ne rien faire d'autre. En tache de fond, ça voudrait dire plusieurs heures ou alors dégrader les perfs de fonctionnement des autres taches... Et pas vraiment question de pouvoir éteindre le pc avant que la compilation ne soit terminée...

ArkSeth a écrit :

on bénéficierait simultanément des avantages des paquets binaires avec apt (installation rapide, bonne gestion des dépendances, tout ça) et des avantages de la compilation (logiciels optimisés pour la machine, tout ça).

Si on se repose sur la structure binaire pour gérer les dépendances de la compilation aux petits oignons perd un gros morceau de son intérêt... En fonction des paramètres de compilation, certaines dépendances se créent ou disparaissent.  (par exemple si tu compiles vlc sans l'option qt4, certes tu perds l'interface graphique mais d'un autre coté tu peux avoir vlc sans qt wink ).

M'enfin si, c'est ce que tu cherches ... tu es mûr pour un emerge -avukBD world tongue

Hors ligne

#11 Le 29/07/2009, à 16:03

Askelon

Re : Idée : autocompilation du kernel

bailchanis a écrit :

M'enfin si, c'est ce que tu cherches ... tu es mûr pour un emerge -avukBD world tongue

Exactement ce que j'allais dire, en gros ArkSeth tu veux une Gentoo avec en plus un support de paquet binaire, non ?

D'ailleurs il me semble que Sabayon correspond à ça : elle est basée sur Gentoo et intègre donc Portage et Emerge, mais elle fonctionne aussi via un système de paquets pré-compilés... tiens, va falloir que je la teste celle-là tongue

Hors ligne

#12 Le 29/07/2009, à 16:19

Eldermê

Re : Idée : autocompilation du kernel

Gentoo aussi propose des paquets pré-compilés, non ? Mais les puristes diront que ça ne donne pas une "vraie" Gentoo. tongue

Dernière modification par Eldermê (Le 29/07/2009, à 16:19)


Mon blog : petit projet de jeux en 3D (libres, bien sûr).

Hors ligne

#13 Le 29/07/2009, à 16:27

Elzen

Re : Idée : autocompilation du kernel

Ce que je voudrais, c'est un truc qui donne une utilité à apt-get source tongue

Je suis persuadé qu'en pensant bien le système, il y a moyen de faire un truc qui marcherait. Mais bon, j'ai ni le temps, ni les connaissances/compétences requises pour faire ça, et en plus, on squatte un peu inutilement le sujet d'origine, donc laissons tomber ^^

Hors ligne

#14 Le 29/07/2009, à 16:40

Keldath

Re : Idée : autocompilation du kernel

@ArkSeth : Ca ne répond pas tout à fait à ce que tu cherches, et peut-être connais-tu déjà, mais il existe apt-build -> http://www.andesi.org/paquets:apt-build-optimisez-les-paquets-debian-pour-votre-systeme
Ce n'est pas aussi puissant qu'emerge bien sûr.

Hors ligne

#15 Le 29/07/2009, à 16:49

bailchanis

Re : Idée : autocompilation du kernel

Askelon a écrit :
bailchanis a écrit :

M'enfin si, c'est ce que tu cherches ... tu es mûr pour un emerge -avukBD world tongue

Exactement ce que j'allais dire, en gros ArkSeth tu veux une Gentoo avec en plus un support de paquet binaire, non ?

D'ailleurs il me semble que Sabayon correspond à ça : elle est basée sur Gentoo et intègre donc Portage et Emerge, mais elle fonctionne aussi via un système de paquets pré-compilés... tiens, va falloir que je la teste celle-là tongue

moui pour l'avoir testé (sabayon), le mélange binaire précompilé n'est fabuleux... Comme je le disais, c'est principalement due au fait que la présence de binaires impose certaines options de compilation et du coup gâche beaucoup de l'intérêt de la compilation.

Eldermê a écrit :

Gentoo aussi propose des paquets pré-compilés, non ?

Non, pas dans portage enfin il y a quelques exceptions  : oppenoffice-bin, firefox-bin, thunderbird-bin, et quelques rares autres dont les licences ne permettent pas la distribution des sources (teamspeak, etc... ). Mais pour l'essentiel c'est des sources et rien que des sources ...

d'ou le -kB pour compiler une fois et conserver le binaire au chaud en cas de besoin de réinstall

Hors ligne

#16 Le 30/07/2009, à 09:25

chimay

Re : Idée : autocompilation du kernel

bonne idée la compilation en tâche de fond ... le système pourrait détecter l'utilisation d'une directive :

USE=+bidule-machin (je sais plus très bien la syntaxe)

et désinstaller les paquets devenus inutiles car installés automatiquement pour assurer la fonction machin

quitte à faire réaliser un truc aussi évolué, autant se baser sur portage

dans le style hybride, il y a aussi paldo avec upkg, mais c'est basé sur un générateur de troll dont je tairai le nom ... une debian/dérivée avec portage ce serait le rêve roll

Dernière modification par chimay (Le 30/07/2009, à 09:25)


* Linux est écolo : le code est tout vert
* Un dauphin nage plus vite qu'un nautile nain
* Le but d'un système d'exploitation est d'exploiter l'ordinateur, pas l'utilisateur
* Un ordinateur est composé d'un piano, d'une mangeuse de fromage, d'une mémoire d'éléphant, d'une dalle, d'un lecteur de galette, et d'un moulin, le célèbre moulin de la galette

Hors ligne

#17 Le 30/07/2009, à 14:44

saelyx

Re : Idée : autocompilation du kernel

On pourrait dire que l'utilité réelle est pour les petites configurations voire pour les systèmes embarqués


-----BEGIN GEEK CODE BLOCK-----
GCS d- s+:+ a? C++ UL+++ P L++ E--- W+ N o-- K- w+ O-- M- V-
PS+ PE Y PGP t 5 X+ R- tv-- b+ DI- D++ G e-- h--- r+++ z+++
------END GEEK CODE BLOCK------

Hors ligne

#18 Le 30/07/2009, à 16:16

bailchanis

Re : Idée : autocompilation du kernel

chimay a écrit :

quitte à faire réaliser un truc aussi évolué, autant se baser sur portage

Mouais, vous n'avez probablement pas beaucoup joué avec des options compilation, pour celles qui sont vraiment interessantes/impactantes... ça va vite à faire recompiler la quasi-totalité du système... du coup autant ne pas "se baser sur" portage mais l'adopter tout simplement...

Si l'envie d'optimiser la compilation de vos paquet est là, il ne faut pas croire que vous vous en sortirez en "simplifiant" les choses parce que vous conservez la béquille du binaire... c'est un faux recours qui créera suffisamment de problèmes à résoudre pour perdre tout le temps que vous auriez passé à compiler un système from scratch... au moins en réalisant une install LFS vous en apprenez suffisamment sur votre système pour le gérer correctement...

Par ailleurs sur une machine de faible puissance, même en tache d'avant plan... on peut très vite se retrouver avec des jours entiers de compilation pour remettre droit le système sans bien sur avoir le droit d'éteindre la machine et un risque pas léger en cas d'incident (coupure de courant, etc... ).

Dernière modification par bailchanis (Le 30/07/2009, à 16:19)

Hors ligne

#19 Le 30/07/2009, à 21:05

chimay

Re : Idée : autocompilation du kernel

bailchanis a écrit :

Mouais, vous n'avez probablement pas beaucoup joué avec des options compilation, pour celles qui sont vraiment interessantes/impactantes... ça va vite à faire recompiler la quasi-totalité du système... du coup autant ne pas "se baser sur" portage mais l'adopter tout simplement...

Si l'envie d'optimiser la compilation de vos paquet est là, il ne faut pas croire que vous vous en sortirez en "simplifiant" les choses parce que vous conservez la béquille du binaire... c'est un faux recours qui créera suffisamment de problèmes à résoudre pour perdre tout le temps que vous auriez passé à compiler un système from scratch... au moins en réalisant une install LFS vous en apprenez suffisamment sur votre système pour le gérer correctement...

qui te dit qu'on veut optimiser TOUS les paquets ? si un gars veut juste alléger apache, tu vas pas lui demander de recompiler tout le système

bailchanis a écrit :

Par ailleurs sur une machine de faible puissance, même en tache d'avant plan... on peut très vite se retrouver avec des jours entiers de compilation pour remettre droit le système sans bien sur avoir le droit d'éteindre la machine et un risque pas léger en cas d'incident (coupure de courant, etc... ).

si le système de compilation sauve le dernier état cohérent tu limiterais les dégâts et perte de temps ... c'est évidemment le point le plus délicat

juste un truc, je sais pas comment Arkseth voit la chose, mais je pense que ce système serait surtout intéressant pour optimiser des serveurs ou autres utilitaires en mode texte qui peuvent être appelés en boucle dans un script par exemple, là où on gagnerait le plus en rapidité. Avec la lourdeur des librairies graphiques, ce serait aussi faisable, mais plus lent évidemment.

Dernière modification par chimay (Le 30/07/2009, à 21:08)


* Linux est écolo : le code est tout vert
* Un dauphin nage plus vite qu'un nautile nain
* Le but d'un système d'exploitation est d'exploiter l'ordinateur, pas l'utilisateur
* Un ordinateur est composé d'un piano, d'une mangeuse de fromage, d'une mémoire d'éléphant, d'une dalle, d'un lecteur de galette, et d'un moulin, le célèbre moulin de la galette

Hors ligne

#20 Le 30/07/2009, à 21:47

saelyx

Re : Idée : autocompilation du kernel

Ce qu'il est question d'optimiser c'est l'installation du système proprement dite afin de n'utiliser que le nécessaire, afin de n'avoir que les modules nécessaire et afin de ne pas avoir un réseau trop homogène... difficile à maintenir certes, mais lorsqu'une faille est présente dans un module, tout le monde n'est pas vulnérable.

Sur MacOSX par exemple, le système d'exploitation est optimisé pour le matériel qui est unique. L'OS et le matos sont un ensemble contrairement aux ordinateurs où la diversités empêche une telle "symbiose". L'idée de compiler un kernel pour l'adapter au matériel est de faire naitre une symbiose entre le système(logiciel) et le matériel.


-----BEGIN GEEK CODE BLOCK-----
GCS d- s+:+ a? C++ UL+++ P L++ E--- W+ N o-- K- w+ O-- M- V-
PS+ PE Y PGP t 5 X+ R- tv-- b+ DI- D++ G e-- h--- r+++ z+++
------END GEEK CODE BLOCK------

Hors ligne

#21 Le 30/07/2009, à 23:44

bailchanis

Re : Idée : autocompilation du kernel

chimay a écrit :

qui te dit qu'on veut optimiser TOUS les paquets ? si un gars veut juste alléger apache, tu vas pas lui demander de recompiler tout le système

Pour apache précisément je ne sais pas mais pour d'autres éléments changer des options de compiltation peut avoir des répercutions sur d'autres élements du systèmes. J'exagere un peu en disant "la quasi totalité du système" dans mon post précédent mais, de proche en proche ça peut finir par faire beaucoup...

Deplus se retrouver bloqué dans une compile à cause des options incompatibles avec des binaires installés par ailleur est beaucoup plus chiant/compliqué que de compiler en entier un système cohérent, c'est aussi plus long je pense.

chimay a écrit :

si le système de compilation sauve le dernier état cohérent tu limiterais les dégâts et perte de temps ... c'est évidemment le point le plus délicat

si tu plantes au milieu de la compilation d'un gros paquet ... (gcc, openoffice, etc... )  tu n'a pas grand choix que de reprendre au début... et avec les dépences je vois mal comment t'arreter avant d'avoir fini la brance entière...

saelyx a écrit :

L'idée de compiler un kernel pour l'adapter au matériel est de faire naitre une symbiose entre le système(logiciel) et le matériel.

Moui, enfin si on se limite au kernel, c'est un peu à ca que servent les modules. Si le materiel n'est pas présent,ils ne sont pas chargés et ton système est aussi léger que s'ils n'etaient pas présents. Les seules différences seront éventuellement au boot (scan des modules) et dans la place prise par le noyau sur le disque... Pour ce que le temps de boot représente dans la stabilté ou la legerté d'un systeme... ça n'a tout simplement aucun rapport.

Ca peut être un trip, voire un besoin si l'espace disque est réduit, mais ça n'est pas non plus bien sorcier de recompiler un noyau : par exemple sous Ubuntu ...

Pourquoi pas un utilitaire qui scan le materiel pour faire les associations module<->composants mais à maintenir ça se rapproche de l'horreur je pense...



saelyx a écrit :

Ce qu'il est question d'optimiser c'est l'installation du système proprement dite  [...] afin de ne pas avoir un réseau trop homogène... difficile à maintenir certes, mais lorsqu'une faille est présente dans un module, tout le monde n'est pas vulnérable.

roll un peu capilotracté comme objectif, non ?

Dernière modification par bailchanis (Le 31/07/2009, à 00:05)

Hors ligne