Cómo construir un nuevo sistema operativo basado en BSD, como MacOS

Notando por adelantado que MacOS comenzó como un Servidor Único BSD 4.2g (Net/2) sobre un Microkernel Mach...

Lo más fácil es elegir tu BSD, y luego empezar a cambiar las cosas que quieres cambiar de él.

La forma de hacerlo es configurar un sistema como sistema de destino de pruebas, y configurar un sistema separado como su entorno de desarrollo, y ejecutar un BSD no adulterado en él.

Desde ahí, puede configurar un directorio de origen alternativo - yo haría esto copiando el árbol de origen en otra partición - y luego configurar un directorio de destino en el entorno de construcción para apuntar a una tercera partición.

Esta tercera partición puede estar en un medio extraíble, para hacer la imagen de arranque que luego se lleva a su sistema de prueba, o puede estar en un objetivo SCSI, y puede dual-home - lo que significa que puede acceder a ella a través del protocolo SCSI desde el sistema de construcción, o alternativamente, el sistema de destino.

En Whistle/IBM utilizamos un sistema SCSI para desarrollar Soft Updates para el UFS de FreeBSD.

Mis preferencias personales serían implementar a partir de alguna versión de FreeBSD, a menos que su arquitectura de destino no esté soportada.

Lo principal que querrá cambiar -y la razón por la que tanto los sistemas BSD como Linux han fracasado en el espacio de escritorio- son los servicios de visualización, los controladores gráficos y la creación de un único kit de herramientas de interfaz gráfica de usuario.

Si los programadores pueden elegir, tomarán decisiones que es mejor dejar en manos del marketing.

Al proporcionar un único kit de herramientas, usted garantiza que los terceros tengan un único entorno de desarrollo al que dirigirse.

Debe diseñar esto con cuidado, ya que querrá mantener la compatibilidad binaria hacia atrás para las aplicaciones más antiguas, avanzando, para que un desarrollador pueda dirigirse a su plataforma, y esperar que las ventas continúen hacia adelante durante al menos una década.

Necesitará mínimamente portar el navegador Chromium a su plataforma, y preferentemente querrá portarlo de forma que Adobe esté dispuesto a proporcionar un componente flash.

Necesitará integrar la firma de código, y secciones del formato binario ELF (asumiendo que se quede con ELF) a los bloques de firma, de forma que pueda cablear las firmas de código en la ruta de paginación para las imágenes ejecutables.

Esto es lo mínimo que hay que hacer para proporcionar binarios seguros en los que puedan confiar los usuarios.

En esto, se podría considerar un formato de ejecutable alternativo. Esto permitiría discriminar fácilmente entre los binarios de "estilo antiguo" y los de "estilo nuevo"; también le permitiría "desactivar" cierto soporte de binarios, y en algún momento en el futuro, esto le permitirá saber si ha alcanzado o no una marca de "corte", o si todavía hay trabajo que necesita hacer para convertirse en auto-alojado.

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.