mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-06-29 08:47:56 +00:00
Merge pull request #2519 from jcvenegas/kernel-experimental-5.13.10
kernel: Enable SGX in experimental kernel.
This commit is contained in:
commit
20f4c252b8
1
.github/workflows/kata-deploy-push.yaml
vendored
1
.github/workflows/kata-deploy-push.yaml
vendored
@ -9,6 +9,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
asset:
|
asset:
|
||||||
- kernel
|
- kernel
|
||||||
|
- kernel-experimental
|
||||||
- shim-v2
|
- shim-v2
|
||||||
- qemu
|
- qemu
|
||||||
- cloud-hypervisor
|
- cloud-hypervisor
|
||||||
|
@ -38,6 +38,10 @@ firecracker-tarball:
|
|||||||
kernel-tarball:
|
kernel-tarball:
|
||||||
${MAKE} $@-build
|
${MAKE} $@-build
|
||||||
|
|
||||||
|
kernel-experimental-tarball:
|
||||||
|
${MAKE} $@-build
|
||||||
|
|
||||||
|
|
||||||
qemu-tarball:
|
qemu-tarball:
|
||||||
${MAKE} $@-build
|
${MAKE} $@-build
|
||||||
|
|
||||||
|
@ -67,6 +67,7 @@ options:
|
|||||||
cloud-hypervisor
|
cloud-hypervisor
|
||||||
firecracker
|
firecracker
|
||||||
kernel
|
kernel
|
||||||
|
kernel-experimental
|
||||||
qemu
|
qemu
|
||||||
rootfs-image
|
rootfs-image
|
||||||
rootfs-initrd
|
rootfs-initrd
|
||||||
@ -91,17 +92,16 @@ install_initrd() {
|
|||||||
#Install kernel asset
|
#Install kernel asset
|
||||||
install_kernel() {
|
install_kernel() {
|
||||||
export kernel_version="$(yq r $versions_yaml assets.kernel.version)"
|
export kernel_version="$(yq r $versions_yaml assets.kernel.version)"
|
||||||
DESTDIR="${destdir}" PREFIX="${prefix}" "${kernel_builder}" "${kernel_version}"
|
DESTDIR="${destdir}" PREFIX="${prefix}" "${kernel_builder}" -f -v "${kernel_version}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#Install experimental kernel asset
|
#Install experimental kernel asset
|
||||||
install_experimental_kernel() {
|
install_experimental_kernel() {
|
||||||
info "build experimental kernel"
|
info "build experimental kernel"
|
||||||
export kernel_version="$(yq r $versions_yaml assets.kernel-experimental.version)"
|
export kernel_version="$(yq r $versions_yaml assets.kernel-experimental.tag)"
|
||||||
"${kernel_builder}" -e setup
|
info "Kernel version ${kernel_version}"
|
||||||
"${kernel_builder}" -e build
|
DESTDIR="${destdir}" PREFIX="${prefix}" "${kernel_builder}" -f -b experimental -v ${kernel_version}
|
||||||
info "install experimental kernel"
|
|
||||||
DESTDIR="${destdir}" PREFIX="${prefix}" "${kernel_builder}" -e install
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Install static qemu asset
|
# Install static qemu asset
|
||||||
@ -158,7 +158,6 @@ handle_build() {
|
|||||||
case "${build_target}" in
|
case "${build_target}" in
|
||||||
all)
|
all)
|
||||||
install_clh
|
install_clh
|
||||||
install_experimental_kernel
|
|
||||||
install_firecracker
|
install_firecracker
|
||||||
install_image
|
install_image
|
||||||
install_initrd
|
install_initrd
|
||||||
@ -173,6 +172,8 @@ handle_build() {
|
|||||||
|
|
||||||
kernel) install_kernel ;;
|
kernel) install_kernel ;;
|
||||||
|
|
||||||
|
kernel-experimental) install_experimental_kernel;;
|
||||||
|
|
||||||
qemu) install_qemu ;;
|
qemu) install_qemu ;;
|
||||||
|
|
||||||
rootfs-image) install_image ;;
|
rootfs-image) install_image ;;
|
||||||
@ -201,6 +202,7 @@ main() {
|
|||||||
cloud-hypervisor
|
cloud-hypervisor
|
||||||
firecracker
|
firecracker
|
||||||
kernel
|
kernel
|
||||||
|
kernel-experimental
|
||||||
qemu
|
qemu
|
||||||
rootfs-image
|
rootfs-image
|
||||||
rootfs-initrd
|
rootfs-initrd
|
||||||
|
@ -38,7 +38,7 @@ readonly GV_NVIDIA="nvidia"
|
|||||||
#Path to kernel directory
|
#Path to kernel directory
|
||||||
kernel_path=""
|
kernel_path=""
|
||||||
#Experimental kernel support. Pull from virtio-fs GitLab instead of kernel.org
|
#Experimental kernel support. Pull from virtio-fs GitLab instead of kernel.org
|
||||||
experimental_kernel="false"
|
build_type=""
|
||||||
#Force generate config when setup
|
#Force generate config when setup
|
||||||
force_setup_generate_config="false"
|
force_setup_generate_config="false"
|
||||||
#GPU kernel support
|
#GPU kernel support
|
||||||
@ -83,6 +83,7 @@ Commands:
|
|||||||
Options:
|
Options:
|
||||||
|
|
||||||
-a <arch> : Arch target to build the kernel, such as aarch64/ppc64le/s390x/x86_64.
|
-a <arch> : Arch target to build the kernel, such as aarch64/ppc64le/s390x/x86_64.
|
||||||
|
-b <type> : Enable optional config type.
|
||||||
-c <path> : Path to config file to build the kernel.
|
-c <path> : Path to config file to build the kernel.
|
||||||
-d : Enable bash debug.
|
-d : Enable bash debug.
|
||||||
-e : Enable experimental kernel.
|
-e : Enable experimental kernel.
|
||||||
@ -127,8 +128,9 @@ get_kernel() {
|
|||||||
kernel_tarball="linux-${version}.tar.xz"
|
kernel_tarball="linux-${version}.tar.xz"
|
||||||
|
|
||||||
if [ ! -f sha256sums.asc ] || ! grep -q "${kernel_tarball}" sha256sums.asc; then
|
if [ ! -f sha256sums.asc ] || ! grep -q "${kernel_tarball}" sha256sums.asc; then
|
||||||
info "Download kernel checksum file: sha256sums.asc"
|
shasum_url="https://cdn.kernel.org/pub/linux/kernel/v${major_version}.x/sha256sums.asc"
|
||||||
curl --fail -OL "https://cdn.kernel.org/pub/linux/kernel/v${major_version}.x/sha256sums.asc"
|
info "Download kernel checksum file: sha256sums.asc from ${shasum_url}"
|
||||||
|
curl --fail -OL "${shasum_url}"
|
||||||
fi
|
fi
|
||||||
grep "${kernel_tarball}" sha256sums.asc >"${kernel_tarball}.sha256"
|
grep "${kernel_tarball}" sha256sums.asc >"${kernel_tarball}.sha256"
|
||||||
|
|
||||||
@ -178,10 +180,16 @@ get_kernel_frag_path() {
|
|||||||
# Exclude configs if they have !$arch tag in the header
|
# Exclude configs if they have !$arch tag in the header
|
||||||
local common_configs="$(grep "\!${arch}" ${common_path}/*.conf -L)"
|
local common_configs="$(grep "\!${arch}" ${common_path}/*.conf -L)"
|
||||||
|
|
||||||
local experimental_configs=""
|
local extra_configs=""
|
||||||
local experimental_dir="${common_path}/experimental"
|
if [ "${build_type}" != "" ];then
|
||||||
if [ -d "$experimental_dir" ]; then
|
local build_type_dir=$(readlink -m "${arch_path}/../build-type/${build_type}")
|
||||||
experimental_configs=$(find "$experimental_dir" -name '*.conf')
|
if [ ! -d "$build_type_dir" ]; then
|
||||||
|
die "No config fragments dir for ${build_type}: ${build_type_dir}"
|
||||||
|
fi
|
||||||
|
extra_configs=$(find "$build_type_dir" -name '*.conf')
|
||||||
|
if [ "${extra_configs}" == "" ];then
|
||||||
|
die "No extra configs found in ${build_type_dir}"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# These are the strings that the kernel merge_config.sh script kicks out
|
# These are the strings that the kernel merge_config.sh script kicks out
|
||||||
@ -195,8 +203,8 @@ get_kernel_frag_path() {
|
|||||||
# handle specific cases, then add the path definition and search/list/cat
|
# handle specific cases, then add the path definition and search/list/cat
|
||||||
# here.
|
# here.
|
||||||
local all_configs="${common_configs} ${arch_configs}"
|
local all_configs="${common_configs} ${arch_configs}"
|
||||||
if [[ ${experimental_kernel} == "true" ]]; then
|
if [[ ${build_type} != "" ]]; then
|
||||||
all_configs="${all_configs} ${experimental_configs}"
|
all_configs="${all_configs} ${extra_configs}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${gpu_vendor}" != "" ]];then
|
if [[ "${gpu_vendor}" != "" ]];then
|
||||||
@ -333,7 +341,7 @@ setup_kernel() {
|
|||||||
local major_kernel
|
local major_kernel
|
||||||
major_kernel=$(get_major_kernel_version "${kernel_version}")
|
major_kernel=$(get_major_kernel_version "${kernel_version}")
|
||||||
local patches_dir_for_version="${patches_path}/${major_kernel}.x"
|
local patches_dir_for_version="${patches_path}/${major_kernel}.x"
|
||||||
local experimental_patches_dir="${patches_path}/${major_kernel}.x/experimental"
|
local build_type_patches_dir="${patches_path}/${major_kernel}.x/${build_type}"
|
||||||
|
|
||||||
[ -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}")
|
||||||
@ -343,10 +351,10 @@ setup_kernel() {
|
|||||||
# Apply version specific patches
|
# Apply version specific patches
|
||||||
${packaging_scripts_dir}/apply_patches.sh "${patches_dir_for_version}"
|
${packaging_scripts_dir}/apply_patches.sh "${patches_dir_for_version}"
|
||||||
|
|
||||||
# Apply version specific patches for experimental build
|
# Apply version specific patches for build_type build
|
||||||
if [ "${experimental_kernel}" == "true" ] ;then
|
if [ "${build_type}" == "true" ] ;then
|
||||||
info "Apply experimental patches"
|
info "Apply build_type patches from ${build_type_patches_dir}"
|
||||||
${packaging_scripts_dir}/apply_patches.sh "${experimental_patches_dir}"
|
${packaging_scripts_dir}/apply_patches.sh "${build_type_patches_dir}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "${hypervisor_target}" ] || hypervisor_target="kvm"
|
[ -n "${hypervisor_target}" ] || hypervisor_target="kvm"
|
||||||
@ -382,8 +390,8 @@ install_kata() {
|
|||||||
install_path=$(readlink -m "${DESTDIR}/${PREFIX}/share/${project_name}")
|
install_path=$(readlink -m "${DESTDIR}/${PREFIX}/share/${project_name}")
|
||||||
|
|
||||||
suffix=""
|
suffix=""
|
||||||
if [[ ${experimental_kernel} == "true" ]]; then
|
if [[ ${build_type} != "" ]]; then
|
||||||
suffix="-experimental"
|
suffix="-${build_type}"
|
||||||
fi
|
fi
|
||||||
if [[ ${gpu_vendor} != "" ]];then
|
if [[ ${gpu_vendor} != "" ]];then
|
||||||
suffix="-${gpu_vendor}-gpu${suffix}"
|
suffix="-${gpu_vendor}-gpu${suffix}"
|
||||||
@ -430,11 +438,14 @@ install_kata() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
while getopts "a:c:defg:hk:p:t:v:x:" opt; do
|
while getopts "a:b:c:defg:hk:p:t:v:x:" opt; do
|
||||||
case "$opt" in
|
case "$opt" in
|
||||||
a)
|
a)
|
||||||
arch_target="${OPTARG}"
|
arch_target="${OPTARG}"
|
||||||
;;
|
;;
|
||||||
|
b)
|
||||||
|
build_type="${OPTARG}"
|
||||||
|
;;
|
||||||
c)
|
c)
|
||||||
kernel_config_path="${OPTARG}"
|
kernel_config_path="${OPTARG}"
|
||||||
;;
|
;;
|
||||||
@ -443,7 +454,7 @@ main() {
|
|||||||
set -x
|
set -x
|
||||||
;;
|
;;
|
||||||
e)
|
e)
|
||||||
experimental_kernel="true"
|
build_type="experimental"
|
||||||
;;
|
;;
|
||||||
f)
|
f)
|
||||||
force_setup_generate_config="true"
|
force_setup_generate_config="true"
|
||||||
@ -485,7 +496,7 @@ main() {
|
|||||||
|
|
||||||
# If not kernel version take it from versions.yaml
|
# If not kernel version take it from versions.yaml
|
||||||
if [ -z "$kernel_version" ]; then
|
if [ -z "$kernel_version" ]; then
|
||||||
if [[ ${experimental_kernel} == "true" ]]; then
|
if [[ ${build_type} == "experimental" ]]; then
|
||||||
kernel_version=$(get_from_kata_deps "assets.kernel-experimental.tag")
|
kernel_version=$(get_from_kata_deps "assets.kernel-experimental.tag")
|
||||||
else
|
else
|
||||||
kernel_version=$(get_from_kata_deps "assets.kernel.version")
|
kernel_version=$(get_from_kata_deps "assets.kernel.version")
|
||||||
@ -496,8 +507,8 @@ main() {
|
|||||||
|
|
||||||
if [ -z "${kernel_path}" ]; then
|
if [ -z "${kernel_path}" ]; then
|
||||||
config_version=$(get_config_version)
|
config_version=$(get_config_version)
|
||||||
if [[ ${experimental_kernel} == "true" ]]; then
|
if [[ ${build_type} != "" ]]; then
|
||||||
kernel_path="${PWD}/kata-linux-experimental-${kernel_version}-${config_version}"
|
kernel_path="${PWD}/kata-linux-${build_type}-${kernel_version}-${config_version}"
|
||||||
else
|
else
|
||||||
kernel_path="${PWD}/kata-linux-${kernel_version}-${config_version}"
|
kernel_path="${PWD}/kata-linux-${kernel_version}-${config_version}"
|
||||||
fi
|
fi
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
CONFIG_X86_SGX=y
|
@ -10,3 +10,5 @@ CONFIG_REFCOUNT_FULL
|
|||||||
CONFIG_MEMCG_SWAP_ENABLED
|
CONFIG_MEMCG_SWAP_ENABLED
|
||||||
CONFIG_CRYPTO_DEV_SP_PSP
|
CONFIG_CRYPTO_DEV_SP_PSP
|
||||||
CONFIG_CRYPTO_DEV_CCP
|
CONFIG_CRYPTO_DEV_CCP
|
||||||
|
CONFIG_HAVE_NET_DSA
|
||||||
|
CONFIG_NF_LOG_COMMON
|
||||||
|
@ -13,26 +13,24 @@ readonly repo_root_dir="$(cd "${script_dir}/../../../.." && pwd)"
|
|||||||
readonly kernel_builder="${repo_root_dir}/tools/packaging/kernel/build-kernel.sh"
|
readonly kernel_builder="${repo_root_dir}/tools/packaging/kernel/build-kernel.sh"
|
||||||
|
|
||||||
|
|
||||||
kernel_version=${1}
|
|
||||||
DESTDIR=${DESTDIR:-${PWD}}
|
DESTDIR=${DESTDIR:-${PWD}}
|
||||||
PREFIX=${PREFIX:-/opt/kata}
|
PREFIX=${PREFIX:-/opt/kata}
|
||||||
container_image="kata-kernel-builder"
|
container_image="kata-kernel-builder"
|
||||||
|
|
||||||
sudo docker build -t "${container_image}" "${script_dir}"
|
sudo docker build -t "${container_image}" "${script_dir}"
|
||||||
|
|
||||||
echo "build ${kernel_version}"
|
|
||||||
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} -v ${kernel_version} setup"
|
bash -c "${kernel_builder} $* 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} -v ${kernel_version} build"
|
bash -c "${kernel_builder} $* 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} -v ${kernel_version} install"
|
bash -c "${kernel_builder} $* install"
|
||||||
|
@ -153,14 +153,12 @@ assets:
|
|||||||
kernel:
|
kernel:
|
||||||
description: "Linux kernel optimised for virtual machines"
|
description: "Linux kernel optimised for virtual machines"
|
||||||
url: "https://cdn.kernel.org/pub/linux/kernel/v5.x/"
|
url: "https://cdn.kernel.org/pub/linux/kernel/v5.x/"
|
||||||
uscan-url: >-
|
|
||||||
https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-(5\.4\..+)\.tar\.gz
|
|
||||||
version: "v5.10.25"
|
version: "v5.10.25"
|
||||||
|
|
||||||
kernel-experimental:
|
kernel-experimental:
|
||||||
description: "Linux kernel with virtio-fs support"
|
description: "Linux kernel with virtio-fs support"
|
||||||
url: "https://cdn.kernel.org/pub/linux/kernel/v5.x/"
|
url: "https://cdn.kernel.org/pub/linux/kernel/v5.x/"
|
||||||
tag: "v5.10.25"
|
tag: "v5.13.10"
|
||||||
|
|
||||||
externals:
|
externals:
|
||||||
description: "Third-party projects used by the system"
|
description: "Third-party projects used by the system"
|
||||||
|
Loading…
Reference in New Issue
Block a user