From 63ae91712cbd2191ac627b35e5de298647117077 Mon Sep 17 00:00:00 2001
From: niusmallnan <niusmallnan@gmail.com>
Date: Fri, 30 Nov 2018 17:12:34 +0800
Subject: [PATCH] Support multiple architectures

---
 Dockerfile.dapper                             | 16 ++++++-----
 config/{ => x86}/kernel-config                |  0
 {scripts => firmware/x86}/firmware            |  0
 images/10-extras/Dockerfile                   |  4 +--
 images/10-extras/prebuild.sh                  |  2 +-
 images/10-headers/Dockerfile                  |  4 +--
 images/10-headers/prebuild.sh                 |  2 +-
 images/10-kernel/Dockerfile                   |  4 +--
 images/10-kernel/prebuild.sh                  |  6 ++--
 .../x86/modules-extra.list                    |  0
 modules.list => modules/x86/modules.list      |  0
 .../elide-post-dash-cmdline-from-proc.patch   |  0
 scripts/build-kernel                          | 20 ++++++-------
 scripts/ci                                    |  2 ++
 scripts/config-kernel                         |  6 ++--
 scripts/extract                               |  8 +++---
 scripts/package-kernel                        | 28 +++++++++----------
 scripts/release                               | 28 ++++++++-----------
 scripts/test-firmware                         |  2 +-
 scripts/version                               | 14 ++++++++++
 20 files changed, 80 insertions(+), 66 deletions(-)
 rename config/{ => x86}/kernel-config (100%)
 rename {scripts => firmware/x86}/firmware (100%)
 rename modules-extra.list => modules/x86/modules-extra.list (100%)
 rename modules.list => modules/x86/modules.list (100%)
 rename patches/{ => x86}/elide-post-dash-cmdline-from-proc.patch (100%)

diff --git a/Dockerfile.dapper b/Dockerfile.dapper
index 70b52a2..8575b62 100644
--- a/Dockerfile.dapper
+++ b/Dockerfile.dapper
@@ -2,7 +2,8 @@ FROM gcc:7.3.0
 # FROM arm64=arm64v8/gcc:7.3.0
 
 RUN apt-get update \
-    && apt-get install -y ccache vim gnupg2 locales bc kmod libelf-dev
+    && apt-get install -y ccache vim gnupg2 locales bc kmod libelf-dev \
+    && rm -f /bin/sh && ln -s /bin/bash /bin/sh
 
 # Install dapper
 RUN curl -sL https://releases.rancher.com/dapper/latest/dapper-$(uname -s)-$(uname -m | sed 's/arm.*/arm/') > /usr/bin/dapper \
@@ -14,8 +15,8 @@ CMD ["ci"]
 RUN locale-gen en_US.UTF-8
 ENV LANG en_US.UTF-8
 
-ARG DAPPER_HOST_ARCH=amd64
-ENV HOST_ARCH=${DAPPER_HOST_ARCH}
+ARG DAPPER_HOST_ARCH
+ENV HOST_ARCH=${DAPPER_HOST_ARCH} ARCH=${DAPPER_HOST_ARCH}
 
 ENV DAPPER_DOCKER_SOCKET true
 ENV DAPPER_SOURCE /source
@@ -28,19 +29,20 @@ WORKDIR ${DAPPER_SOURCE}
 ARG OS_REPO=rancher
 ARG KERNEL_TAG
 ARG KERNEL_VERSION=${KERNEL_TAG}-${OS_REPO}
-ARG ARCH=x86
 
 ENV OS_REPO=${OS_REPO} \
-    ARCH=${ARCH} \
+    DOCKER_URL=DOCKER_URL_${ARCH} \
     DOCKER_URL_amd64=https://get.docker.com/builds/Linux/x86_64/docker-1.10.3 \
+    DOCKER_URL_arm64=https://github.com/rancher/docker/releases/download/v1.10.3-ros1/docker-1.10.3_arm64 \
     KERNEL_TAG=${KERNEL_TAG} \
     KERNEL_VERSION=${KERNEL_VERSION} \
     KERNEL_URL=https://cdn.kernel.org/pub/linux/kernel/v4.x/ \
     KERNEL_TAR=linux-${KERNEL_TAG}.tar.xz \
-    KERNEL_SIGN=linux-${KERNEL_TAG}.tar.sign
+    KERNEL_SIGN=linux-${KERNEL_TAG}.tar.sign \
+    KERNEL_ARCH=x86
 # for rc testing
 #ENV KERNEL_URL=https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-${KERNEL_TAG}.tar.xz
 
 # Install Docker
-RUN curl -fL ${DOCKER_URL_amd64} > /usr/bin/docker && \
+RUN curl -fL ${!DOCKER_URL} > /usr/bin/docker && \
     chmod +x /usr/bin/docker
diff --git a/config/kernel-config b/config/x86/kernel-config
similarity index 100%
rename from config/kernel-config
rename to config/x86/kernel-config
diff --git a/scripts/firmware b/firmware/x86/firmware
similarity index 100%
rename from scripts/firmware
rename to firmware/x86/firmware
diff --git a/images/10-extras/Dockerfile b/images/10-extras/Dockerfile
index ea59a70..754f1a3 100644
--- a/images/10-extras/Dockerfile
+++ b/images/10-extras/Dockerfile
@@ -1,5 +1,5 @@
-FROM alpine:3.4
-# FROM arm64=skip arm=skip
+FROM alpine:3.8
+# FROM arm64=arm64v8/alpine:3.8 arm=skip
 RUN apk --purge --no-cache add kmod bash
 
 ARG KERNEL_VERSION
diff --git a/images/10-extras/prebuild.sh b/images/10-extras/prebuild.sh
index cfdb95a..f1c2994 100755
--- a/images/10-extras/prebuild.sh
+++ b/images/10-extras/prebuild.sh
@@ -2,5 +2,5 @@
 set -e
 set -x
 
-cp /source/dist/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz ./images/10-extras/extras.tar.gz
+cp /source/dist/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz ./images/10-extras/extras.tar.gz
 
diff --git a/images/10-headers/Dockerfile b/images/10-headers/Dockerfile
index 4f7c9a4..d94ad63 100644
--- a/images/10-headers/Dockerfile
+++ b/images/10-headers/Dockerfile
@@ -1,5 +1,5 @@
-FROM alpine:3.4
-# FROM arm64=skip arm=skip
+FROM alpine:3.8
+# FROM arm64=arm64v8/alpine:3.8 arm=skip
 RUN apk --purge --no-cache add kmod bash
 
 ARG KERNEL_VERSION
diff --git a/images/10-headers/prebuild.sh b/images/10-headers/prebuild.sh
index 3602989..2cb3623 100755
--- a/images/10-headers/prebuild.sh
+++ b/images/10-headers/prebuild.sh
@@ -2,5 +2,5 @@
 set -e
 set -x
 
-cp /source/dist/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz ./images/10-headers/build.tar.gz
+cp /source/dist/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz ./images/10-headers/build.tar.gz
 
diff --git a/images/10-kernel/Dockerfile b/images/10-kernel/Dockerfile
index ce4e1d7..00cde03 100644
--- a/images/10-kernel/Dockerfile
+++ b/images/10-kernel/Dockerfile
@@ -1,5 +1,5 @@
-#FROM alpine:3.4
-## FROM arm64=skip arm=skip
+FROM alpine:3.8
+# FROM arm64=arm64v8/alpine:3.8 arm=skip
 #RUN apk --purge --no-cache add kmod bash
 
 
diff --git a/images/10-kernel/prebuild.sh b/images/10-kernel/prebuild.sh
index b4bad0a..c2423e8 100755
--- a/images/10-kernel/prebuild.sh
+++ b/images/10-kernel/prebuild.sh
@@ -1,14 +1,14 @@
 #!/bin/bash
 set -ex
 
-# linux-${KERNEL_VERSION}-x86.tar
+# linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar
 
-tar -xf /source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz  ./boot/vmlinuz-${KERNEL_VERSION} ./boot/System.map-${KERNEL_VERSION}
+tar -xf /source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz  ./boot/vmlinuz-${KERNEL_VERSION} ./boot/System.map-${KERNEL_VERSION}
 mv ./boot/vmlinuz-${KERNEL_VERSION} ./images/10-kernel/kernel
 mv ./boot/System.map-${KERNEL_VERSION} ./images/10-kernel/System.map
 rmdir boot
 
-cp /source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz ./images/10-kernel/kernel.tar.gz
+cp /source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz ./images/10-kernel/kernel.tar.gz
 gunzip -f ./images/10-kernel/kernel.tar.gz
 
 ls -lah ./images/10-kernel
diff --git a/modules-extra.list b/modules/x86/modules-extra.list
similarity index 100%
rename from modules-extra.list
rename to modules/x86/modules-extra.list
diff --git a/modules.list b/modules/x86/modules.list
similarity index 100%
rename from modules.list
rename to modules/x86/modules.list
diff --git a/patches/elide-post-dash-cmdline-from-proc.patch b/patches/x86/elide-post-dash-cmdline-from-proc.patch
similarity index 100%
rename from patches/elide-post-dash-cmdline-from-proc.patch
rename to patches/x86/elide-post-dash-cmdline-from-proc.patch
diff --git a/scripts/build-kernel b/scripts/build-kernel
index 9834bf9..4d0adc3 100755
--- a/scripts/build-kernel
+++ b/scripts/build-kernel
@@ -10,21 +10,21 @@ export CCACHE_DIR="${HOME}/.kernel-ccache"
 export CC="ccache gcc"
 export PATH="/usr/lib/ccache:$PATH"
 DIR=${VERSION}
-FIRMWARE=$(readlink -f scripts/firmware)
-MODULE_LIST=$(readlink -f modules.list)
-MODULE_EXTRA_LIST=$(readlink -f modules-extra.list)
+FIRMWARE=$(readlink -f firmware/${KERNEL_ARCH}/firmware)
+MODULE_LIST=$(readlink -f modules/${KERNEL_ARCH}/modules.list)
+MODULE_EXTRA_LIST=$(readlink -f modules/${KERNEL_ARCH}/modules-extra.list)
 
-if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz" ]; then
-    echo "skipping kernel build - found linux-${KERNEL_VERSION}-rancher-x86.tar.gz in ./dist/kernel/"
+if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" ]; then
+    echo "skipping kernel build - found linux-${KERNEL_VERSION}-rancher-${KERNEL_ARCH}.tar.gz in ./dist/kernel/"
 else
     cd ${BUILD}/${DIR}
-    make oldconfig
-    KVER=$(make kernelrelease)
-    if [ -e "linux-${KERNEL_VERSION}-x86.tar" ] \
+    make ARCH=${KERNEL_ARCH} oldconfig
+    KVER=$(make ARCH=${KERNEL_ARCH} kernelrelease)
+    if [ -e "linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar" ] \
         && [ "$KVER" == "$KERNEL_VERSION" ]; then
-        echo "Skipping kernel build, found linux-${KERNEL_VERSION}-x86.tar in $(pwd)"
+        echo "Skipping kernel build, found linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar in $(pwd)"
     else
         echo "building $KVER"
-        make -j$(nproc) tar-pkg
+        make ARCH=${KERNEL_ARCH} -j$(nproc) tar-pkg
     fi
 fi
diff --git a/scripts/ci b/scripts/ci
index 477616f..7727333 100755
--- a/scripts/ci
+++ b/scripts/ci
@@ -3,6 +3,8 @@ set -e
 
 cd $(dirname $0)/..
 
+source ./scripts/version
+
 ./scripts/test-firmware
 
 if ! ./scripts/download; then
diff --git a/scripts/config-kernel b/scripts/config-kernel
index 7c06d65..c67e266 100755
--- a/scripts/config-kernel
+++ b/scripts/config-kernel
@@ -15,10 +15,10 @@ source scripts/version
 
 DIR=${VERSION}
 
-if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz" ]; then
-    echo "skipping kernel build - found linux-${KERNEL_VERSION}-rancher-x86.tar.gz in ./dist/kernel/"
+if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" ]; then
+    echo "skipping kernel build - found linux-${KERNEL_VERSION}-rancher-${KERNEL_ARCH}.tar.gz in ./dist/kernel/"
 else
     cd ${BUILD}/${DIR}
-    make oldconfig
+    make ARCH=${KERNEL_ARCH} oldconfig
     cp .config ${DIST}/kernel/config
 fi
diff --git a/scripts/extract b/scripts/extract
index 860eddd..ed1f610 100755
--- a/scripts/extract
+++ b/scripts/extract
@@ -22,16 +22,16 @@ if [ ! -e ${DIR} ]; then
     mv ${TEMP}/${DIR} ${DIR}
 fi
 
-cp ${CONFIG}/kernel-config ${DIR}/.config
+cp ${CONFIG}/${KERNEL_ARCH}/kernel-config ${DIR}/.config
 
 pushd .
 cd ${DIR}
-echo "are there patches in ${PATCHES}"
-for p in ${PATCHES}/*.patch; do
+echo "are there patches in ${PATCHES}/${KERNEL_ARCH}"
+for p in ${PATCHES}/${KERNEL_ARCH}/*.patch; do
     echo "patching $p"
     patch -p1 -i $p
 done
 popd
 
 
-tar zcvf ${DIST}/kernel/linux-${KERNEL_VERSION}-src.tgz ${DIR}
+tar zcvf ${DIST}/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}-src.tgz ${DIR}
diff --git a/scripts/package-kernel b/scripts/package-kernel
index e898572..cf0342c 100755
--- a/scripts/package-kernel
+++ b/scripts/package-kernel
@@ -25,24 +25,24 @@ done
 export CCACHE_DIR="${HOME}/.kernel-ccache"
 export CC="ccache gcc"
 export PATH="/usr/lib/ccache:$PATH"
-FIRMWARE=$(readlink -f scripts/firmware)
-MODULE_LIST=$(readlink -f modules.list)
-MODULE_EXTRA_LIST=$(readlink -f modules-extra.list)
+FIRMWARE=$(readlink -f firmware/${KERNEL_ARCH}/firmware)
+MODULE_LIST=$(readlink -f modules/${KERNEL_ARCH}/modules.list)
+MODULE_EXTRA_LIST=$(readlink -f modules/${KERNEL_ARCH}/modules-extra.list)
 
-echo "looking for /source/dist/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz"
-echo "looking for /source/dist/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz"
-echo "looking for /source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz"
-if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz" ] \
-   && [ -e "/source/dist/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz" ] \
-   && [ -e "/source/dist/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz" ]; then
+echo "looking for /source/dist/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
+echo "looking for /source/dist/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
+echo "looking for /source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
+if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" ] \
+   && [ -e "/source/dist/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" ] \
+   && [ -e "/source/dist/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" ]; then
     echo "Skipping packaging of kernel, extras and headers - already found in ./dist/kernel/"
 else
     cd ${SOURCEDIR}
-    KVER=$(make kernelrelease)
+    KVER=$(make ARCH=${KERNEL_ARCH} kernelrelease)
 
     create_firmware_tar $FIRMWARE
 
-    FILE="linux-${KVER}-x86.tar"
+    FILE="linux-${KVER}-${KERNEL_ARCH}.tar"
 
     (
         split_tar $FILE $MODULE_LIST $MODULE_EXTRA_LIST
@@ -50,8 +50,8 @@ else
 
     tar --concatenate --file=base.tar firmware.tar
     tar --concatenate --file=extra.tar firmware-extra.tar
-    cat base.tar | gzip -c > ${DIST}/kernel/linux-${KERNEL_VERSION}-x86.tar.gz
-    cat extra.tar | gzip -c > ${DIST}/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz
-    list_build_files | tar -czf ${DIST}/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz -T /dev/stdin
+    cat base.tar | gzip -c > ${DIST}/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz
+    cat extra.tar | gzip -c > ${DIST}/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz
+    list_build_files | tar -czf ${DIST}/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz -T /dev/stdin
     cp .config ${DIST}/kernel/config
 fi
diff --git a/scripts/release b/scripts/release
index 5d2be28..e6eab22 100755
--- a/scripts/release
+++ b/scripts/release
@@ -2,6 +2,8 @@
 
 cd $(dirname $0)/..
 
+source ./scripts/version
+
 if ! ./scripts/ci; then
     echo "build failure see release.log"
     exit 1
@@ -9,14 +11,11 @@ fi
 
 echo
 echo "--- ${KERNEL_VERSION} Kernel prepared for RancherOS"
-echo "  ./dist/kernel/linux-${KERNEL_VERSION}-src.tgz"
-echo "  ./dist/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz"
-echo "  ./dist/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz"
-echo "  ./dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz"
-echo "  ./dist/kernel/config"
-echo "  ./dist/kernel/modules-main.list"
-echo "  ./dist/kernel/modules-extra.list"
-echo "  ./release.log"
+echo "  ./dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}-src.tgz"
+echo "	./dist/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
+echo "	./dist/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
+echo "	./dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
+echo "  ./release-${KERNEL_ARCH}.log"
 echo
 echo "Images ready to push:"
 cat dist/images
@@ -25,14 +24,11 @@ echo "to publish kernel files and container images, run dist/publish.sh"
 
 echo "#!/bin/sh"> dist/publish.sh
 echo "github-release release --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --pre-release" >> dist/publish.sh
-echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/linux-${KERNEL_VERSION}-src.tgz --name linux-${KERNEL_VERSION}-src.tgz" >> dist/publish.sh
-echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz --name build-linux-${KERNEL_VERSION}-x86.tar.gz" >> dist/publish.sh
-echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/config --name config" >> dist/publish.sh
-echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz --name extra-linux-${KERNEL_VERSION}-x86.tar.gz" >> dist/publish.sh
-echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz --name linux-${KERNEL_VERSION}-x86.tar.gz" >> dist/publish.sh
-echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/modules-main.list --name modules-main.list" >> dist/publish.sh
-echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/modules-extra.list --name modules-extra.list" >> dist/publish.sh
-echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./release.log --name release.log" >> dist/publish.sh
+echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}-src.tgz --name linux-${KERNEL_VERSION}-${KERNEL_ARCH}-src.tgz" >> dist/publish.sh
+echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz --name build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" >> dist/publish.sh
+echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz --name extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" >> dist/publish.sh
+echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz --name linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" >> dist/publish.sh
+echo "github-release upload  --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./release-${KERNEL_ARCH}.log --name release-${KERNEL_ARCH}.log" >> dist/publish.sh
 
 cat dist/images | sed 's/^/docker push /' >> dist/publish.sh
 chmod 755 dist/publish.sh
diff --git a/scripts/test-firmware b/scripts/test-firmware
index e07943c..f954ea0 100755
--- a/scripts/test-firmware
+++ b/scripts/test-firmware
@@ -3,7 +3,7 @@ set -e
 
 cd $(dirname $0)/..
 
-FIRMWARE=$(readlink -f scripts/firmware)
+FIRMWARE=$(readlink -f firmware/${KERNEL_ARCH}/firmware)
 echo "FIRMWARE test: $FIRMWARE"
 
 if [ ! -e linux-firmware ]; then
diff --git a/scripts/version b/scripts/version
index 983b02b..08b9d4d 100755
--- a/scripts/version
+++ b/scripts/version
@@ -12,3 +12,17 @@ if [[ -z "$DIRTY" && -n "$GIT_TAG" ]]; then
 else
     VERSION="${COMMIT}${DIRTY}"
 fi
+
+SUFFIX=""
+if [ -n "${ARCH}" ] && [ "${ARCH}" != "amd64" ]; then
+    SUFFIX="_${ARCH}"
+fi
+
+case $ARCH in
+    amd64)
+        KERNEL_ARCH=x86
+        ;;
+    *)
+        KERNEL_ARCH=${ARCH}
+        ;;
+esac