Add real runtime materialization pipeline and bundle artifacts
This commit is contained in:
parent
cbf212bb7b
commit
c43c718c83
32 changed files with 1456 additions and 27 deletions
64
runtime_sources/linux-x86_64/scripts/build_microvm_kernel.sh
Executable file
64
runtime_sources/linux-x86_64/scripts/build_microvm_kernel.sh
Executable file
|
|
@ -0,0 +1,64 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
builder_image=""
|
||||
linux_version=""
|
||||
source_url=""
|
||||
config_url=""
|
||||
workdir=""
|
||||
output=""
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--builder-image) builder_image="$2"; shift 2 ;;
|
||||
--linux-version) linux_version="$2"; shift 2 ;;
|
||||
--source-url) source_url="$2"; shift 2 ;;
|
||||
--config-url) config_url="$2"; shift 2 ;;
|
||||
--workdir) workdir="$2"; shift 2 ;;
|
||||
--output) output="$2"; shift 2 ;;
|
||||
*) echo "unknown arg: $1" >&2; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
: "${builder_image:?missing --builder-image}"
|
||||
: "${linux_version:?missing --linux-version}"
|
||||
: "${source_url:?missing --source-url}"
|
||||
: "${config_url:?missing --config-url}"
|
||||
: "${workdir:?missing --workdir}"
|
||||
: "${output:?missing --output}"
|
||||
|
||||
mkdir -p "$workdir" "$(dirname "$output")"
|
||||
workdir="$(cd "$workdir" && pwd)"
|
||||
output_dir="$(cd "$(dirname "$output")" && pwd)"
|
||||
output="$output_dir/$(basename "$output")"
|
||||
container_script="$workdir/build-kernel-container.sh"
|
||||
cat > "$container_script" <<'SCRIPT'
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends \
|
||||
bc bison build-essential ca-certificates curl flex libelf-dev libssl-dev pahole python3 rsync xz-utils
|
||||
cd /work
|
||||
curl -fsSL "$KERNEL_SOURCE_URL" -o linux.tar.xz
|
||||
curl -fsSL "$KERNEL_CONFIG_URL" -o kernel.config
|
||||
rm -rf linux-src out
|
||||
mkdir -p linux-src out
|
||||
tar -xf linux.tar.xz -C linux-src --strip-components=1
|
||||
cd linux-src
|
||||
cp /work/kernel.config .config
|
||||
make olddefconfig
|
||||
make -j"$(nproc)" vmlinux
|
||||
cp vmlinux /work/out/vmlinux
|
||||
SCRIPT
|
||||
chmod +x "$container_script"
|
||||
mkdir -p "$workdir/out"
|
||||
|
||||
docker run --rm \
|
||||
-e KERNEL_SOURCE_URL="$source_url" \
|
||||
-e KERNEL_CONFIG_URL="$config_url" \
|
||||
-v "$workdir:/work" \
|
||||
"$builder_image" \
|
||||
/work/build-kernel-container.sh
|
||||
|
||||
cp "$workdir/out/vmlinux" "$output"
|
||||
Loading…
Add table
Add a link
Reference in a new issue