Remove bulky vmlinu[zx] from rootfs.
vmlinuz is several megabytes and does not need to live in chromeos's
base partition because it's actually booted off of a kernel partition.
This change removes the kernel from the base image to save space.
BUG=chromium:461595
TEST=Built and installed on single chromebook.
CQ-DEPEND=CL:669605
Change-Id: I63375021af329c806b5561be9480bca9c58ce5f7
Reviewed-on: https://chromium-review.googlesource.com/657262
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Craig Bergstrom <craigb@chromium.org>
Reviewed-by: Jason Clinton <jclinton@chromium.org>
Reviewed-by: Craig Bergstrom <craigb@chromium.org>
diff --git a/bin/cros_make_image_bootable b/bin/cros_make_image_bootable
index 2a2213d..f9872ac 100755
--- a/bin/cros_make_image_bootable
+++ b/bin/cros_make_image_bootable
@@ -207,7 +207,7 @@
--board="${FLAGS_board}" \
--arch="${FLAGS_arch}" \
--to="${FLAGS_output_dir}/${image_name}" \
- --vmlinuz="${FLAGS_rootfs_mountpoint}/boot/vmlinuz" \
+ --vmlinuz="${IMAGE_DIR}/boot_images/vmlinuz" \
--working_dir="${FLAGS_output_dir}" \
--boot_args="${FLAGS_boot_args}" \
--keep_work \
@@ -394,7 +394,8 @@
--image_type="${FLAGS_image_type}" \
--to="${bootloader_to}" \
--from="${FLAGS_rootfs_mountpoint}"/boot \
- --vmlinuz="${FLAGS_rootfs_mountpoint}"/boot/vmlinuz \
+ --vmlinuz="${IMAGE_DIR}"/boot_images/vmlinuz \
+ --zimage="${IMAGE_DIR}"/boot_images/zImage \
${bootloader_to_flags} \
${kernel_part}
fi
diff --git a/build_library/base_image_util.sh b/build_library/base_image_util.sh
index 208c4e9..14ee34c 100755
--- a/build_library/base_image_util.sh
+++ b/build_library/base_image_util.sh
@@ -389,6 +389,21 @@
sudo /sbin/setfiles -r "${root_fs_dir}" "${file_contexts}" "${root_fs_dir}"
fi
+ # Move the bootable kernel images out of the /boot directory to save
+ # space. We put them in the $BUILD_DIR so they can be used to write
+ # the bootable partitions later.
+ mkdir "${BUILD_DIR}/boot_images"
+ [ -e "${root_fs_dir}"/boot/Image-* ] && \
+ sudo mv "${root_fs_dir}"/boot/Image-* "${BUILD_DIR}/boot_images"
+ [ -L "${root_fs_dir}"/boot/zImage* ] && \
+ sudo mv "${root_fs_dir}"/boot/zImage* "${BUILD_DIR}/boot_images"
+ [ -e "${root_fs_dir}"/boot/vmlinuz-* ] && \
+ sudo mv "${root_fs_dir}"/boot/vmlinuz-* "${BUILD_DIR}/boot_images"
+ [ -L "${root_fs_dir}"/boot/vmlinuz ] && \
+ sudo mv "${root_fs_dir}"/boot/vmlinuz "${BUILD_DIR}/boot_images"
+ [ -L "${root_fs_dir}"/boot/vmlinux.uimg ] && \
+ sudo mv "${root_fs_dir}"/boot/vmlinux.uimg "${BUILD_DIR}/boot_images"
+
# Zero rootfs free space to make it more compressible so auto-update
# payloads become smaller.
zero_free_space "${root_fs_dir}"
diff --git a/update_bootloaders.sh b/update_bootloaders.sh
index 36891bf..7a6cde4 100755
--- a/update_bootloaders.sh
+++ b/update_bootloaders.sh
@@ -35,6 +35,8 @@
"Size in bytes of 'to' to use if it is a file. -1 is ignored. (Default: -1)"
DEFINE_string vmlinuz "/tmp/vmlinuz" \
"Path to the vmlinuz file to use (Default: /tmp/vmlinuz)"
+DEFINE_string zimage "/tmp/zimage" \
+ "Path to the zimage file to use (Default: /tmp/zimage)"
# The kernel_partition and the kernel_cmdline each are used to supply
# verified boot configuration: dm="".
DEFINE_string kernel_partition "/tmp/vmlinuz.image" \
@@ -107,8 +109,8 @@
# new rootfs will be apparently different.
# Copy the vmlinuz's into place for syslinux
- sudo cp -f "${template_dir}"/vmlinuz "${esp_fs_dir}"/syslinux/vmlinuz.A
- sudo cp -f "${template_dir}"/vmlinuz "${esp_fs_dir}"/syslinux/vmlinuz.B
+ sudo cp -f "${FLAGS_vmlinuz}" "${esp_fs_dir}"/syslinux/vmlinuz.A
+ sudo cp -f "${FLAGS_vmlinuz}" "${esp_fs_dir}"/syslinux/vmlinuz.B
# The only work left for the installer is to pick the correct defaults
# and replace HDROOTA and HDROOTB with the correct /dev/sd%D%P/%U+1
@@ -210,9 +212,9 @@
sudo mkdir -p "${ESP_FS_DIR}/u-boot"
sudo cp "${FLAGS_from}/boot-A.scr.uimg" \
"${ESP_FS_DIR}/u-boot/boot.scr.uimg"
- sudo cp -f "${FLAGS_from}"/vmlinuz "${ESP_FS_DIR}"/vmlinuz.uimg.A
- if [ -r "${FLAGS_from}/zImage" ]; then
- sudo cp -f "${FLAGS_from}"/zImage "${ESP_FS_DIR}"/vmlinuz.A
+ sudo cp -f "${FLAGS_vmlinuz}" "${ESP_FS_DIR}"/vmlinuz.uimg.A
+ if [ -r "${FLAGS_zimage}" ]; then
+ sudo cp -f "${zimage}" "${ESP_FS_DIR}"/vmlinuz.A
fi
fi
fi