Supprimer un message
Raison de suppression du message (envoyée à l'utilisateur)

Voulez vous réellement supprimer ce message?  


philfr
Plop.
Suite à une demande de blibli, voici un petit topo sur la configuration de mon kernel. En topic pour ouvrir le débat.

Je suis parti d'un Debian sid IA32 "normal" (en fait ça fait des années que je le mets à jour et que je le récupère même quand je change de bécane, donc à l'origine c'était bien sur une machine 32 bits)

Un jour j'ai voulu compiler un petit "Hello, world" en 64 bits pour voir. C'est très facile, il suffit de rajouter -m64 comme option de gcc. Mais pas moyen de le démarrer (exec format error ou quelque chose du genre).

Pas de souci me dis-je, yaka installer un kernel 64 bits, car celui-ci peut exécuter indifféremment des programmes 32 ou 64 bits. Apt refusa gentiment de faire cette installation puisqu'il considère IA32 et x86_64 comme des architectures distinctes. Mais je n'avais pas non plus envie de réinstaller un Debian complet en 64 bit: pas sûr de retrouver les quelques logiciels non libres tels flashplayer en version linux 64bit.

Recompiler mon kernel ne m'a jamais fait peur, mais il a fallu que je cherche un peu comment faire, car point d'option x86_64 dans mon make menuconfig.
La solution: make ARCH=x86_64 dans le directory linux. Oui c'est tout. Et il ne faut le faire qu'une fois, dès qu'on tourne sur un kernel 64 bit, ce n'est plus de la compilation cross-architecture.

Après, il faut juste booter ce truc avec grub et croiser les doigts... Dans mon cas, je n'ai pas eu le moindre pépin: tout mon user space a continué à se comporter comme avant, comme si rien n'avait changé. Par contre, mon "Hello, world" 64 bits s'exécute parfaitement lui aussi.

Avantages:
- un kernel 64 bits n'a aucun souci pour gérer la totalité de la RAM, et n'est pas limité à 2GB ou 3GB ou n'est pas moins performant s'il y en a plus;
- pour le principe: j'ai un processeur 64 bits, il mérite d'être traité comme tel, et non comme un vieux 80386;
- pour apprendre: regarder le code assembleur x86_64 généré par gcc est toujours instructif;
- pour jouer à faire un malloc de 20GB et y parsemer quelques données;
- certains programmes gagnent en performance en 64 bits: des number crunchers comme OpenSSL, ou des SGBD
- le kernel lui-même est sans-doute plus performant pour certaines choses (file system, p.ex.)

Inconvénients:
- les exécutables sont significativement plus gros, en terme de taille d'exécutable, mais aussi en terme d'occupation RAM (tous les int et pointeurs sont deux fois plus grands p.ex...)
- leur chargement est donc proportionnellement plus long aussi;
- toutes les librairies que l'on veut utiliser aussi en 64 bits doivent être installées en double (dans /usr/lib et dans /usr/lib64) et compilées maison, car apt ne veut pas les installer (logique car il n'y a pas de /usr/lib64 sur une architecture x86_64...), et il n'y a que quelques librairies 64 bits disponibles dans le repository IA32.
- installer une JVM depuis le site de Sun donne la surprise d'installer une version 64 bits (car la machine s'identifie comme telle: "Mozilla/5.0 (X11; U; Linux i686 (x86_64); ..."). Le problème est que la JVM a besoin de librairies (comme libX11) qui ne sont pas installées en version 64 bits. Il faut donc aller chercher la JVM 32 bits quivabien à la main.

Ma config hybride est donc à mon sens un compromis intéressant, combinant les avantages du kernel 64 bits sans les inconvénients des exécutables 64 bits. À ma connaissance, à part avec un linux from scratch ou peut-être un Gentoo tiouné, il n'y a pas de distro qui propose ce compromis.

Edit: utilisation incorrecte de IA64
Informaticien.be  - © 2002-2019 Akretio SPRL  - Generated via Kelare - Hosted by Verixi Internet Services
The Akretio Network: Akretio  - Freedelity  - KelCommerce  - Votre publicité sur informaticien.be ?