Jump to content
Sign in to follow this  
NikyAT1

Creare un sistema operativo.

Recommended Posts

Se sperate di trovare in questo thread un tutorial sull'assembly necessario per creare un OS andate via; altresì, vi prego di leggere fino in fondo perché la questione è interessante.

Molto si è detto sui sistemi operativi in generale, come già accennato, una guerra "Io ce l'ho più lungo del tuo". Io amo Windows, c'è chi ama Linux, chi Neutrino (io, ma non spenderò mai 5000€ di licenza), altri amano MacOSX. Ognuno sceglie il sistema operativo in base alla proprie esigenze, ma il sistema operativo perfetto, assolutamente non esiste. Non mi sta bene nemmeno creare un LFS (Linux From Scratch), per il semplice fatto che Linux contiene rogne (a livello di kernel) che non mi piacciono per niente.

Dove voglio arrivare? Ve lo dico, ma andate avanti a leggere: voglio creare da 0 il sistema operativo perfetto, prendendo il buono di tutti e aggiuingendo quello che manca a tutti.

Ho passato una vita a studiare sistemi operativi (è una cosa che adoro, lo farei tutto il giorno) e credetemi che si può innovare tantissimo nel campo dei sistemi operativi. Un insignificante pirla come me che programma per passione e conosce quel tanto che basta di assembly per fare poco di più di un jump, ne è certo. Figuratevi avere l'apporto di decine di persone ultra-skillate.

In questa comunità possiamo vantare programmatori pazzeschi, heavy-user, smanettoni ed anche qualche sano ed indispensabile newbie.

Quello che sogno (ma probabilmente mi prenderete a calci ancor prima di arrivare alla fine) è metter su un centinaio di persone per creare un OS gratuito semplice, flessibile (si può fare, fidatevi di me), affidabile e che, come già detto, prenda il buono di tutti e ne migliori le lacune. Vorrei farlo in 5 anni. Ho portato a termine progetti a lungo termine e credetemi che non mollerò. La mia è solo un'idea, fondamentalmente e diametralmente opposta a quella di qualsiasi programmatore sano di mente sul pianeta. Prego chiunque di dire la sua prima di sputarmi in faccia.

Se non mi prenderete a calci, vi dirò anche cosa voglio fare nel dettaglio.

Saluti, Niky.

Share this post


Link to post
Share on other sites

Figo, se in futuro ti servisse un newbie betatester eccomi, intanto in bocca al lupo per il progetto, speriamo davvero che ne nasca qualcosa di interessante, secondo me sarebbe fondamentale mantenere la piena compatibilità con applicazioni per windows per far decollare seriamente la cosa anche se parlando da ignorante non so se sia fattibile :062802drink_prv:

Share this post


Link to post
Share on other sites

Teoricamente sarebbe possibile. La struttura dell'exe non è affatto complicata. Il problema sono le finestre di windows. Reimplementarle senza usare codice Microsoft (leggasi riscrivere da 0 le api) è veramente un casino.

Mi servirebbero nel gruppo almeno una decina di niubbi. Ma per niubbi intendo niubbi totali.

Share this post


Link to post
Share on other sites

.

.

.

Saluti, Niky.

 

 

non ti prenderò a calci, tenterò di essere una persona seria :stordita:

 

Teoricamente sarebbe possibile. La struttura dell'exe non è affatto complicata. Il problema sono le finestre di windows. Reimplementarle senza usare codice Microsoft (leggasi riscrivere da 0 le api) è veramente un casino.

Mi servirebbero nel gruppo almeno una decina di niubbi. Ma per niubbi intendo niubbi totali.

 

Scrivere il loader dei file PE (Portable Executable), ergo gli exe di windows, è abbastanza semplice, anzi, è proprio l'ultimo dei problemi!!!

 

Scrivere un SO è si figo, ma poi? che ci fai? :)

 

5 anni di sviluppo possibilmente sono pure tanti perché in realtà se si seguisserò a pieno le specifiche EFI possibilmente il problema driver è pure ridotto, ma mantenere la compatibilità non è fattibile: il progetto wine lavora da più di un decennio su questo aspetto e sono passati da poco allo stato di beta! Si fa prima a reimplementare un layer posix o scrivendo il so direttamente posix compatibile

 

In realtà è più interessante lavorare su aspetti specifici di un SO, mantenendo le parti cruciali: una delle cose che mi è sempre baleneata nella mente è prendere il kernel linux (peccato che lo HURD sia morto) e stravolgere tutto il resto, partendo dalla struttura del filesystem, continuando sul sistema di avvio e l'interfaccia grafica e cosi via

 

Questo comporta tanti vantaggi:

- una base, sicuramente, stabile

- drivers già esistenti e funzionanti

- compatibilità con il software esistente

- implementando un sotto-server grafico che sfrutta il protocollo X11, che non è troppo complesso, è possibile startare tutti gli applicativi grafici che fanno uso di X11

 

ecc ecc ecc

Share this post


Link to post
Share on other sites

Si, ma dannazione, io non voglio segare la riga di comando disponibile in una sorta di modalità "advanced". Un niubbo non la deve nemmeno vedere.

Il problema è che, converrai con me, *NIX è obsoleto. Serve qualcosa di molto più potente.

Che ci faccio Dani? Se lo facessi compatibile con gli applicativi Windows, più sicuro di Windows e gratis, vedi che ci faccio!

Il punto d'arrivo? Us sitema desktop oriented (stile beos per intenderci) o piu' una cosa da server (bsd/linux). Compatibile con win o no? Servono dettagli :)
2 distribuzioni: una server ed una desktop. Deve assolutamente essere compatibile con Windows, su questo non ci piove. Altrimenti, nella migliore delle ipotesi, ti ritagli una fettina insignificante di mercato.

Share this post


Link to post
Share on other sites
Si, ma dannazione, io non voglio segare la riga di comando disponibile in una sorta di modalità "advanced". Un niubbo non la deve nemmeno vedere.

Il problema è che, converrai con me, *NIX è obsoleto. Serve qualcosa di molto più potente.

Che ci faccio Dani? Se lo facessi compatibile con gli applicativi Windows, più sicuro di Windows e gratis, vedi che ci faccio!

2 distribuzioni: una server ed una desktop. Deve assolutamente essere compatibile con Windows, su questo non ci piove. Altrimenti, nella migliore delle ipotesi, ti ritagli una fettina insignificante di mercato.

 

Ma tu non la vai a segare! Il vantaggio di quest'approccio è che mantenendo la compatibilità gli starti su la bash, perl, python e TUTTO quello che vuoi tranquillamente :)

 

Inoltre parti da un concetto errato :UNIX è obsoleto, Windows è moderno

 

Non è per niente vero :)

 

La modernità o meno di un sistema operativo è vero che dipende maggiormente, diciamo per un 60%, dal cuore, ergo il kernel, ma il rimanente 40% dipende da TUTTO il resto che ci gira attorno!

E, comunque, il kernel linux è estremamente avanzato e nello stesso tempo stabile

 

Windows è, graficamente, figo, ma a livello di strutture interne non c'è poi tutta questa estrema differenza.

 

Vuoi fare una cosa figa?

 

Scrivi comunque tutto il software che devi andare a scrivere, mantenendo il layer strutturale che dici tu, perché a te serve semplicemente che il kernel parta e che ti starti un dato programma presente in una data costante, ergo l'inittab, che può essere facilmente cambiata e a quel punto ti fai startare il tuo loader che starta l'ambiente grafico e fai tutte le cose stra fighe :)

Dopo di che lo integri con Wine, ergo implementando un VELOCE, perché il dramma in realtà di linux è quello, server X11 e hai un sistema operativo, basato sul kernel di linux, come dici tu, che funziona bene!

 

Se fai le cose per bene potrai limitarti a prendere gli headers e le librerie e sostituirli con quelli di wine, ooo, e tutti gli altri software grafici che ne fanno uso

 

E siccome è una cosa che dovresti andare a fare, a prescindere, fallo direttamente sfruttando una base della quale hai un minimo di certezza

Share this post


Link to post
Share on other sites
Daniele visto che hai citato Hurd cosa ne pensi di Minix (3) ?

 

giusto per avere un tuo parere ...

 

ma lol

 

beh direi che sono mondi ben separati :)

 

Minix nacqua come un alternativa, universitaria, quindi dimostrativa e ridotta, di Unix, il colosso per eccellenza. Hurd decisamente no! Hurd è nato come alternativa ai kernel allora presenti che fosse compatibile e nello stesso tempo fosse anche basato sull'architettura Mach (ergo un insieme di servizi e sotto servizi startati dai servizi padre del kernel, immagina un gioco di scatole cinesi di cui le più piccole gestiscono direttamente le funzionalità mentre quelle più grandi gestiscono il funzionamento principale ed eventualmente stoppano/riavviano una serie di servizi andati a male, e da qui la sua estrema flessibilità e sicurezza: il nocciolo non fa una fava ed essendo sempre in esecuzione potrà SEMPRE terminare tutti i servizi che lui stesso a startato per riavviarli in modo da riavviare il sistema tutto via software! ... per esempio QNX è un esempio di questo tipo di sistemi e viene usato per quegli ambienti che non possono permettersi di bloccarsi, principalmente in medicina!)

 

------

 

http://ftp.gnuab.org/pub/debian/base/

 

non ci credo :asd:

 

li ci sta il tarball aggiornato della debian con il kernel hurd :asd:

Share this post


Link to post
Share on other sites

No Dani, io non parto dal concetto che Linux è obsoleto e Windows è avanzato. Parto dal concetto che i programmi che girano attorno a Windows (che lo compongono alla fine) sono scritti male, ma che Windows ha un kernel avanzatissimo.

E parto dal concetto che un kernel monolitico nel 2007 è semplicemente improponibile. Pensa a creare un OS con kernel ibrido (Windows) e con tutti i servizi ed i programmi scritti come quelli di Linux. Che OS sarebbe? Sicuramente il numero uno al mondo.

Ma andiamo oltre. Il concetto di kernel è obsoleto così come lo intendiamo noi. Se hai avuto sotto mano i sorgenti di Linux e FreeBSD e se sai come funziona un kernel Windows, sai già dove volgio arrivare.

Per questo non mi va di partire dal kernel di Linux. Al massimo, potrei partire dal kernel Windows, ma poi finirei in galera. E ci sono tante cose che cambierei anche di quello.

Il mio sogno poi è roba tipo Esokernel o meglio ancora un progetto nokernel. Ma qui forse, sto chiedendo un po' troppo sul serio.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×