Come costruire un nuovo sistema operativo basato su BSD, come MacOS

Nota subito che MacOS ha iniziato come BSD 4.2g (Net/2) Single Server su un microkernel Mach...

La cosa più semplice da fare è scegliere il tuo BSD, e poi iniziare a cambiare le cose che vuoi cambiare di esso.

Il modo in cui lo si fa è impostare un sistema come sistema di test, e impostare un sistema separato come ambiente di sviluppo, ed eseguire un BSD puro in esso.

Da lì, si può impostare una directory sorgente alternativa - io lo farei copiando l'albero sorgente su un'altra partizione - e poi impostare una directory di destinazione nell'ambiente di compilazione per puntare ad una terza partizione.

Questa terza partizione può essere o su un supporto rimovibile, per fare l'immagine avviabile che poi porterete al vostro sistema di test, o può essere su un target SCSI, e potete dual-home - cioè potete accedervi tramite il protocollo SCSI sia dal sistema di compilazione, sia, alternativamente, dal sistema di destinazione.

Abbiamo usato un sistema SCSI alla Whistle/IBM per sviluppare Soft Updates per UFS di FreeBSD.

Le mie preferenze personali sarebbero di implementare partendo da qualche versione di FreeBSD, a meno che la vostra architettura di destinazione non sia supportata.

La cosa principale che vorrete cambiare - e la ragione per cui sia BSD che Linux non sono riusciti a decollare nello spazio desktop - sono i servizi di visualizzazione, i driver grafici, e la creazione di un unico toolkit GUI.

Se i programmatori hanno scelta, prenderanno decisioni che è meglio lasciare al marketing.

Fornendo solo un singolo toolkit, garantite che le terze parti abbiano un singolo ambiente di sviluppo a cui rivolgersi.

Dovete progettare questo con attenzione, poiché vorrete mantenere la compatibilità binaria all'indietro per le vecchie applicazioni, andando avanti, in modo che uno sviluppatore possa rivolgersi alla vostra piattaforma, e aspettarsi che le vendite continuino per almeno un decennio.

Avrete minimamente bisogno di portare il browser Chromium sulla vostra piattaforma, e vorrete preferibilmente portarlo in modo tale che Adobe sia disposta a fornire un componente flash.

Avrete bisogno di integrare la firma del codice, e sezioni del formato binario ELF (supponendo di rimanere con ELF) ai blocchi di firma, in modo da poter cablare le firme del codice nel percorso di paginazione delle immagini eseguibili.

Questo è il minimo che dovrete fare per fornire binari sicuri di cui gli utenti si possano fidare.

In questo, qualche considerazione potrebbe essere fatta su un formato eseguibile alternativo. Questo permetterebbe una facile discriminazione tra i binari "vecchio stile" e "nuovo stile"; vi permetterebbe anche di "spegnere" certi supporti binari, e ad un certo punto in futuro, questo vi permetterà di sapere se avete raggiunto o meno un "cut over", o se c'è ancora del lavoro da fare per diventare self-hosted.

This is not unprecedented, of course.

Juniper Networks JunOS is FreeBSD based, as is Sony’s Orbis OS, used on the Playstation 4 (Orbis is based on FreeBSD 9).

But it’s a lot of work.