Skip to content

About

Operating System with microkernel architecture.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

shell

Check the following document for a detailed overview on how we built the entire OS from the ground up.

Docker

Use the following command to obtain and start a Docker container with all dependencies.

$ ./tools/bfdocker.sh

Nix Flakes

If you use Nix and have enabled Flakes support, you can use the devShell provided to get all dependencies:

$ nix develop .
...
$ file $(which stack)
/nix/store/s51xf1l2b8sxhb5ywksbnrhpja3zhg2z-stack/bin/stack: a /nix/store/xy4jjgw87sbgwylm5kn047d9gkbhsr9x-bash-5.2p37/bin/bash script text executable

Alternatively, you can also use the package and app definitions in the Flake output to build and boot Barrelfish:

$ nix build .#qemu
$ file -L result
result: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x0,0,2), end-CHS (0x3ff,255,63), startsector 1, 409599 sectors, extended partition table (last)
$ nix build .#imx8x
$ file -L result
result: PE32+ executable for EFI (application), ARM64 (stripped to external PDB), 2 sections
$ nix run .#bootQemu
$ nix run .#bootImx8x

Note that due to the hermeticity of Nix as well as the package granularity, the entire tree will be rebuilt on even a single change. You should prefer the devShell for interactive development.

Building

To build Barrelfish, create a build directory, and execute Hake to generate the Makefile. Note, have your build directory outside of the source tree, or name it build.

$ mkdir build
$ cd build
$ ../hake/hake.sh -s ../ -a armv8

Then you can use make to build Barrelfish. To obtain an overview of all targets execute

$ make help

Likewise, for all platforms that can be build

$ make help-platforms

and finally the boot targets with

$ make help-boot

About

Operating System with microkernel architecture.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages