Setting up the build environment in a chroot

From Alpine Linux
Revision as of 08:04, 30 January 2009 by Mhavela (talk | contribs) (Cleaned up the document - removing KVM notes)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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:

  • ${mirror} = Should be replaced with one of the available alpine-mirrors.
  • ${build_dir} = You can name it whatever you like.

Lets start by geting the latest apk static binary:

wget ${mirror}/apk.static
chmod +x ./apk.static

We are setting up a basic chroot:

mkdir ${build_dir}
./apk.static --repo ${mirror}/packages/core --root $PWD/${build_dir} add --initdb build-base git abuildv
mkdir -p ./${build_dir}/proc
mount --bind /proc ./${build_dir}/proc

Lets setup our needed devices:

mknod -m 666 ./${build_dir}/dev/full c 1 7
mknod -m 777 ./${build_dir}/dev/null c 1 3
mknod -m 666 ./${build_dir}/dev/ptmx c 5 2
mknod -m 644 ./${build_dir}/dev/random c 1 8
mknod -m 644 ./${build_dir}/dev/urandom c 1 9
mknod -m 666 ./${build_dir}/dev/zero c 1 5
mknod -m 666 ./${build_dir}/dev/tty c 5 0

We need or dns servers and root dir:

cp /etc/resolv.conf ./${build_dir}/etc/
mkdir -p ./${build_dir}/root

We are setting up apk mirrors:

mkdir -p ./${build_dir}/etc/apk
echo "${mirror}/packages/core" > ./${build_dir}/etc/apk/repositories
echo "${mirror}/packages/extra" >> ./${build_dir}/etc/apk/repositories

At this point you should be able to enter your chroot:

chroot ./${build_dir} /bin/sh

Update a existing environment