NoWayOS
ES
GitHub
MenúCerrar

Empiece aquí

Primeros pasos

Construya el contenedor de desarrollo de NoWayOS y ejecute su demo interactiva, con cada fotograma comprobado, sin necesidad de hardware ni de conocimientos de seL4.

NoWayOS se compila dentro de un único contenedor de desarrollo con versiones fijadas, así que su máquina necesita muy poco por su cuenta. Esta página le lleva de cero a la demo en marcha. La siguiente arranca un sistema seL4 real en QEMU, y otra posterior lo lleva a una Raspberry Pi 5.

Qué necesita

  • Podman y GNU Make. Docker también sirve: añada ENGINE=docker a cada comando make.
  • git, para clonar los repositorios.
  • Ni Rust ni herramientas de seL4 en su máquina. Las cadenas de herramientas de Rust, el SDK de Microkit y QEMU están todos dentro del contenedor de desarrollo, fijados a versiones exactas.

En macOS, Podman ejecuta los contenedores en una máquina virtual. Créela e iníciela una vez, asignándole unas cuantas CPU y varios gigabytes de memoria, por ejemplo:

podman machine init --cpus 4 --memory 8192
podman machine start

NoWayOS se desarrolla en Apple silicon (arm64). En x86-64 los paquetes de la imagen de desarrollo también están fijados y revisados, pero la imagen todavía no se ha compilado ni probado allí de principio a fin.

Dele a NoWayOS una carpeta propia

El contenedor de desarrollo monta la carpeta superior a su clon, para que los repositorios clonados uno al lado del otro puedan compilarse entre sí. Cree antes una carpeta para ellos:

mkdir nowayos-work && cd nowayos-work
git clone https://github.com/NoWayOS/nowayos.git
cd nowayos

Construya el contenedor de desarrollo

make container

Esto construye la imagen de desarrollo con versiones fijadas: las cadenas de herramientas de Rust, el SDK de Microkit, QEMU y las herramientas de comprobación. La primera compilación tarda unos minutos (menos de cuatro en un Mac con Apple silicon) y genera una imagen de unos 4,7 GB. Vuelva a ejecutarlo siempre que cambie tools/container/Containerfile; todos los demás objetivos se niegan a ejecutarse sobre una imagen desactualizada y se lo indican.

Ejecute la demo

make demo

La demo es una pequeña aplicación de formularios con una sesión guionizada de toques, clics y pulsaciones de teclas. Se ejecuta como una simulación en el anfitrión, sin seL4 y sin QEMU, y dibuja el fotograma de cada paso con el núcleo de interfaz y el renderizador reales de NoWayOS. Cada fotograma se compara con una imagen aprobada, y la ejecución termina así:

demo: PASS - … steps, every frame as approved

Si algún fotograma difiere en un solo píxel, la ejecución indica en qué paso y falla.

Eche un vistazo

make # every target, with a line on each
make test # unit, property, doc and golden-image tests
make lint # rustfmt, then clippy with warnings as errors

Cada objetivo se ejecuta en el contenedor de desarrollo y lo inicia por usted. El DEVELOPING.md del repositorio los enumera todos, junto con la estructura del código.

Si algo sale mal

  • error: … was not built from the current … Containerfile: la definición del contenedor ha cambiado desde que lo construyó. Vuelva a ejecutar make container, como indica el mensaje.
  • No se puede acceder a Podman: en macOS, inicie su máquina virtual con podman machine start.
  • Una compilación se queda sin memoria: asigne más memoria a la máquina virtual de Podman. El control completo, make ci, ejecuta demostraciones por verificación de modelos que necesitan mucha más que la demo (Comprobaciones y evidencias).