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

From Alpine Linux
Jump to: navigation, search
m (Cleaning up)
(Create a build environment: Need sudo rights)
Line 22: Line 22:
  
 
  mkdir ${build_dir}
 
  mkdir ${build_dir}
  ./apk.static --repo ${mirror}/v1.9/packages/core --root $PWD/${build_dir} add --initdb build-base git abuild
+
  sudo ./apk.static --repo ${mirror}/v1.9/packages/core --root $PWD/${build_dir} add --initdb build-base git abuild
 
  mkdir -p ./${build_dir}/proc
 
  mkdir -p ./${build_dir}/proc
  mount --bind /proc ./${build_dir}/proc
+
  sudo mount --bind /proc ./${build_dir}/proc
  
 
Lets setup our needed devices:  
 
Lets setup our needed devices:  
  
  mknod -m 666 ./${build_dir}/dev/full c 1 7
+
  sudo mknod -m 666 ./${build_dir}/dev/full c 1 7
  mknod -m 777 ./${build_dir}/dev/null c 1 3
+
  sudo mknod -m 777 ./${build_dir}/dev/null c 1 3
  mknod -m 666 ./${build_dir}/dev/ptmx c 5 2
+
  sudo mknod -m 666 ./${build_dir}/dev/ptmx c 5 2
  mknod -m 644 ./${build_dir}/dev/random c 1 8
+
  sudo mknod -m 644 ./${build_dir}/dev/random c 1 8
  mknod -m 644 ./${build_dir}/dev/urandom c 1 9
+
  sudo mknod -m 644 ./${build_dir}/dev/urandom c 1 9
  mknod -m 666 ./${build_dir}/dev/zero c 1 5
+
  sudo mknod -m 666 ./${build_dir}/dev/zero c 1 5
  mknod -m 666 ./${build_dir}/dev/tty c 5 0
+
  sudo mknod -m 666 ./${build_dir}/dev/tty c 5 0
  
 
We need or dns servers and root dir:  
 
We need or dns servers and root dir:  
  
  cp /etc/resolv.conf ./${build_dir}/etc/
+
  sudo cp /etc/resolv.conf ./${build_dir}/etc/
 
  mkdir -p ./${build_dir}/root
 
  mkdir -p ./${build_dir}/root
  
Line 44: Line 44:
  
 
  mkdir -p ./${build_dir}/etc/apk
 
  mkdir -p ./${build_dir}/etc/apk
  echo "${mirror}/v1.9/packages/core" > ./${build_dir}/etc/apk/repositories
+
su
  echo "${mirror}/v1.9/packages/extra" >> ./${build_dir}/etc/apk/repositories
+
  echo "${mirror}/v1.9/packages/core" > ./${build_dir}/etc/apk/repositories
 +
  echo "${mirror}/v1.9/packages/extra" >> ./${build_dir}/etc/apk/repositories
 +
exit
  
 
At this point you should be able to enter your chroot:  
 
At this point you should be able to enter your chroot:  
  
  chroot ./${build_dir} /bin/sh
+
  sudo chroot ./${build_dir} /bin/sh

Revision as of 14:26, 10 March 2009

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:



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/core --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:

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

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

sudo chroot ./${build_dir} /bin/sh