build.sh: update initramfs generation to re-run depmod

Since external modules are compiled outside of the kernel, we need to
re-run depmod to detect any dependencies betwen the external modules and
the modules compiled in the kernel. We also need to re-generate
modules.load to include the external modules.

Signed-off-by: Will McVicker <willmcvicker@google.com>
Test: build, verify modules.load file manually, boot device
Bug: 144190478
Change-Id: Ifcb82268412900ebec21c17781e2d248149df4cf
diff --git a/build.sh b/build.sh
index a627514..8848c37 100755
--- a/build.sh
+++ b/build.sh
@@ -366,17 +366,26 @@
     echo " Creating initramfs"
     set -x
     rm -rf ${INITRAMFS_STAGING_DIR}
-    mkdir -p ${INITRAMFS_STAGING_DIR}/lib/modules/kernel/
-    cp -r ${MODULES_STAGING_DIR}/lib/modules/*/kernel/* ${INITRAMFS_STAGING_DIR}/lib/modules/kernel/
-    cp ${MODULES_STAGING_DIR}/lib/modules/*/modules.* ${INITRAMFS_STAGING_DIR}/lib/modules/
-    cp ${MODULES_STAGING_DIR}/lib/modules/*/modules.order ${INITRAMFS_STAGING_DIR}/lib/modules/modules.load
-    echo "${MODULES_OPTIONS}" > ${INITRAMFS_STAGING_DIR}/lib/modules/modules.options
+    # Depmod requires a version number; use 0.0 instead of determining the
+    # actual kernel version since it is not necessary and will be removed for
+    # the final initramfs image.
+    mkdir -p ${INITRAMFS_STAGING_DIR}/lib/modules/0.0/kernel/
+    cp -r ${MODULES_STAGING_DIR}/lib/modules/*/kernel/* ${INITRAMFS_STAGING_DIR}/lib/modules/0.0/kernel/
 
     if [ -n "${EXT_MODULES}" ]; then
-      mkdir -p ${INITRAMFS_STAGING_DIR}/lib/modules/extra/
-      cp -r ${MODULES_STAGING_DIR}/lib/modules/*/extra/* ${INITRAMFS_STAGING_DIR}/lib/modules/extra/
+      mkdir -p ${INITRAMFS_STAGING_DIR}/lib/modules/0.0/extra/
+      cp -r ${MODULES_STAGING_DIR}/lib/modules/*/extra/* ${INITRAMFS_STAGING_DIR}/lib/modules/0.0/extra/
     fi
 
+    # Re-run depmod to detect any dependencies between in-kernel and external
+    # modules. Then, create modules.load based on all the modules compiled.
+    (cd ${INITRAMFS_STAGING_DIR} && depmod -b . 0.0)
+    (cd ${INITRAMFS_STAGING_DIR}/lib/modules/0.0 && \
+        find . -type f -name *.ko | cut -c3- > modules.load)
+    echo "${MODULES_OPTIONS}" > ${INITRAMFS_STAGING_DIR}/lib/modules/0.0/modules.options
+    mv ${INITRAMFS_STAGING_DIR}/lib/modules/0.0/* ${INITRAMFS_STAGING_DIR}/lib/modules/.
+    rmdir ${INITRAMFS_STAGING_DIR}/lib/modules/0.0
+
     (cd ${INITRAMFS_STAGING_DIR} && find . | cpio -H newc -o > ${MODULES_STAGING_DIR}/initramfs.cpio)
     gzip -fc ${MODULES_STAGING_DIR}/initramfs.cpio > ${MODULES_STAGING_DIR}/initramfs.cpio.gz
     mv ${MODULES_STAGING_DIR}/initramfs.cpio.gz ${DIST_DIR}/initramfs.img