From 2b49de9a3ff182c208148d780f6b26cf8cdd09d8 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Mon, 31 Dec 2012 20:49:18 +0100 Subject: [PATCH] lxc-alpine: add support for setting arch from command line MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows us to lxc-create 32 bit guests on x86_64 hosts. Signed-off-by: Natanael Copa Acked-by: Stéphane Graber --- templates/lxc-alpine.in | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/templates/lxc-alpine.in b/templates/lxc-alpine.in index 87886f59e..5b685b142 100644 --- a/templates/lxc-alpine.in +++ b/templates/lxc-alpine.in @@ -9,7 +9,11 @@ install_alpine() { else cp /etc/apk/repositories "$rootfs"/etc/apk/repositories || return 1 fi - ${APK:-apk} add -U --initdb --root $rootfs alpine-base + opt_arch= + if [ -n "$apk_arch" ]; then + opt_arch="--arch $apk_arch" + fi + ${APK:-apk} add -U --initdb --root $rootfs $opt_arch alpine-base } configure_alpine() { @@ -68,6 +72,9 @@ copy_configuration() { grep -q "^lxc.rootfs" $path/config 2>/dev/null \ || echo "lxc.rootfs = $rootfs" >> $path/config + if [ -n "$lxc_arch" ]; then + echo "lxc.arch = $lxc_arch" >> $path/config + fi cat <> $path/config lxc.tty = 4 lxc.pts = 1024 @@ -120,7 +127,7 @@ die() { usage() { cat >&2 <] +Usage: $(basename $0) [-h|--help] [-r|--repository ] [-a|--arch ] -p|--path -n|--name EOF } @@ -161,6 +168,11 @@ while [ $# -gt 0 ]; do repository=$1 shift ;; + -a|--arch) + optarg_check $opt "$1" + arch=$1 + shift + ;; --) break;; --*=*) @@ -193,6 +205,18 @@ if [ -z "$rootfs" ]; then rootfs="${path}/rootfs" fi +lxc_arch=$arch +apk_arch=$arch + +case "$arch" in + i[3-6]86) + apk_arch=x86;; + x86) + lxc_arch=i686;; + x86_64|"") ;; + *) die "unsupported architecture: $arch";; +esac + install_alpine "$rootfs" || die "Failed to install rootfs for $name" configure_alpine "$rootfs" "$name" || die "Failed to configure $name" copy_configuration "$path" "$rootfs" "$name"