Aelix Operating System - Kernel Archive


[Enter the english version]


Benvenuti nella pagina ufficiale dell'Aelix Operating System. AOS è un sistema operativo basato su un micro kernel strutturato in modo altamente modulare. Il sistema operativo e' designato per lavorare su piattaforme con architettura x86 (Intel, AMD, Cyrix). E' necessario per un corretto funzionamento del sistema un processore che suppporti gli standard 586 o superiori (Ovvero pentium prima generazione). Questo e' il sito centrale del team di sviluppo del kernel. Se vuoi diventare un menbro del team contatta aelix@tiscalinet.it oppure aelix.os@libero.it. Il kernel e' alle sue fasi iniziali, quindi un aiuto esterno è sempre gradito. Ringrazio TiscaliNet.it per l'hosting gratuito dello spazio web e per la casella E-mail.


Per contattare i programmatori di sistema, o semplicemente per chattare di programmazione os entrate nel canale "#aelix", sull'irc server "irc.azzurra.net"


Informazioni legali:

I membri del team che provvedono alla programmazione del kernel non si assumono alcuna responsabilità per eventuali perdite di dati o per qualsiasi altro inconveniente causato da errori nell'applicazione. I membri assicurano un codice puro da bugs al massimo delle loro possibilità, quindi ogni errore nella programmazione e' da considerarsi puramente casuale.

Chiunque ha pieno diritto di scaricare gratuitamente e liberamente i sorgenti e i binari del kernel. Non ci sono limitazioni alcune per la modifica o la redistribuzione dei pacchetti integri o frammentati. Il codice scaricato si può considerare di pubblico dominio. E' vietata la vendita o l'uso commerciale di AOS, in qualsiasi sua forma.


Informazioni basilari sul kernel per gli sviluppatori:

Il kernel stato scritto da scratch, ovverro senza utilizzare alcuna funzione del bios. E' strutturato in modo da poter includere in futuro anche una gran quantità di moduli senza dover ritoccare profondamente il nucleo originale. Il kernel fa lavorare il processore in modalità protetta. La fase di boot è strutturata in tre parti: nella prima parte il settore di boot prende il controllo, che gli viene passata dopo il POST del BIOS. Il Bootsector setta la modalità protetta e una prima GDT. Quindi carica in memoria il sysloader. Quindi il controllo viene passato a quest'ultimo che quindi opera già in pmode. IL compito del sysloader è quello di collezionare informazioni utili al kernel, quali specifiche del processore, quantita' di memoria disponibile, indirizzi delle varie porte di comunicazione e i parametri dei dischi sia fissi che rimovibili. Viene caricato il kernel e quindi eseguito. Il kernel è strutturato come micro-modulare, ovvero il kernel vero e proprio pensa solo alla protezione della memoria ed a settare correttamente le varie descriptor table. Quindi vengono caricati i moduli richiesti, generalmente per la gestione delle varie periferiche, della memoria, dei filesystem etc. E' possibile includere moduli senza dover ricompilare il kernel.

Il sistema viene scritto su piattaforma LINUX, usando due strumenti per la compilazione:


Struttura generale del file system:

Il filing system nativo di Aelix OS è L'Afs64. Questo sistema si basa su una tavola di allocazione che risiede nell'unita' logica, subito dopo le tavole di boot. La tavola si compone di 512 record, ognuno di 64 byte, dove, fatta eccezione per la prima, ogni entry rappresenta un file nel disco. Il primo record contiene informazioni sul disco, la versione del file system e la quantita' di file che esso amministra. Ogni altro record invece contiene informazioni sui file, a partire dal nome, per arrivare alle date della creazione e dell'ultima modifica. La tavola costituisce inoltre la root directory. Infatti ogni tavola AFS può gestire anche una dir. Per questo nel primo record della tavola, vi è un puntatore DWord alla directory madre: nel caso di una normale dir, esso conterra' il numero del settore della dir madre, altrimenti, per la tavola master il valore sarà 0x00000000.

Struttura del primo record della master table ( per floppy disk da 1.44 MBytes ) :

Nome Grandezza Descrizione Valore
Table_type QWord Tipo della tavola di allocazione "AMFT",0x00000000
FileSystem_type QWord Tipo di file system "AFS "0x00000000
Parent_dir DWord Puntatore LBA alla directory madre 0x00000000
FileSystem_revision Dword Versione del filing system 0x00000001
Max_files DWord Numero massimo di file che la tavola gestisce 0x000001FF
Number_of_files DWord Numero di file gestiti dalla tavola 0x00000000
Data_start DWord Puntatore LBA all'inizio della Data Area 0x00000042
Byte_per_sect Word Numero di byte per settore 0x0200
Sect_per_track Byte Numero di settori per traccia 0x0012
Head_per_Cyl Byte Numero di faccie per cilindro 0x01
Number_of_cyl Word Numero di cilindri nel supporto 0x0050
Volume_label 11 Byte Etichetta del volume ""
Creator 11 Byte Nome del creatore del supporto "halphoenix",0x00

Struttura del primo record della first entry di una directory:

Nome Grandezza Descrizione Valore
Table_type QWord Tipo della tavola di allocazione "FOLDER"0x0000
FileSystem_type QWord Tipo del file system "AFS "0x00000000
Parent_dir DWord Puntatore LBA alla directory madre 0x????????
Max_files DWord Numero massimo di file gestibile 0x000001FF
Number_of_files DWord Numero di file gestiti 0x????????
Data_start DWord Puntatore LBA all'inizio della Data Area 0x00000042
Folder_name 32 Byte Nome della cartella ""

Struttura di un file record generico:

Nome Grandezza Descrizione Valore
File_name 32 Byte Nome del file ""
Type Word Tipo di file ( normale, dir, device ) 0x000?
Attributes Byte Attributi del file ( nascosto, system file etc ) 0x??
Sector DWord Puntatore LBA al settore di partenza del file 0x????????
Sector_length DWord Lunghezza in settori 0x????????
Byte_length DWord Lunghezza in byte 0x????????
Parent_dir DWord Puntatore alla directpry madre 0x????????
Create_day Byte Giorno della creazione del file 0x??
Create_month Byte Mese della creazione del file 0x??
Create_year Word Anno della creazione del file 0x????
Create_hour Byte Ora della creazione del file 0x??
Create_minute Byte Minuto della creazione del file 0x??
Create_second Byte Secondo della creazione del file 0x??
Create_cent Byte Centesimo della creazione del file 0x??
Modify_day Byte Giorno dell'ultima modificazione del file 0x??
Modify_month Byte Mese dell'ultima modificazione del file 0x??
Modify_year Word Anno dell'ultima modificazione del file 0x????
Modify_hour Byte Ora dell'ultima modificazione del file 0x??
Modify_minute Byte Minuto dell'ultima modificazione del file 0x??
Modify_second Byte Secondo dell'ultima modificazione del file 0x??
Modify_cent Byte Centesimo dell'ultima modificazione del file 0x??

Download dei sorgenti:

Per compilare i sorgenti viene usata una piattaforma linux ( kernel 2.4.3 ) con nasm 0.98+ e gcc 2.96+. I compilatori sono di solito inclusi nelle distribuzioni più diffuse. La compatibilità con versioni più datate dei compilatori e del kernel , non è garantita, anche se non si dovrebbero incontrare problemi di alcun genere.


Provare AOS:

Se vuoi provare direttamente AOS su un floppy puoi direttamente scaricare l'immagine binaria del dischetto, senza dover ricompilare i sorgenti. Qui viene fornita un immagine raw del dischetto di boot. Se lavorate sotto dos potete scaricare direttamente da questo sito l'utility Rawrite. Altrimenti potete usare il comando "dd" sulle piattaforme unix-like.


Informazioni sulle release del kernel ( Maior Release: 0.0 ) :


AnyBrowser.org
 
osdev.org

Sito pubblicato da:

Halphoenix ( halphoenix@galactica.it )