Setting up the build environment in a chroot
Setting up a build environment for Alpine 1.9
This docuemtn explains how to set up an Alpine build environment in a chroot in a "normal" Linux distro as Ubuntu, Fedora, Gentoo or Arch linux. In this build environment you will be able to build and run alpine packages.
Introduction
The Build Environment will be called BE from now on.
You will need a few Gigabytes to have enough pace for kernel compiling and storing all the binary packages and iso image.
Create a build environment
We are setting up our BE in chroot.
Note: The variables below:
- ${build_dir} = You can name it whatever you like.
- ${mirror} = Should be replaced with one of the available alpine-mirrors:
- http://dl-cdn.alpinelinux.org/alpine/
- http://nl.alpinelinux.org/alpine/
- http://dl-2.alpinelinux.org/alpine/
- http://dl-3.alpinelinux.org/alpine/
- http://dl-4.alpinelinux.org/alpine/
- http://dl-5.alpinelinux.org/alpine/
- http://dl-6.alpinelinux.org/alpine/
- http://dl-8.alpinelinux.org/alpine/
- http://distrib-coffee.ipsl.jussieu.fr/pub/linux/alpine/alpine/
- http://mirror.yandex.ru/mirrors/alpine/
- http://mirrors.gigenet.com/alpinelinux/
- http://mirror1.hs-esslingen.de/pub/Mirrors/alpine/
- http://liskamm.alpinelinux.uk/
- http://mirrors.2f30.org/alpine/
- http://mirror.leaseweb.com/alpine/
- http://repository.fit.cvut.cz/mirrors/alpine/
- http://alpine.mirror.far.fi/
- http://lasca.ic.unicamp.br/pub/alpine/
- http://alpinelinux.c3sl.ufpr.br/
- http://mirrors.cug.edu.cn/alpine/
- http://mirrors.cicku.me/alpine/
Lets start by geting the latest apk static binary:
wget ${mirror}/v1.9/apk.static chmod +x ./apk.static
We are setting up a basic chroot:
mkdir ${build_dir} sudo ./apk.static --repo ${mirror}/v1.9/packages/main --root $PWD/${build_dir} add --initdb build-base git abuild mkdir -p ./${build_dir}/proc sudo mount --bind /proc ./${build_dir}/proc
Lets setup our needed devices:
sudo mknod -m 666 ./${build_dir}/dev/full c 1 7 sudo mknod -m 777 ./${build_dir}/dev/null c 1 3 sudo mknod -m 666 ./${build_dir}/dev/ptmx c 5 2 sudo mknod -m 644 ./${build_dir}/dev/random c 1 8 sudo mknod -m 644 ./${build_dir}/dev/urandom c 1 9 sudo mknod -m 666 ./${build_dir}/dev/zero c 1 5 sudo mknod -m 666 ./${build_dir}/dev/tty c 5 0
We need or dns servers and root dir:
sudo cp /etc/resolv.conf ./${build_dir}/etc/ mkdir -p ./${build_dir}/root
We are setting up apk mirrors:
sudo mkdir -p ./${build_dir}/etc/apk su echo "${mirror}/v1.9/packages/main" > ./${build_dir}/etc/apk/repositories exit
At this point you should be able to enter your chroot:
sudo chroot ./${build_dir} /bin/sh -l