Il BOOT avviene cosi', avendo io creato un piccolo sistema operativo su un flppy che all'avvio di printa "ciao" :rollo: (l'ho cancellato subito).

Si crea un boot loader che verra' inserito nell'MBR (il primo settore del device, non ricordo quanti kb sono).
Il BIOS, va a cercare il boot loader in ogni device (se ad es. il BIOS e' settato come A, C, SCSI, andra' prima nel floppy).
Quindi, cerca ad es. nel floppy nell'MBR e trova il mio boot loader. Dopodiche' esegue delle operazioni per far partire il kernel (che ho fatto in C)... e poi continui a lavorare con il C per la parte del kernel, ed avrai sicuramente problemi di (come dicevano prima) ottimizzazione e interiezione con device di basso livello che con il C neanche arrivi e devi comunque usare ASM nello stesso kernel.
Tutto sta nel creare una base su cui far partire i programmi, e la cosa piu' dura (se vuoi fare proprio un OS da 0 tuo tuo tuo) e' proprio il modo in cui far partire i programmi... quasi ogni sistema operativo di sua nativita' usa diversi header nella compilazione dei suoi programmi per farli girare ed essere compatibili con il kernel, quindi la prima cosa da fare sarebbe proprio un compilatore ed un interpretatore nel kernel che sappia farlo girare!

Infatti la fase dei programmi e' una delle parti piu' complessa di un sistema operativo... non sai proprio da dove cominciare :rollo: