mit-pdos/biscuit
mit-pdos/biscuit has 2,591 GitHub stars and 190 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-07 20:12 UTC. Last push 2022-10-28.
Biscuit research OS
Measured star growth
- in 24h
- 0
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalBiscuit research OS
Biscuit is a monolithic, POSIX-subset operating system kernel in Go for x86-64 CPUs. It was written to study the performance trade-offs of using a high-level language with garbage collection to implement a kernel with a common style of architecture. You can find research papers about Biscuit here: https://pdos.csail.mit.edu/projects/biscuit.html
Biscuit has some important features for getting good application performance:
- Multicore
- Kernel-supported threads
- Journaled FS with concurrent, deferred, and group commit
- Virtual memory for copy-on-write and lazily mapped anonymous/file pages
- TCP/IP stack
- AHCI SATA disk driver
- Intel 10Gb NIC driver
Biscuit also includes a bootloader, a partial libc ("litc"), and some user space programs, though we could have used GRUB or existing libc implementations, like musl.
This repo is a fork of the Go repo (https://github.com/golang/go). Nearly all of Biscuit's code is in biscuit/.
Install
The root of the repository contains the Go 1.10.1 tools/runtime. Some of Biscuit's code is modifications to the runtime, mostly in src/runtime/os_linux.go.
Biscuit used to build on Linux and OpenBSD, but probably only builds on Linux currently. You must build Biscuit's modified Go runtime before building Biscuit:
$ git clone https://github.com/mit-pdos/biscuit.git
$ cd biscuit/src
$ ./make.bash
then go to Biscuit's main part and launch it:
$ cd ../biscuit
$ make qemu CPUS=2
Biscuit should boot, then you can type a command:
# ls
Troubleshooting
You need
qemu-system-x86_64andpython2in your environment. If your distribution does not name them that way, you have to fix the naming, path, etc.If the GOPATH environment variable doesn't contain biscuit/, the build will fail with something like:
src/ahci/ahci.go:8:8: cannot find package "container/list" in any of:
...
Either unset GOPATH or set it explicitly, for example (assuming that your working directory is where the GNUMakefile is):
$ GOPATH=$(pwd) make qemu CPUS=2
Contributing
Please feel free to hack on Biscuit! We're happy to accept contributions.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
560,813 starspublic-apis/public-apis
A collective list of free APIs
497,049 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
441,309 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,152 stars