Una risposta in ritardo a questa domanda, ma posso aggiungere i seguenti punti se non li avete scoperto nel frattempo:
Forse spiegare che cosa significa EFI per lo sviluppo del sistema operativo
In realtà, non molto. Beh forse un po '. Ok, spieghiamo. UEFI fornisce l'ambiente del firmware per una fase di pre-avvio. Fornisce anche alcuni servizi di runtime al sistema operativo, tuttavia, è previsto che il sistema operativo, e non il firmware UEFI, alla fine guidi il sistema - questi servizi consentono di eseguire varie attività correlate alla configurazione di avvio - example.
Il vantaggio è che se siete disposti ad utilizzare un bootloader che si conforma a dire multiboot 2 che in realtà non c'è bisogno di sapere nulla di UEFI - il bootloader verrà caricato fino in base alle specifiche multiboot, quindi chiamare ExitBootServices()
che a I termini UEFI distruggono l'ambiente del firmware.
E 'possibile produrre un kernel Linux che ha uno stub EFI e quindi "senza" un boot loader - this blog shows you how. Puoi farlo per il tuo kernel - devi semplicemente produrre un kernel PE/COFF che corrisponda al firmware del firmware.
e forse dirmi che cosa test ambienti (preferibilmente virtuale) posso ci
Se lo può permettere VMWare Workstation, questo vi aiuterà in maniera massiccia. Oltre a contenere uno stub gdb tale che è possibile eseguire il debug di qualsiasi parte di tutto ciò, è anche possibile modificare i file di definizione della macchina virtuale (* .vmx) per contenere
firmware="efi"
e voilà, VMWare si avvierà un UEFI completamente funzionante ambiente. Funziona con Linux e Windows.
Vari post su Internet menzionano le configurazioni QEMU e, naturalmente, VirtualBox. Non ho mai avviato personalmente alcun sistema esistente sulla piattaforma EFI di VirtualBox, e non ho ancora provato QEMU, anche se credo che i vari altri emulatori là fuori funzionino probabilmente.
Inoltre, dovrei investire del tempo per esaminare il gruppo ARM?
Dipende dai vostri obiettivi. Sulla questione del montaggio, penso che dovresti saperlo per scrivere un sistema operativo. Non penso che sia importante per quale piattaforma scrivi - anzi, penso che scrivere per più ti renderà più riconoscente delle differenze tra le macchine.
In generale, tuttavia, non tenterei di scrivere un intero sistema operativo in assembly. Il motivo principale per questo è il tempo - presumo che si tratti di un progetto per hobby, quindi ottenere qualche ricompensa per il tuo vasto sforzo sarà molto più divertente che tentare di eseguire il debug di assembly, soprattutto per quelli che non ti sono familiari. Puoi sempre, man mano che diventi più esperto, sostituire i bit di scelta con l'assemblatore, specialmente se ne hai abbastanza del resto del codice per testarlo.