Dov'è nel codice sorgente di GRUB2 il passaggio di consegne / passa al codice del kernel?


11

Sto cercando la linea di codice in cui GRUB2 passa infine al codice del kernel e quindi consegna l'esecuzione su sistemi x86? Immagino che sia in un file assembler poiché si tratta di elementi di architettura molto bassi. Ho esaminato i file di origine /grub-core/boot/i386/pc/*.Se ho trovato un file JMPdi avvio.S alla riga 455, ma kernel_addresspotrebbe essere l'indirizzo del kernel GRUB2 in memoria e non del kernel Linux.

Chiunque abbia conoscenza di assembly e GRUB2 che mi può aiutare?


Hai tracciato i parametri del kernel?
phk,

1
Non posso aggiungere troppo qui poiché sto postando da un telefono, ma posso immaginare, in base a ciò che ricordo dei PC compatibili e di GRUB2, che carica l'immagine del kernel in memoria a 0x900000 (modalità reale), con 0x0c000000 come l'indirizzo è passato a quando si esce dalla modalità reale in modalità protetta. Questo era su un sistema EFI con "avvio affidabile", sebbene, quindi potrei essere errato. Forse la tua initrdimmagine conterrà indizi?
Wyatt8740,

Risposte:


1

Appena dalla lettura del sorgente, questo dovrebbe essere il posto nel caricatore di Linux e questo il posto nel rilocatore (indipendente dal caricatore).

Spero che aiuti :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.