2009-06-19 16 views
6

Y at-il quelque chose que le noyau doit obtenir du chargeur de démarrage? Habituellement, le noyau est capable d'élever un système à partir de rien, alors pourquoi cela nécessite-t-il quelque chose de boot-loader? J'ai vu des messages de démarrage du noyau comme ceci.Arguments du noyau

"Fetching vars from bootloader... OK" 

Alors, que exactement sont les variables étant passé? De même, comment les variables sont-elles transmises par le boot-loader? Est-ce à travers la pile?

+0

Cela ne devrait-il pas être sur serverfault? –

Répondre

2

Le noyau accepte les options de ligne de commande, qui sont basées sur du texte. C'est très utile, car vous pouvez faire beaucoup de choses sans avoir à recompiler votre noyau. Quant à l'argument qui passe, il dépend de l'architecture. Sur ARM, cela se fait via un pointeur vers un emplacement en mémoire ou un emplacement fixe en mémoire.

Voici comment cela est fait sur ARM. Habituellement, un noyau n'est pas capable de démarrer la machine à partir de zéro. Peut-être du bios, mais ce n'est pas à partir de zéro. Il a besoin d'une initialisation, c'est le travail du bootloader.

2

Il y a quelques paramètres que le noyau Linux accepte du bootloader, dont je me souviens maintenant du paramètre vga. Par exemple:

kernel /vmlinuz-2.6.30 root=/dev/disk/by-uuid/3999cb7d-8e1e-4daf-9cce-3f49a02b00f2 ro vga=0x318 

Jetez un oeil à 10 boot time parameters you should know about the Linux kernel ce qui explique certains des paramètres communs.

0

Linux accepte les variables du chargeur de démarrage pour permettre l'utilisation de certaines options. Je sais que l'une des choses que vous pouvez faire est de ne pas avoir à vous connecter (mode de récupération) et il existe plusieurs autres options. Cela permet principalement de corriger le problème en cas de problème ou de changement de mot de passe. C'est ainsi que Ubuntu Live-CD démarre Linux si vous choisissez d'utiliser une autre option.

2

Pour le noyau Linux, il y a plusieurs choses que le bootloader doit dire au noyau. Il inclut des choses comme la ligne de commande du noyau (comme plusieurs autres personnes déjà mentionnées), où le initrd a été chargé dans la mémoire et sa taille, si un initrd est utilisé (le noyau ne peut pas le charger seul, souvent en utilisant un initrd , les modules nécessaires pour accéder aux périphériques de stockage sont dans l'initrd, et il peut également avoir à faire une configuration assez complexe avant d'être en mesure d'accéder au stockage), et plusieurs bric-à-brac assorties. Voir Documentation/x86/boot.txt (lien vers la version 2.6.30) pour plus de détails sur l'architecture x86 traditionnelle (32 bits et 64 bits), y compris la façon dont ces variables sont transmises au code d'installation du noyau.

1

Le chargeur de démarrage n'utilise pas de pile pour transmettre des arguments au noyau. Au moins dans le cas de Linux, il y a une structure de mémoire assez complexe que le bootloader remplit que le noyau sait analyser. C'est ainsi que le bootloader pointe le noyau vers sa ligne de commande. Voir Documentaion/x86/boot.txt pour plus d'informations.

0

Normalement, les paramètres sont appelés paramètres de ligne de commande, qui sont transmis au module noyau à partir du chargeur de démarrage. Bootloader utiliser la plupart des BIOS interrompt pour détecter,

memory 
HDD 
Processor 
Keyboard 
Screen 
Mouse 
ETC... 

et tous les détails harwares vont être détectés au moment du démarrage, qui est en mode réel, passe ensuite ces paramètres à noyau.