Difference between revisions of "Setting up the build environment in a chroot"

From Alpine Linux
Jump to: navigation, search
m (fix dev/null)
m (redirect added)
Line 1: Line 1:
= Setting up a build environment for Alpine 1.9 =
+
#REDIRECT [[Installing_Alpine_Linux_in_a_chroot]]
 
 
This document explains how to set up an Alpine build environment in a chroot under a "normal" Linux distro, such as Arch, Debian, Fedora, Gentoo,  or Ubuntu. Once inside the chroot environment, you can build, debug and run alpine packages.
 
 
 
== Introduction  ==
 
 
 
You need 80MB space for the tools + the space for the sources you are interested in. (You'd be able to compile all packages in less than 1 GB, given that you clean up sources after each package)
 
 
 
== Create a build environment  ==
 
 
 
We are setting up our Build Environment in chroot.<br>
 
 
 
'''Note:''' The variables below:
 
 
 
*'''${build_dir}''' = You can name it whatever you like.
 
*'''${mirror}''' = Should be replaced with one of the available alpine-mirrors:
 
 
 
{{Mirrors}}
 
 
 
<br> Lets start by geting the latest apk static binary:
 
 
 
wget ${mirror}/v1.9/apk.static
 
chmod +x ./apk.static
 
 
 
Verify you have apk-tools 2.0_rc1 or later:
 
./apk.static --version
 
  apk-tools 2.0_rc1
 
 
 
We are setting up a basic chroot:
 
 
 
mkdir ${build_dir}
 
sudo ./apk.static --repo ${mirror}/v1.9/packages/main -U --allow-untrusted --root ${build_dir} --initdb add alpine-base alpine-sdk
 
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 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
 
 
 
seems as /dev/null is wrong
 
sudo rm -f ./${build_dir}/dev/null && sudo mknod -m 666 ./${build_dir}/dev/null c 1 3
 
 
 
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
 
sudo 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
 
 
 
If you are using Alpine as a Native build system you will have to make sure that chroot can run chmod. Add following to /etc/sysctl.conf
 
kernel.grsecurity.chroot_deny_chmod = 0
 
Then run the following command
 
sysctl -p
 
 
 
 
 
Now you can move on to [[Creating_an_Alpine_package|creating packages for Alpine.]]
 

Revision as of 03:45, 24 June 2011