mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-06-23 22:17:19 +00:00
static-build: cross build kernel
Prepare cross build environment based on current Dockerfile. Fixes: #6557 Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
This commit is contained in:
parent
e2c31fce23
commit
7923de8999
@ -65,6 +65,8 @@ kernel_url=""
|
|||||||
#Linux headers for GPU guest fs module building
|
#Linux headers for GPU guest fs module building
|
||||||
linux_headers=""
|
linux_headers=""
|
||||||
|
|
||||||
|
CROSS_BUILD_ARG=""
|
||||||
|
|
||||||
MEASURED_ROOTFS=${MEASURED_ROOTFS:-no}
|
MEASURED_ROOTFS=${MEASURED_ROOTFS:-no}
|
||||||
|
|
||||||
packaging_scripts_dir="${script_dir}/../scripts"
|
packaging_scripts_dir="${script_dir}/../scripts"
|
||||||
@ -436,7 +438,7 @@ setup_kernel() {
|
|||||||
|
|
||||||
info "Copying config file from: ${kernel_config_path}"
|
info "Copying config file from: ${kernel_config_path}"
|
||||||
cp "${kernel_config_path}" ./.config
|
cp "${kernel_config_path}" ./.config
|
||||||
make oldconfig
|
ARCH=${arch_target} make oldconfig ${CROSS_BUILD_ARG}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -447,7 +449,7 @@ build_kernel() {
|
|||||||
[ -n "${arch_target}" ] || arch_target="$(uname -m)"
|
[ -n "${arch_target}" ] || arch_target="$(uname -m)"
|
||||||
arch_target=$(arch_to_kernel "${arch_target}")
|
arch_target=$(arch_to_kernel "${arch_target}")
|
||||||
pushd "${kernel_path}" >>/dev/null
|
pushd "${kernel_path}" >>/dev/null
|
||||||
make -j $(nproc ${CI:+--ignore 1}) ARCH="${arch_target}"
|
make -j $(nproc ${CI:+--ignore 1}) ARCH="${arch_target}" ${CROSS_BUILD_ARG}
|
||||||
if [ "${conf_guest}" == "sev" ]; then
|
if [ "${conf_guest}" == "sev" ]; then
|
||||||
make -j $(nproc ${CI:+--ignore 1}) INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=${kernel_path} modules_install
|
make -j $(nproc ${CI:+--ignore 1}) INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=${kernel_path} modules_install
|
||||||
fi
|
fi
|
||||||
@ -658,6 +660,8 @@ main() {
|
|||||||
|
|
||||||
info "Kernel version: ${kernel_version}"
|
info "Kernel version: ${kernel_version}"
|
||||||
|
|
||||||
|
[ "${arch_target}" != "" -a "${arch_target}" != $(uname -m) ] && CROSS_BUILD_ARG="CROSS_COMPILE=${arch_target}-linux-gnu-"
|
||||||
|
|
||||||
case "${subcmd}" in
|
case "${subcmd}" in
|
||||||
build)
|
build)
|
||||||
build_kernel "${kernel_path}"
|
build_kernel "${kernel_path}"
|
||||||
|
@ -1 +1 @@
|
|||||||
111
|
112
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
FROM ubuntu:22.04
|
FROM ubuntu:22.04
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
ARG ARCH
|
||||||
|
|
||||||
# kernel deps
|
# kernel deps
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
@ -23,4 +25,5 @@ RUN apt-get update && \
|
|||||||
rsync \
|
rsync \
|
||||||
cpio \
|
cpio \
|
||||||
patch && \
|
patch && \
|
||||||
apt-get clean && apt-get autoclean
|
if [ "${ARCH}" != "$(uname -m)" ]; then apt-get install --no-install-recommends -y gcc-"${ARCH}"-linux-gnu binutils-"${ARCH}"-linux-gnu; fi && \
|
||||||
|
apt-get clean && apt-get autoclean && rm -rf /var/lib/apt/lists/*
|
||||||
|
@ -14,12 +14,26 @@ source "${script_dir}/../../scripts/lib.sh"
|
|||||||
|
|
||||||
readonly kernel_builder="${repo_root_dir}/tools/packaging/kernel/build-kernel.sh"
|
readonly kernel_builder="${repo_root_dir}/tools/packaging/kernel/build-kernel.sh"
|
||||||
|
|
||||||
|
BUILDX=
|
||||||
|
PLATFORM=
|
||||||
|
|
||||||
DESTDIR=${DESTDIR:-${PWD}}
|
DESTDIR=${DESTDIR:-${PWD}}
|
||||||
PREFIX=${PREFIX:-/opt/kata}
|
PREFIX=${PREFIX:-/opt/kata}
|
||||||
container_image="${KERNEL_CONTAINER_BUILDER:-$(get_kernel_image_name)}"
|
container_image="${KERNEL_CONTAINER_BUILDER:-$(get_kernel_image_name)}"
|
||||||
|
|
||||||
|
if [ "${CROSS_BUILD}" == "true" ]; then
|
||||||
|
container_image="${container_image}-${ARCH}-cross-build"
|
||||||
|
# Need to build a s390x image due to an issue at
|
||||||
|
# https://github.com/kata-containers/kata-containers/pull/6586#issuecomment-1603189242
|
||||||
|
if [ ${ARCH} == "s390x" ]; then
|
||||||
|
BUILDX="buildx"
|
||||||
|
PLATFORM="--platform=linux/s390x"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
sudo docker pull ${container_image} || \
|
sudo docker pull ${container_image} || \
|
||||||
(sudo docker build -t "${container_image}" "${script_dir}" && \
|
(sudo docker ${BUILDX} build ${PLATFORM} \
|
||||||
|
--build-arg ARCH=${ARCH} -t "${container_image}" "${script_dir}" && \
|
||||||
# No-op unless PUSH_TO_REGISTRY is exported as "yes"
|
# No-op unless PUSH_TO_REGISTRY is exported as "yes"
|
||||||
push_to_registry "${container_image}")
|
push_to_registry "${container_image}")
|
||||||
|
|
||||||
@ -27,21 +41,21 @@ sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
|||||||
-w "${PWD}" \
|
-w "${PWD}" \
|
||||||
--env MEASURED_ROOTFS="${MEASURED_ROOTFS:-}" \
|
--env MEASURED_ROOTFS="${MEASURED_ROOTFS:-}" \
|
||||||
"${container_image}" \
|
"${container_image}" \
|
||||||
bash -c "${kernel_builder} $* setup"
|
bash -c "${kernel_builder} -a ${ARCH} $* setup"
|
||||||
|
|
||||||
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||||
-w "${PWD}" \
|
-w "${PWD}" \
|
||||||
"${container_image}" \
|
"${container_image}" \
|
||||||
bash -c "${kernel_builder} $* build"
|
bash -c "${kernel_builder} -a ${ARCH} $* build"
|
||||||
|
|
||||||
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||||
-w "${PWD}" \
|
-w "${PWD}" \
|
||||||
--env DESTDIR="${DESTDIR}" --env PREFIX="${PREFIX}" \
|
--env DESTDIR="${DESTDIR}" --env PREFIX="${PREFIX}" \
|
||||||
"${container_image}" \
|
"${container_image}" \
|
||||||
bash -c "${kernel_builder} $* install"
|
bash -c "${kernel_builder} -a ${ARCH} $* install"
|
||||||
|
|
||||||
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
sudo docker run --rm -i -v "${repo_root_dir}:${repo_root_dir}" \
|
||||||
-w "${PWD}" \
|
-w "${PWD}" \
|
||||||
--env DESTDIR="${DESTDIR}" --env PREFIX="${PREFIX}" \
|
--env DESTDIR="${DESTDIR}" --env PREFIX="${PREFIX}" \
|
||||||
"${container_image}" \
|
"${container_image}" \
|
||||||
bash -c "${kernel_builder} $* build-headers"
|
bash -c "${kernel_builder} -a ${ARCH} $* build-headers"
|
||||||
|
Loading…
Reference in New Issue
Block a user