1
0
mirror of https://github.com/rancher/os.git synced 2025-09-25 04:37:02 +00:00

Build for ARM64 on ARM64, installer included

This commit is contained in:
Ivan Mikushin
2016-02-29 17:01:33 -08:00
parent 60d3a828ae
commit 142ec23778
22 changed files with 145 additions and 77 deletions

View File

@@ -1,7 +1,7 @@
#!/bin/bash
#!/bin/sh
set -ex
cd $(dirname $0)/..
. ./scripts/dapper-common
dapper -O make ARCH=arm rootfs
dapper -O make DEV_BUILD=1 test
dapper -d -O make ARCH=${ARCH} DEV_BUILD=1 test

21
scripts/dapper-common Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/sh
set -ex
guessArch() {
docker version | grep 'OS/Arch:' | tail -n+2 | awk '{print $2}' | cut -f2 -d'/'
}
ARCH=${ARCH:-"$(guessArch)"}
ARCH=${ARCH:?"Failed to guess ARCH"}
export ARCH
cd $(dirname $0)/..
[ -f "./.docker-env.${ARCH}" ] && . ./.docker-env.${ARCH} || echo "WARNING: missing .docker-env.${ARCH} (to use an ${ARCH} docker host)"
set -a
. ./build.conf.${ARCH}
set +a
docker inspect $DAPPER_BASE >/dev/null 2>&1 || docker pull $DAPPER_BASE
docker tag $DAPPER_BASE rancher/os-dapper-base

View File

@@ -21,6 +21,7 @@ do
*) exit 1 ;;
esac
done
[ "$ARCH" == "arm" && "$ENV" != "rancher-upgrade" ] && ENV=arm
DIST=${DIST:-/dist}
CLOUD_CONFIG=${CLOUD_CONFIG:-"${SCRIPTS_DIR}/conf/empty.yml"}
@@ -153,6 +154,10 @@ if [ -n ${ENV} ]; then
install_grub
"${SCRIPTS_DIR}/seed-data" ${BASE_DIR} ${CLOUD_CONFIG} ${FILES}
;;
"arm")
format_and_mount
"${SCRIPTS_DIR}/seed-data" ${BASE_DIR} ${CLOUD_CONFIG} ${FILES}
;;
"amazon-ebs-pv"|"amazon-ebs-hvm")
CONSOLE=ttyS0
format_and_mount

7
scripts/make.sh Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/bash
set -e
cd $(dirname $0)/..
. ./scripts/dapper-common
dapper make ARCH=${ARCH} "$@"

View File

@@ -3,7 +3,7 @@ set -ex
TARGET=$(pwd)/${1}
ARCH=${ARCH:-"amd64"}
ARCH=${ARCH:?"ARCH not set"}
DFS_IMAGE=${DFS_IMAGE:?"DFS_IMAGE not set"}
IS_ROOTFS=${IS_ROOTFS:-0}
@@ -53,12 +53,12 @@ docker export ${DFS_ARCH} | tar xvf - -C ${INITRD_DIR} --exclude=usr/bin/dockerl
usr
if [ "$IS_ROOTFS" == "1" ]; then
DFS=$(docker run -d --privileged -v /lib/modules/$(uname -r):/lib/modules/$(uname -r) ${DFS_IMAGE})
DFS=$(docker run -d --privileged -v /lib/modules/$(uname -r):/lib/modules/$(uname -r) ${DFS_ARCH_IMAGE})
trap "docker rm -fv ${DFS_ARCH} ${DFS}" EXIT
docker exec -i ${DFS} docker load < ${BUILD}/images.tar
docker stop ${DFS}
docker run --rm --volumes-from=${DFS} debian:jessie tar -c -C /var/lib/docker ./image | tar -x -C ${INITRD_DIR}/var/lib/system-docker
docker run --rm --volumes-from=${DFS} debian:jessie tar -c -C /var/lib/docker ./overlay | tar -x -C ${INITRD_DIR}/var/lib/system-docker
docker run --rm --volumes-from=${DFS} rancher/os-dapper-base tar -c -C /var/lib/docker ./image | tar -x -C ${INITRD_DIR}/var/lib/system-docker
docker run --rm --volumes-from=${DFS} rancher/os-dapper-base tar -c -C /var/lib/docker ./overlay | tar -x -C ${INITRD_DIR}/var/lib/system-docker
cd ${INITRD_DIR}

View File

@@ -8,12 +8,6 @@ VERSION=${VERSION:?"VERSION not set"}
cd $(dirname $0)/..
strip_bin=$(which strip)
if [ "${ARCH}" == "arm" ]; then
export GOARM=6
export CC=/usr/bin/arm-linux-gnueabihf-gcc
export CGO_ENABLED=1
strip_bin=/usr/arm-linux-gnueabihf/bin/strip
fi
[ "${ARCH}" == "arm" ] && export GOARM=6
GOARCH=${ARCH} go build -tags netgo -installsuffix netgo -ldflags "-X github.com/rancher/os/config.VERSION=${VERSION} -linkmode external -extldflags -static" -o ${ros}
${strip_bin} --strip-all ${ros}
strip --strip-all ${ros}

View File

@@ -7,6 +7,9 @@ cd $(dirname $0)/..
source scripts/build-common
BASE=$(pwd)
UNAME=$(uname)
QEMUARCH=$(uname -m)
[ "${UNAME}" == "Darwin" ] && QEMUARCH=x86_64
KERNEL=${BASE}/dist/artifacts/vmlinuz
INITRD=${BASE}/dist/artifacts/initrd
@@ -41,7 +44,7 @@ while [ "$#" -gt 0 ]; do
fi
;;
--qemu)
if [ -x $(which qemu-system-x86_64) ]; then
if [ -x $(which qemu-system-${QEMUARCH}) ]; then
QEMU=1
fi
;;
@@ -76,7 +79,6 @@ if [[ ! -e ${KERNEL} || ! -e ${INITRD} ]]; then
exit 1
fi
UNAME=$(uname)
# Linux and Darwin SHA1 sum binary are different, pick which to use
if [ "$UNAME" == "Darwin" ]; then sha1sum=$(which shasum)
elif [ "$UNAME" == "Linux" ]; then sha1sum=$(which sha1sum);
@@ -102,7 +104,7 @@ if [ "$REBUILD" == "1" ]; then
mkdir -p ${INITRD_TMP}/usr/{bin,share/ros}
cp bin/ros ${INITRD_TMP}/usr/bin/
cp -f os-config.yml ${INITRD_TMP}/usr/share/ros/ #FIXME: generate os-config.yml from os-config.tpl.yml
cp -f build/os-config.yml ${INITRD_TMP}/usr/share/ros/
pushd ${INITRD_TMP}
find . | cpio -H newc -o | gzip > ${INITRD_TEST}
@@ -166,7 +168,7 @@ if [ "$XHYVE" == "1" ] || [ "$QEMU" == "1" ]; then
if [ "$KVM" == "1" ]; then
KVM_ENABLE="-machine accel=kvm -cpu host"
fi
exec qemu-system-x86_64 -serial stdio \
exec qemu-system-${QEMUARCH} -serial stdio \
-kernel ${KERNEL} \
-initrd ${INITRD} \
-m 1024 \