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