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