Mail archive

[alpine-devel] Run Alpine linux in an openvz Container

From: Harry Lachanas <>
Date: Thu, 27 May 2010 10:58:56 +0300


I've modified the setup-vs-template that creates a vsrerver template in
order to create an openvz that you can find attached to this.

My Env is openvz from Proxmox 1.5 ( based on debian lenny ) that
provides a web interface and makes some thinks a little easier when it
comes to setting up quotas for the container ( which in my opinion from
the command line is ridiculously complex from the command line ) .

These instructions hold for the above mentioned env and propably will
not work for others.

1st step required involves a little cheating
from ths HS env:

#cd /etc/vz/dists

#cat debian.conf | sed 's/debian/alpine/g' > alpine.conf
#cd /etc/vz/dists/scripts


That is since alpine looks and feels like debian in some ways, the
debian scripts ( should ) work in our alpine env.

from an alpine env we run the script provided.

that will create a tar.gz file ( if no name is provided
alpine-1.10-base-i386.tar.gz )
we move this tar.gz into

And we are set to go

 From the host
#vzctl create 111 --config --hostname alpine --ipadd --ostemplate alpine-1.10-base-i386

this will create the alpine CT.

#vzctl exec 111 /etc/init.d/devfs start


vzctl enter 111 should get you in the alpine CT.

from the web env of the host you can setup the quotas etc ..
of your container ..



# create an openvz template

usage() {
        echo "usage: $PROG [-fhq] [-o OUTFILE] [-X repository] [packages...]"
        exit $1

clean_exit() {
        rm -rf "$tmpdir"
        exit $1

while getopts "ho:qX:" opt; do
        case "$opt" in
        h) usage 0;;
        o) outfile="$OPTARG";;
        q) quiet=-q;;
        X) repos="$repos --repository $OPTARG";;
shift $(( $OPTIND - 1 ))

if [ "$(whoami)" != "root" ]; then
        echo "Warning: you need root permissions" >&2

tmpdir=$(mktemp -d ${TMPDIR:-/tmp}/setup-vz-template-XXXXXX)

apk add --root "$tmpdir" --initdb --keys-dir /etc/apk/keys -U \
        $quiet ${repos:---repositories-file /etc/apk/repositories} \
        alpine-base bash $@ \
        || clean_exit 1

sed -i -e 's/\/ash$/\/bash/' ${tmpdir}/etc/passwd
sed -i -e 's/^#\/bin\/bash/\/bin\/bash/' ${tmpdir}/etc/shells
sed -i -e 's/^tty[1-9]/#&/g' ${tmpdir}/etc/inittab
sed -i -e 's/^/#&/' ${tmpdir}/etc/fstab

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

tar -czf "$outfile" -C "$tmpdir" $(ls "$tmpdir") || clean_exit 1

[ -z "$quiet" ] && echo "Created $outfile"
clean_exit 0

Received on Thu May 27 2010 - 10:58:56 UTC