Come si avvia Raspberry Pi?


57

Ho un mini computer raspberry e mi chiedo come quella cosa faccia l'intero processo di avvio. Posso compilare il mio kernel e init ramdisk con i miei script e costruire il mio sistema Linux minimo su PC, ma per questo ho bisogno di usare un bootloader. Raspberry non sembra supportare affatto i bootloader.

Sembra in qualche modo avviarsi usando la sua GPU che legge alcune partizioni sulla scheda SD (probabilmente quella con flag di avvio) che deve essere formattata in FAT32, quindi legge alcuni file da lì, che sono forniti, ad esempio da raspbian.

Ma come avrei avviato il mio kernel, con le mie personalizzazioni che ho compilato da solo? Dove devo copiare l'immagine del kernel / initrd (ram disk) in modo che Raspberry la trovi e si avvii da essa? Sto sostanzialmente cercando una documentazione tecnica molto dettagliata che descriva il processo di avvio su Raspberry o solo qualche spiegazione di questo.


Risposte:


59

Da questo post sul forum di Raspberry Pi [Modificato per riflettere loader.bincome un anacronismo] :

  1. Quando Raspberry Pi viene acceso per la prima volta, il core ARM è spento e il core GPU è acceso. A questo punto la SDRAM è disabilitata.
  2. La GPU avvia l'esecuzione del primo bootloader, che è archiviato nella ROM sul SoC. Il bootloader del primo stadio legge la scheda SD e carica il bootloader ( bootcode.bin) del secondo stadio nella cache L2 e la esegue.
  3. bootcode.binabilita SDRAM e legge il bootloader di terzo stadio (loader.bin) dalla scheda SD alla RAM, e lo esegue. [Le versioni più recenti non utilizzano un bootloader di terzo livello. ]
  4. [Se applicabile] loader.binlegge il firmware della GPU ( start.elf).
  5. start.elflegge config.txt, cmdline.txtekernel.img

loader.binnon fa molto. Può gestire i .elffile, quindi è necessario caricarlo start.elfnella parte superiore della memoria (ARM utilizza SDRAM dall'indirizzo zero). C'è un piano per aggiungere il supporto al caricamento degli elfi bootcode.bin, che renderebbe loader.binsuperfluo, ma è una priorità bassa (immagino che potrebbe farti risparmiare 100 ms all'avvio). [Da allora questo cambiamento è avvenuto. ]

Ecco alcune risorse che potrebbero essere utili:


2
Il contenuto di questi file bin è tutto software proprietario?
Petr

3
@Petr Ecco il Github per il firmware Raspberry Pi, lo modificherò nella mia risposta.
syb0rg,

1
Nelle FAQ di Raspberry Pi , si dice "Devi avviare da SD ma un USB HD può" prendere il controllo "dopo l'avvio iniziale. Non è possibile avviare senza una scheda SD."
syb0rg,

1
Quella partizione, che viene letta per prima, è una partizione con flag B o deve essere la prima partizione? E se lo avessi reso troppo grande e volessi crearne un altro alla fine della scheda SD che sarebbe più piccolo
Petr

1
@Petr Dovresti porlo come un'altra domanda!
Syb0rg,
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.