PDA

View Full Version : Una bootta di...?


PGI-Bis
20-12-2006, 22:57
Allora ragazzi, chi è che racconta balle qui.

La faccio breve. Per creare un dischetto di boot bisogna adottare veramente le mille magie pessimamente descritte in rete o basta infilare nel primo settore del floppy i nudi e crudi bit delle istruzioni?

Lo chiedo perchè dopo aver letto e riletto mille tutorial in rete, ognuno che dice una cosa diversa dall'altro, ho fatto una prova.

Da assoluto ignorante ho aperto un file di testo e c'ho scritto:

readkey:
mov ah, 0x00
int 0x16
mov ah, 0x0E
int 0x10
jmp readkey

che per un x86 significa "leggi un carattere dalla tastiera e sputalo sul monitor", usando l'interfaccia del BIOS.

Poi ho messo i dieci dodici byte prodotti da NASM e li ho messi in testa ad un file di 740k (tutti zero tranne i primi) con estensione .img. 740k non per altro ma perchè Virtual PC se no non prende il file come immagine del dischetto.

Be', apro Virtual PC, gli faccio fare il boot usando quel file .img (cioè un file vuoto tranne i primi 12 byte) e che fa quello? Mi fa il boot mi fa e poi si mette a stamparmi i caratteri dei tasti che premo.

Mi dico "eh eh, fesso, è Virtual PC. Ma non funziona certo con un PC vero perchè il tutorial...".

Per avere conferma della mia "fessaggine", riesumo un floppy, e con dd faccio una copia raw di quei 740kb (oltretutto su un disco da 1.44mb formattato non so con cosa).

Butto il dischetto sul portatile (un Acer di quando le case si facevano in pozzolana), avvio e che ti fa quello? Fa il boot e si mette a stamparmi i caratteri che digito.

Quello che vorrei sapere è: non è che continuo a leggere manuali e tutorial e whitepaper per poi scoprire che nove cose su dieci sono palle, vero? No perchè adesso vorrei passare all'hard disk e qua vedo già che si spippano con il cognato della nonna di ext3: non vorrei scoprire che funziona anche senza, visto che di ext3 non è che me ne importi poi moltissimo.

71104
20-12-2006, 23:09
... :huh:

ma che cazzo di tutorial hai trovato :D :D :D

il BIOS che io sappia all'avvio fa semplicemente questo: consulta dalle sue impostazioni la Boot Sequence, e per ogni unità disco della Boot Sequence prova (finché non abbia successo) a leggere i primi 512 bytes, metterli in memoria all'indirizzo 0000h:007Ch (se ricordo bene), e JMP-are all'indirizzo stesso. punto.

quello che hai fatto te infatti funzica perfettamente. ora però, per realizzare il boot loader del tuo formidabile sistema operativo che farà ruotare il mondo all'inverso (:D :D :D), devi per l'appunto passare agli hard disk e considerare quale filesystem devi usare (visto che il formato dei settori di boot cambia da uno all'altro). e ti sconsiglio di progettare un filesystem tuo perché veramente non è cosa: a meno che non ci hai già studiato in passato, progettare un filesystem decente è roba complicata :Prrr:

(ora se ne esce con tutta la sua seconda vita di esperto di filesystems :huh: )

PGI-Bis
20-12-2006, 23:34
E me lo chiedi a me. Che tutorial. Uno piglia, scrive su google "x86, boot" e trova quello che trova. Il primo "formatta un disco con MS-DOS poi modifica i byte di mia nonna". L'altro "no bisogna prendere a modello le istruzioni di boot intel". E io li "si si, urca!". Urca 'sta fava :D.

Non vorrei impelagarmi nella faccenda non perchè abbia intenzione di progettarne uno io (:D cosa che sicuramente potrei fare in scioltezza cadendo il mio onomastico nel giorno di San FAT32 :D) ma per quel particolare tipo consapevolezza a cui si arriva partendo dal non voler sapere un cacchio di niente di quello che è stato fatto da altri.

E con il dovuto grado alcoolico nel sangue potrei anche dire quali siano i fondamenti di questa teoria :D

Denghiu per la conferma.