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"