diff --git a/tools/packaging/kata-deploy/local-build/Makefile b/tools/packaging/kata-deploy/local-build/Makefile index d54ba7c127..a1c93b6e94 100644 --- a/tools/packaging/kata-deploy/local-build/Makefile +++ b/tools/packaging/kata-deploy/local-build/Makefile @@ -88,6 +88,9 @@ cc-cloud-hypervisor-tarball: cc-kernel-tarball: ${MAKE} $@-build +cc-tdx-kernel-tarball: + ${MAKE} $@-build + cc-qemu-tarball: ${MAKE} $@-build diff --git a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh index 84f90e4093..e7e7dfb4bc 100755 --- a/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh +++ b/tools/packaging/kata-deploy/local-build/kata-deploy-binaries.sh @@ -84,6 +84,7 @@ options: cc cc-cloud-hypervisor cc-kernel + cc-tdx-kernel cc-qemu cc-rootfs-image cc-shimv2 @@ -116,6 +117,22 @@ install_cc_image() { "${rootfs_builder}" --imagetype=image --prefix="${cc_prefix}" --destdir="${destdir}" } +#Install CC kernel assert, with TEE support +install_cc_tee_kernel() { + tee="${1}" + + [ "${tee}" != "tdx" ] && die "Non supported TEE" + + export kernel_version="$(yq r $versions_yaml assets.kernel.${tee}.tag)" + export kernel_url="$(yq r $versions_yaml assets.kernel.${tee}.url)" + DESTDIR="${destdir}" PREFIX="${cc_prefix}" "${kernel_builder}" -x "${tee}" -v "${kernel_version}" -u "${kernel_url}" +} + +#Install CC kernel assert for Intel TDX +install_cc_tdx_kernel() { + install_cc_tee_kernel "tdx" +} + #Install CC kernel asset install_cc_kernel() { export kernel_version="$(yq r $versions_yaml assets.kernel.version)" @@ -258,6 +275,8 @@ handle_build() { cc-kernel) install_cc_kernel ;; + cc-tdx-kernel) install_cc_tdx_kernel ;; + cc-qemu) install_cc_qemu ;; cc-rootfs-image) install_cc_image ;; diff --git a/tools/packaging/kernel/build-kernel.sh b/tools/packaging/kernel/build-kernel.sh index 4e58a45ef1..4bec941e09 100755 --- a/tools/packaging/kernel/build-kernel.sh +++ b/tools/packaging/kernel/build-kernel.sh @@ -59,6 +59,8 @@ skip_config_checks="false" DESTDIR="${DESTDIR:-/}" #PREFIX= PREFIX="${PREFIX:-/usr}" +#Kernel URL +kernel_url="" packaging_scripts_dir="${script_dir}/../scripts" source "${packaging_scripts_dir}/lib.sh" @@ -97,6 +99,7 @@ Options: -p : Path to a directory with patches to apply to kernel. -s : Skip .config checks -t : Hypervisor_target. + -u : Kernel URL to be used to download the kernel tarball. -v : Kernel version to use if kernel path not provided. -x : Confidential guest protection type, such as sev and tdx EOF @@ -116,34 +119,19 @@ arch_to_kernel() { esac } -get_tdx_kernel() { +get_tee_kernel() { local version="${1}" - local kernel_path=${2} + local kernel_path="${2}" + local tee="${3}" mkdir -p ${kernel_path} - kernel_url=$(get_from_kata_deps "assets.kernel.tdx.url") + [ -z "${kernel_url}" ] && kernel_url=$(get_from_kata_deps "assets.kernel.${tee}.url") kernel_tarball="${version}.tar.gz" if [ ! -f "${kernel_tarball}" ]; then curl --fail -OL "${kernel_url}/${kernel_tarball}" fi - - tar --strip-components=1 -xf ${kernel_tarball} -C ${kernel_path} -} - -get_sev_kernel() { - local version="${1}" - local kernel_path=${2} - - mkdir -p ${kernel_path} - - kernel_url=$(get_from_kata_deps "assets.kernel.sev.url") - kernel_tarball="${version}.tar.gz" - - if [ ! -f "${kernel_tarball}" ]; then - curl --fail -OL "${kernel_url}${kernel_tarball}" - fi mkdir -p ${kernel_path} tar --strip-components=1 -xf ${kernel_tarball} -C ${kernel_path} @@ -156,11 +144,8 @@ get_kernel() { [ -n "${kernel_path}" ] || die "kernel_path not provided" [ ! -d "${kernel_path}" ] || die "kernel_path already exist" - if [ "${conf_guest}" == "tdx" ]; then - get_tdx_kernel ${version} ${kernel_path} - return - elif [ "${conf_guest}" == "sev" ]; then - get_sev_kernel ${version} ${kernel_path} + if [ "${conf_guest}" != "" ]; then + get_tee_kernel ${version} ${kernel_path} ${conf_guest} return fi @@ -486,7 +471,7 @@ install_kata() { } main() { - while getopts "a:b:c:deEfg:hk:p:t:v:x:" opt; do + while getopts "a:b:c:deEfg:hk:p:t:u:v:x:" opt; do case "$opt" in a) arch_target="${OPTARG}" @@ -529,6 +514,9 @@ main() { t) hypervisor_target="${OPTARG}" ;; + u) + kernel_url="${OPTARG}" + ;; v) kernel_version="${OPTARG}" ;; @@ -563,11 +551,9 @@ main() { kernel_version=$(get_from_kata_deps "assets.kernel-experimental.tag") ;; esac - elif [[ "${conf_guest}" == "tdx" ]]; then - kernel_version=$(get_from_kata_deps "assets.kernel.tdx.tag") - elif [[ "${conf_guest}" == "sev" ]]; then + elif [[ "${conf_guest}" != "" ]]; then #If specifying a tag for kernel_version, must be formatted version-like to avoid unintended parsing issues - kernel_version=$(get_from_kata_deps "assets.kernel.sev.tag") + kernel_version=$(get_from_kata_deps "assets.kernel.${conf_guest}.tag") else kernel_version=$(get_from_kata_deps "assets.kernel.version") fi