initramfs-module-check-modules: An initramfs module to check modules consistency.
authorPaul Sokolovsky <pmiscml@gmail.com>
Wed, 6 Feb 2008 13:23:58 +0000 (13:23 +0000)
committerPaul Sokolovsky <pmiscml@gmail.com>
Wed, 6 Feb 2008 13:23:58 +0000 (13:23 +0000)
* Checks that version of the boot kernel matches that of modules installed in
rootfs.
* A step towards providing manageable upgrade path for kernels outside rootfs.

packages/initrdscripts/files/90-check-modules.sh [new file with mode: 0644]
packages/initrdscripts/initramfs-module-check-modules_1.0.bb [new file with mode: 0644]

diff --git a/packages/initrdscripts/files/90-check-modules.sh b/packages/initrdscripts/files/90-check-modules.sh
new file mode 100644 (file)
index 0000000..2423d7f
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+# Check that modules for the current kernel exist, error out otherwise
+
+uname=`cat /proc/version`
+ver=`expr "x$uname" : 'xLinux version \([^ ]\+\) '`
+
+if [ -n "$BOOT_ROOT" -a ! -d "$BOOT_ROOT/lib/modules/$ver" ]; then
+    echo -e "\033[1m===================="
+    echo "ERROR!"
+    echo "There are no modules for this kernel"
+    echo "version ($ver) in the root file "
+    echo "system, which will lead to boot failure or"
+    echo "broken functionally. If you performed"
+    echo "a kernel upgrade, make sure that version"
+    echo "installed in root filesystem matches"
+    echo "version used in bootloader."
+    echo -e "====================\033[0m"
+    echo
+
+    echo "System halted"
+    while true; do
+       sleep 10000
+    done
+fi
diff --git a/packages/initrdscripts/initramfs-module-check-modules_1.0.bb b/packages/initrdscripts/initramfs-module-check-modules_1.0.bb
new file mode 100644 (file)
index 0000000..6986316
--- /dev/null
@@ -0,0 +1,12 @@
+SRC_URI = "file://90-check-modules.sh"
+PR = "r0"
+DESCRIPTION = "An initramfs module for checking that kernel modules exist in rootfs"
+RDEPENDS = "initramfs-uniboot"
+
+do_install() {
+       install -d ${D}/initrd.d
+        install -m 0755 ${WORKDIR}/90-check-modules.sh ${D}/initrd.d/
+}
+
+PACKAGE_ARCH = "all"
+FILES_${PN} += " /initrd.d/* "