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.