[lxc-devel] [PATCH 4/5] lxc-alpine: add support for setting arch from command line

Natanael Copa ncopa at alpinelinux.org
Mon Dec 31 19:49:18 UTC 2012


This allows us to lxc-create 32 bit guests on x86_64 hosts.

Signed-off-by: Natanael Copa <ncopa at alpinelinux.org>
---
 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 87886f5..5b685b1 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 <<EOF >> $path/config
 lxc.tty = 4
 lxc.pts = 1024
@@ -120,7 +127,7 @@ die() {
 
 usage() {
     cat >&2 <<EOF
-Usage: $(basename $0) [-h|--help] [-r|--repository <url>]
+Usage: $(basename $0) [-h|--help] [-r|--repository <url>] [-a|--arch <arch>]
                    -p|--path <path> -n|--name <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"
-- 
1.8.0.3





More information about the lxc-devel mailing list