Compiler un noyau non compressé

Bonjour,

je cherche à compiler un noyau non compressé pour éviter la phase de décompression après son chargement dans la RAM par le bootloader.

dans la configuration du noyau, j’ai le choix entre les compressions suivantes :
Gzip
Bzip2
LZMA
LZO

mais on ne peut apparemment pas choisir sans compression.

j’ai essayé avec le fichier vmlinux qui à l’air de ne pas être compressé vu sa taille, mais j’ai le message d’erreur suivant au boot :

Error 13: invalid or unsupported executable format

Est-ce qu’il n’y a pas une option qui permettrait de compresser à un “niveau 0” parmi les algorithmes proposés ?

grub, lilo ne sont pas capable de booter un kernel non comressé (errerur format).
le seul capable c’est (je crois) u-boot (compilation nécessaire pour x86?).

uboot-mkimage pour créer l’image boot utilisé par uboot

packages.debian.org/fr/sid/uboot-mkimage

Il n’y a pas moyen de passer un paramètre pour contourner ça dans Grub 2 ?

Bah sinon il peut toujours prendre le code source de Grub 2 et le modifier à sa sauce pour le rendre compatible :smiley: Je suis sûr que beaucoup de monde apprécierait.

Ok merci, je vais essayer u-boot

Salut,

Pensez vous que rallonger le temps de lecture sera plus avantageux que décompresser le noyau ?

Peut être, la plateforme fait 500MHz.

J’ai allégé le noyau, celui ci fait 1.2Mo, et le temps de chargement dans la RAM + exécution jusqu’au programme init est de 4 secondes, ce qui ne me paraît pas normal.

Donc je cherche d’où ça viens, c’est soit en rapport avec la carte Flash que j’utilise, soit à cause des 500MHz de la plateforme.

de nos jours, sur un pc récent ou pas, un kernel décompressé n’a pas d’intérêt mais sur un système embarqué à faible cpu …

[quote=“ggoodluck47”]Salut,

Pensez vous que rallonger le temps de lecture sera plus avantageux que décompresser le noyau ?[/quote]

? comment on fait ça :017

c’est quoi la platforme? x86? intel, geode, via ?
la vitesse de la CF (300x) ?
je crois que pour se rapprocher d’un disque ata 100 il te faut un 600x (50mo/s) 600x = 90Mo/s théorique en lecture

CPU : AMD Geode LX800 (500MHz, 1000 BogoMIPS)

carte CF : Transcend 2Gb 266x

256 Mo RAM

Par contre, une fois linux chargé, quand je copie un fichier de 32MO dans la CF, dans un autre répertoire, ça met 1 seconde à peu près.

Utilise lilo et rajoute «compact» dans le fichier de configuration. Le chargement d’un noyau peut se faire bloc par bloc (option par défaut) -c’est long- ou bien d’un seul coup (il faut que le noyau ne soit pas fragmenté) et là c’est très rapide. C’est ce que fait l’option compact de lilo. C’est spectaculaire comme changement. La compression n’a rien à voir là dedans, les changements seront infimes. Je ne connais pas l’équivalent grub de compact.

Et tu ne sais pas si GRUB 2 est capable de le faire aussi par hasard ?

Non, je ne sais pas. Je ne cours pas après 4secondes non plus…

Certes, mais comme je souhaite installer Debian sur mon futur téléphone, 4 secondes au démarrage peuvent s’avérer très lourdes au quotidien.

fran.b, tu dis

il faut que le noyau ne soit pas fragmenté

ca correspond à quoi ?

j’ai testé lilo avec le mode compact, j’ai pas eu d’amélioration par rapport à grub.

Alors grub le fait par défaut. La lecture du noyau se fait par le BIOS, le mode compact consiste à lire le noyau d’un seul coup au lieu de le faire bloc par bloc. À une époque en tout cas, il fallait que le noyau soit écrit d’un seul bloc sur le disque. grub doit faire cela par défaut. En tout cas c’est certain que la décompression du noyau est négligeable par rapport au temps de chargement.

[quote=“ilip”]
Par contre, une fois linux chargé, quand je copie un fichier de 32MO dans la CF, dans un autre répertoire, ça met 1 seconde à peu près.[/quote]

carte Alix?

la copie d’un ficher en une seconde n’a rien avoir avec un chargement kernel.
Tu as deux étapes, décompression en mémoire et initialisation du matériel.
Juste après la ligne grub c’est l’écran noir, c’est le temps de la décompression, moins d’une secondes,
ensuite le kernel démarre (sortie du dmesg avec détection matériel) et passe la main à init.

ce que tu cherche c’est peut-être une sorte d’image image ram, de mise en veille.
charger en mémoire un kernel déjà décompressé avec le matériel initialisé, ce que je n’ai jamais testé (en théorie démarrage en moins de 1s)

Oui c’est une carte Alix

“Juste après la ligne grub c’est l’écran noir, c’est le temps de la décompression, moins d’une secondes”

C’est ca qui me prend 5 secondes, la copie puis décompression dans la ram. c’est ça le problème.
Peut être c’est la décompression (LZO) qui est lente, du fait de la faible fréquence du CPU, d’où ma recherche de chargement de noyau déjà décompressé.

Prend une compression gzip, c’est la plus rapide à la décompression.

lzo, lzma sont déconseillé pour les fable cpu.
fichier compressé plus petit et légère perte de temps de décompression sur les processeur récent et puissant,
mais pour un 500mhz je pense que gzip c’est mieux.

j’ai pas bien compris le temps du démarrage

avec gzip et après la ligne grub je suis à environ 2,2 secondes (init=/bin/sh,kernel vraiment mini 1,7 mo) (alix 1d)
(gzip 0)
viewtopic.php?f=8&t=22621
viewtopic.php?f=8&t=27712