Que se passe-t-il après le chargement de l'image du noyau Linux dans la RAM

9

Je veux juste savoir le flux des activités qui se produisent après le chargement de l'image du noyau Linux dans la RAM après le processus de démarrage.

Renjith G
la source
2
Tu ne devrais pas vouloir savoir ça. Ce que vous devriez vouloir, c'est l' apprendre .
alex

Réponses:

15

Depuis Linux 2.6:

Noyau

Une fois chargé dans la RAM, le noyau exécute les fonctions suivantes.

setup():

  1. Construisez une table en RAM décrivant la disposition de la mémoire physique.
  2. Définissez le délai et la fréquence de répétition du clavier.
  3. Initialisez la carte adaptateur vidéo.
  4. Initialisez le contrôleur de disque avec les paramètres du disque dur.
  5. Recherchez le bus IBM Micro Channel.
  6. Vérifiez les périphériques de pointage PS / 2 (souris bus).
  7. Vérifiez la prise en charge de la gestion avancée de l'alimentation (APM).
  8. Si pris en charge, créez une table en RAM décrivant les disques durs disponibles.
  9. Si l'image du noyau a été chargée bas dans la RAM, déplacez-la vers le haut.
  10. Définissez la broche A20 (un hack de compatibilité pour les anciens microprocesseurs 8088).
  11. Configurez une table de description d'interruption provisoire (IDT) et une table de description globale provisoire (GDT).
  12. Réinitialisez l'unité à virgule flottante (FPU).
  13. Reprogrammer les contrôleurs d'interruption programmables (PIC).
  14. Passez du mode réel au mode protégé.

startup_32():

  1. Initialisez les registres de segmentation et une pile provisoire.
  2. Effacez tous les bits du eflagsregistre.
  3. Remplissez la zone de données non initialisées avec des zéros.
  4. Invoque decompress_kernel()pour décompresser l'image du noyau.

startup_32() (même nom, autre fonction):

  1. Initialisez les registres de segmentation finaux.
  2. Remplissez le bsssegment de zéros.
  3. Initialiser les tableaux de pages du noyau provisoires.
  4. Activez la pagination.
  5. Configurez la pile en mode noyau pour le processus 0.
  6. Encore une fois, effacez tous les bits du eflagsregistre.
  7. Remplissez l'IDT avec des gestionnaires d'interruptions nulles.
  8. Initialisez le premier cadre de page avec les paramètres système.
  9. Identifiez le modèle du processeur.
  10. Initialisez les registres avec les adresses du GDT et de l'IDT.

start_kernel(): Presque tous les composants du noyau sont initialisés par cette fonction, ce ne sont que quelques-uns.

  • Planificateur
  • Zones mémoire
  • Allocateur de système Buddy
  • IDT
  • SoftIRQs
  • Date et l'heure
  • Allocateur de dalle
  • Créer le processus 1 ( /sbin/init)

La "liste" complète est disponible dans les sources sur linux / init / main.c

Init

Init démarre tout le processus utilisateur nécessaire pour amener le système dans l'état souhaité, cette routine dépend fortement de la distribution et du niveau d'exécution invoqué.

Tapez runleveldans la console, cela vous donne le niveau d'exécution actuel de votre système.

Jetez un œil à /etc/rcX.d/(ou /etc/rc.d/rcX.d/), en remplaçant le X par votre niveau d'exécution.
Ce sont des liens symboliques classés par priorité d'exécution. S01....signifie que ce script est démarré très tôt, tandis qu'il S99....s'exécute à la toute fin du processus de démarrage. Les KXX....liens symboliques font la même chose mais pour la séquence d'arrêt.

Généralement, ces scripts gèrent les disques, la mise en réseau, la journalisation, le contrôle des périphériques, les pilotes spéciaux, l'environnement et de nombreuses autres séquences requises.

remuer
la source
LXR est une belle interface pour lire la source du noyau Linux. Belle liste, mais attention, beaucoup dépend de l'architecture (c'est la version PC).
Gilles 'SO- arrête d'être méchant'
1
  • Le noyau prend le contrôle du système H / W dès que vous voyez "Décompresser Linux ..".
  • Le noyau vérifie et définit les registres BIOS des cartes graphiques et le format de sortie d'écran.
  • Le noyau lit ensuite les paramètres du BIOS et initialise les interfaces matérielles de base.
  • Ensuite, les pilotes du noyau initialisent le matériel.
  • Ensuite, le noyau vérifie les partitons
  • Ensuite, il monte le système de fichiers racine
  • Ensuite, le noyau démarre init, qui démarre le système principal avec tous ses programmes et configurations.
Sen
la source
0

Le chargeur de démarrage passe au point d'entrée d'image en passant la ligne de commande du noyau (le cas échéant), et le noyau gère le reste.

alex
la source