Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker image with reproducible build environment #61

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
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
23 changes: 23 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# FROM ubuntu:20.04
FROM debian:10

ARG DEBIAN_FRONTEND=noninteractive
# RUN sed -i "s/# deb-src/deb-src/g" /etc/apt/sources.list
RUN echo "deb-src http://deb.debian.org/debian buster main" >> /etc/apt/sources.list \
&& echo "deb-src http://deb.debian.org/debian buster-updates main" >> /etc/apt/sources.list \
&& echo "deb-src http://security.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list

RUN apt-get update \
&& apt-get build-dep -y linux \
&& apt-get install -y libarchive-tools curl wget f2fs-tools cgpt vboot-utils libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf qemu-user-static gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu parted udev git debootstrap u-boot-tools qemu-user lz4

# Newer version of qemu-aarch64-static is needed as it fixes a bug causing a segfault
RUN wget http://security.ubuntu.com/ubuntu/pool/universe/q/qemu/qemu-user-static_5.2+dfsg-9ubuntu3.1_amd64.deb \
&& dpkg -i qemu-user-static_5.2+dfsg-9ubuntu3.1_amd64.deb \
&& rm qemu-user-static_5.2+dfsg-9ubuntu3.1_amd64.deb

# arch-test causes debootstrap to fail. Remove
RUN apt-get remove -y arch-test
# && update-binfmts --enable \
# && service binfmt-support restart

10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,16 @@ Once you have this out, continue with instructions:
#### *Binary drivers are unsupported in Cadmium and never will be*

## Dependencies on build machine
### Docker Method
`Dockerfile` defines a build environment containing all the dependencies needed. The docker image can be build with `docker build . -t cadmium_build`. After this, it can be run as follows
```
user@hostname:~/Cadmium$ docker run --rm -it --privileged -v /dev:/dev -v $(pwd):/code cadmium bash
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the image name should be cadmium_build here

root@3519cde987d5:/# update-binfmts --enable
root@3519cde987d5:/#
```
The docker container has to be run with `--privileged` and `-v /dev:/dev` as this is needed for mounting loopback devices and running debootstrap/chroot. Inside the docker shell, `update-binfmts --enable` has to be run once, after which the environment is ready for building Cadmium images.

### Non-Docker Method
- Recent Linux distribution
- Binfmt when Debian rootfs is used
- ```debootstrap``` when Debian rootfs is used
Expand Down