Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM amd64/golang:1.10

COPY . /home

WORKDIR /home/biscuit

RUN apt-get install python2.7

RUN apt-get update && apt-get install -y \
vim \
qemu-system \
&& rm -rf /var/lib/apt/lists/*

RUN cd ../src && \
bash ./make.bash

RUN make clean

ENV GOPATH /home/biscuit

CMD make qemu CPUS=2
27 changes: 24 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ architecture. You can find the research paper about Biscuit here:
https://www.usenix.org/system/files/osdi18-cutler.pdf

Biscuit has some important features for getting good application performance:

- Multicore
- Kernel-supported threads
- Journaled FS with concurrent, deferred, and group commit
Expand All @@ -19,7 +20,7 @@ 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
This repo is a fork of the Go repo (https://github.com/golang/go). Nearly all
of Biscuit's code is in biscuit/.

## Install
Expand All @@ -31,34 +32,54 @@ 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
```

## Build with Docker

Don't you have Linux installed on your computer? No worries, you can build the project and run it using docker. You only need to have Docker installed, and run the commands:

```
docker build -t biscuit .
docker run -it biscuit
```

Biscuit should boot, then you can type a command:

```
# ls
```

## Troubleshooting

* You need `qemu-system-x86_64` and `python2` in your environment. If your distribution does not name them that way, you have to fix the naming, path, etc.
- You need `qemu-system-x86_64` and `python2` in 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:

* 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
```