Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Commit

Permalink
kernel: update guest kernel to 4.20-rc3+ on aarch64
Browse files Browse the repository at this point in the history
we should include set-up and install of the dev-kernel, since
some siginificant features haven't be supported on stable kernel
for now, for instance, the crucial nvdimm-support on aarch64 only
works well on the latest 4.20-rc3+ kernel.

Fixes: #268

Signed-off-by: Penny Zheng <[email protected]>
Signed-off-by: Wei Chen <[email protected]>
  • Loading branch information
Pennyzct committed Dec 4, 2018
1 parent 645728d commit 20cb01b
Show file tree
Hide file tree
Showing 4 changed files with 2,559 additions and 10 deletions.
76 changes: 66 additions & 10 deletions kernel/build-kernel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,12 @@ readonly patches_repo="github.com/${project_name}/packaging"
readonly patches_repo_dir="${GOPATH}/src/${patches_repo}"
# Default path to search patches to apply to kernel
readonly default_patches_dir="${patches_repo_dir}/kernel/patches/"
# Default path to search patches to apply to development kernel
readonly default_development_patches_dir="${patches_repo_dir}/kernel/dev/patches/"
# Default path to search config for kata
readonly default_kernel_config_dir="${GOPATH}/src/${kernel_config_repo}/kernel/configs"
# Default path to search config for development kernel
readonly default_development_kernel_config_dir="${GOPATH}/src/${kernel_config_repo}/kernel/dev/configs"
#Path to kernel directory
kernel_path=""
#
Expand All @@ -49,6 +53,8 @@ kernel_config_path=""
DESTDIR="${DESTDIR:-/}"
#PREFIX=
PREFIX="${PREFIX:-/usr}"
#
DEV="false"

source "${script_dir}/../scripts/lib.sh"

Expand Down Expand Up @@ -78,6 +84,7 @@ Options:
-k <path>: Path to kernel to build
-p <path>: Path to a directory with patches to apply to kernel.
-v : Kernel version to use if kernel path not provided.
-d : Build development kernel
EOT
}

Expand Down Expand Up @@ -128,6 +135,30 @@ get_kernel() {
mv "linux-${version}" "${kernel_path}"
}

get_development_kernel() {
local version="${1:-}"
#Remove extra 'v'
version=${version#v}

local kernel_path=${2:-}
[ -n "${kernel_path}" ] || die "kernel_path not provided"
[ ! -d "${kernel_path}" ] || die "kernel_path already exist"

kernel_tarball="linux-${version}.tar.gz"

if [ ! -f "${kernel_tarball}" ]; then
info "Download development kernel version ${version}"
info "Download development kernel"
curl --fail -OL "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/snapshot/${kernel_tarball}"
else
info "kernel tarball already downloaded"
fi

tar xf ${kernel_tarball}

mv "linux-${version}" "${kernel_path}"
}

get_default_kernel_config() {
local version="${1}"

Expand All @@ -138,9 +169,17 @@ get_default_kernel_config() {
[ -n "${hypervisor}" ] || die "hypervisor not provided"
[ -n "${kernel_arch}" ] || die "kernel arch not provided"

major_version=$(echo "${version}" | cut -d. -f1)
minor_version=$(echo "${version}" | cut -d. -f2)
config="${default_kernel_config_dir}/${kernel_arch}_kata_${hypervisor}_${major_version}.${minor_version}.x"
if [[ $DEV == "false" ]]; then
major_version=$(echo "${version}" | cut -d. -f1)
minor_version=$(echo "${version}" | cut -d. -f2)
config="${default_kernel_config_dir}/${kernel_arch}_kata_${hypervisor}_${major_version}.${minor_version}.x"
else
major_version=$(echo "${version}" | cut -d. -f1)
minor_version=$(echo "${version}" | cut -d. -f2 | cut -d- -f1)
tag_version=$(echo "${version}" | cut -d. -f2 | cut -d- -f2)
config="${default_development_kernel_config_dir}/${kernel_arch}_kata_${hypervisor}_${major_version}.${minor_version}.${tag_version}"
fi

[ -f "${config}" ] || die "failed to find default config ${config}"
echo "${config}"
}
Expand All @@ -166,14 +205,22 @@ setup_kernel() {
download_kernel="true"
[ -n "$kernel_version" ] || die "failed to get kernel version: Kernel version is emtpy"

if [[ ${download_kernel} == "true" ]]; then
get_kernel "${kernel_version}" "${kernel_path}"
if [[ ${download_kernel} == "true" ]] ; then
if [[ $DEV == "false" ]]; then
get_kernel "${kernel_version}" "${kernel_path}"
else
get_development_kernel "${kernel_version}" "${kernel_path}"
fi
fi

[ -n "$kernel_path" ] || die "failed to find kernel source path"

if [ -z "${patches_path}" ]; then
patches_path="${default_patches_dir}"
if [ "$DEV" == "false" ]; then
patches_path="${default_patches_dir}"
else
patches_path="${default_development_patches_dir}"
fi
[ -d "${patches_path}" ] || git clone "https://${patches_repo}.git" "${patches_repo_dir}"
fi

Expand Down Expand Up @@ -244,7 +291,7 @@ install_kata() {
}

main() {
while getopts "a:c:hk:p:t:v:" opt; do
while getopts "a:c:hk:p:t:v:d" opt; do
case "$opt" in
a)
arch_target="${OPTARG}"
Expand All @@ -271,6 +318,10 @@ main() {
v)
kernel_version="${OPTARG}"
;;

d) DEV="true"
;;

esac
done

Expand All @@ -282,9 +333,14 @@ main() {

# If not kernel version take it from versions.yaml
if [ -z "$kernel_version" ]; then
kernel_version=$(get_from_kata_deps "assets.kernel.version")
#Remove extra 'v'
kernel_version="${kernel_version#v}"
if [ "$DEV" == "false" ]; then
kernel_version=$(get_from_kata_deps "assets.kernel.version")
else
kernel_version=$(get_from_kata_deps "assets.kernel.dev.version")
echo "$kernel_version"
fi
#Remove extra 'v'
kernel_version="${kernel_version#v}"
fi

if [ -z "${kernel_path}" ]; then
Expand Down
Loading

0 comments on commit 20cb01b

Please sign in to comment.