Scrittura di un bootloader senza bootloader

8

Ho una domanda a cui davvero non riesco a trovare una risposta diretta. Permettetemi di iniziare dicendo che non sto chiedendo un tutorial passo dopo passo, o addirittura di fare qualcosa. Sono solo curioso.

Ho letto tutto il giorno sullo sviluppo di sistemi operativi e su come sono costruiti da zero. Ho una buona presa sulla teoria di ciò. Tuttavia, c'è un passo per cui non riesco a trovare una risposta.

Prima dell'esistenza di un sistema operativo pieno e pieno di strumenti, come si potrebbe scrivere un semplice boot loader per un computer che non ha un boot loader, o qualcosa del genere, nel suo settore di avvio? Quale sarebbe il primo passo dopo aver acquisito un computer con il minimo indispensabile? (Ie, schermo, tastiera, processore, ram, hdd, floppy)

    
posta Nick 19.09.2013 - 02:10
fonte

3 risposte

9

Storicamente c'erano vari modi: -

  • Nessun sistema operativo. Eseguibile è stato caricato dalla prima scheda, dal file su nastro o da qualsiasi altra cosa.
  • Os codificati nella memoria del nucleo magnetico. I nuclei erano magneti permanenti invece della normale ferrite, a seconda dell'orientamento N / S del magnete era uno o zero. I computer delle navicelle Gemini e Apollo avevano tutti i loro programmi "lavorati a maglia" in questo modo.
  • Primo settore da disco. Questo era piuttosto standard su computer "mini" come il PDP-11, il computer era cablato per leggere la prima traccia dal primo disco ed eseguire il codice quando ha colpito un indicatore EOF.
  • Dispositivo di avvio personalizzato. I mainframe IBM di seconda generazione avevano un disco floppy da 12 pollici dedicato da caricare in un sistema operativo "microcodice". Che poi ha cercato il vero sistema operativo su disco da qualche parte. Ho anche visto micros con unità a nastro dedicate per caricare il sistema operativo. Agli operatori è stato richiesto di riavvolgere o "girare" il nastro.

  • BIOS. Un SO minimo è memorizzato nella ROM e il processore è cablato per eseguire il codice ROM su "power up". La ROM ottiene quindi il vero sistema operativo da qualsiasi luogo. Questo è praticamente come funzionano tutti i computer moderni. Quello che la ROM fa effettivamente varia da un processore all'altro. Le scatole Itel hanno in genere un programma BIOS molto sofisticato dedicato a ciascuna "generazione" procesor. Le scatole di tipo Unix generalmente hanno un BIOS molto più semplice, le scatole Sun / Oracle caricano notoriamente un interprete "FORTH" che quindi esegue uno script semplice per caricare Solaris.

risposta data 19.09.2013 - 03:38
fonte
4

Nei giorni veramente antichi (come l'IBM 650 o PDP1) era necessario inserire i valori in memoria usando gli interruttori del pannello frontale. Guardando le immagini di computer molto precoci, hai visto due file di luci: indirizzo e dati. Su un computer a 16 bit ce n'erano 16, di solito codificati a colori in gruppi di tre o quattro per ottale o esadecimale, rispettivamente.

Il pulsante "Ripristina" imposterà il contatore "Indirizzo" a zero. Si potrebbe quindi impostare gli interruttori sul bus dati sul valore desiderato e attivare il pulsante 'data write'. Ciò scriverebbe le impostazioni dell'interruttore nella memoria all'indirizzo 0. C'erano degli interruttori a levetta up-down per permetterti di passare all'indirizzo successivo o precedente. È anche possibile impostare gli interruttori per l'indirizzo e fare clic su "address write". Qualsiasi cosa fosse in quel nuovo indirizzo verrebbe visualizzata sui 16 indicatori luminosi.

In genere si inseriscono, usando questa tecnica, un ciclo di lettura per leggere valori da un lettore di schede o da un nastro di carta. Questo sarebbe sufficiente per caricare un blocco di codice più grande per procedere con il SO o il carico dell'applicazione. A quel tempo, tali computer avevano parole da 4K a 16K (o da 8K a 32K byte), quindi tali caricatori erano minuscoli secondo gli standard moderni. Un ciclo di lettura potrebbe essere solo tre o cinque parole di 16 bit.

Illustrazione del pannello frontale

    
risposta data 19.09.2013 - 06:30
fonte
3

È necessario un modo per creare un chip ROM o EEPROM che può essere installato sulla scheda madre e contiene il bootloader. Esiste davvero una serie di passi di avvio, a partire dai controlli interni dei vari chip (CPU, scheda video, ecc.) Seguiti dall'attivazione e individuazione del bus (il controller del bus PCI-e individua tutto collegato ad esso e assegna gli ID, ecc.). Quindi la scheda madre cerca una ROM di avvio ed esegue quel codice, che a sua volta trova l'ordine di avvio del BIOS e lo esamina per un dispositivo corrispondente, quindi carica il booster da quello. Che a sua volta carica un sistema operativo.

La catena di avvio originale stava sfogliando gli interruttori che formavano la ROM, poi usando gli switch per programmare la RAM, e così via fino ai moderni bootloader multistadio.

    
risposta data 19.09.2013 - 02:54
fonte

Leggi altre domande sui tag