]> git.proxmox.com Git - mirror_lxc.git/commitdiff
lxc-alpine: add support for setting arch from command line
authorNatanael Copa <ncopa@alpinelinux.org>
Mon, 31 Dec 2012 19:49:18 +0000 (20:49 +0100)
committerStéphane Graber <stgraber@ubuntu.com>
Wed, 2 Jan 2013 18:11:31 +0000 (13:11 -0500)
This allows us to lxc-create 32 bit guests on x86_64 hosts.

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
templates/lxc-alpine.in

index 87886f59e3d96c6da2d08d2570d3d5f93347ed57..5b685b142f82edd96893133c999667f05124218e 100644 (file)
@@ -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"