build/debian: Disable ballooning on images with a generic kernel
As described in the linked bug report, enabling memory ballooning
on a generic kernel (without our patches) results in strange
corruption issues on Arm64.
In this CL, we update our build script to:
1. make building with our custom kernel the default build option,
2. disable ballooning on Arm64 images with unpatched generic kernel.
Bug: 396233393
Test: Deployed and tested on Komodo:
Test: - ./build_in_container.sh -a aarch64
Test: - ./build_in_container.sh -g -a aarch64
Change-Id: I4441dbf5886675251836ed772eaa804d0520bea9
diff --git a/build/debian/build.sh b/build/debian/build.sh
index 616dd00..63035ae 100755
--- a/build/debian/build.sh
+++ b/build/debian/build.sh
@@ -13,7 +13,7 @@
echo "Options:"
echo "-h Print usage and this help message and exit."
echo "-a ARCH Architecture of the image [default is host arch: $(uname -m)]"
- echo "-k Build and use our custom kernel [default is cloud kernel]"
+ echo "-g Use Debian generic kernel [default is our custom kernel]"
echo "-r Release mode build"
echo "-w Save temp work directory [for debugging]"
}
@@ -25,7 +25,7 @@
}
parse_options() {
- while getopts "a:hkrw" option; do
+ while getopts "a:ghrw" option; do
case ${option} in
h)
show_help ; exit
@@ -33,8 +33,8 @@
a)
arch="$OPTARG"
;;
- k)
- use_custom_kernel=1
+ g)
+ use_generic_kernel=1
;;
r)
mode=release
@@ -122,7 +122,7 @@
)
fi
- if [[ "$use_custom_kernel" -eq 1 ]]; then
+ if [[ "$use_generic_kernel" != 1 ]]; then
packages+=(
bc
bison
@@ -215,20 +215,20 @@
}
package_custom_kernel() {
- if [[ "$use_custom_kernel" != 1 ]]; then
- # NOTE: Install generic headers for the default Debian kernel.
+ if [[ "$use_generic_kernel" == 1 ]]; then
+ # NOTE: For bpfcc-tools, install generic headers for the generic kernel.
cat > "${config_space}/package_config/LAST" <<EOF
PACKAGES install
linux-headers-generic
EOF
return
- else
- # NOTE: Prevent FAI from installing a default Debian kernel, by removing
- # linux-image meta package names from arch-specific class files.
- sed -i "/linux-image.*-${debian_arch}/d" \
- "${config_space}/package_config/${debian_arch^^}"
fi
+ # NOTE: Prevent FAI from installing a default Debian kernel, by removing
+ # linux-image meta package names from arch-specific class files.
+ sed -i "/linux-image.*-${debian_arch}/d" \
+ "${config_space}/package_config/${debian_arch^^}"
+
local deb_base_url="https://deb.debian.org/debian"
local deb_security_base_url="https://security.debian.org/debian-security"
@@ -344,6 +344,11 @@
losetup -d "${loop}"
cp ${vm_config} vm_config.json
+ # TODO(b/363985291): remove this when ballooning is supported on generic kernel
+ if [[ "$use_generic_kernel" == 1 ]] && [[ "$arch" == "aarch64" ]]; then
+ sed -i 's/"auto_memory_balloon": true/"auto_memory_balloon": false/g' vm_config.json
+ fi
+
sed -i "s/{root_part_guid}/$(sfdisk --part-uuid $raw_disk_image $root_partition_num)/g" vm_config.json
if [[ "$arch" == "x86_64" ]]; then
sed -i "s/{bios_part_guid}/$(sfdisk --part-uuid $raw_disk_image $bios_partition_num)/g" vm_config.json
@@ -395,7 +400,7 @@
arch="$(uname -m)"
mode=debug
save_workdir=0
-use_custom_kernel=0
+use_generic_kernel=0
parse_options "$@"
check_sudo