backports: add update-initramfs support
authorLuis R. Rodriguez <mcgrof@do-not-panic.com>
Wed, 10 Apr 2013 11:35:28 +0000 (04:35 -0700)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 10 Apr 2013 20:29:23 +0000 (22:29 +0200)
You'll need to update your initramfs for for a few modules.
This is very distribution specific.

Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
[fix script argument]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
backport/Makefile.real
backport/scripts/update-initramfs.sh [new file with mode: 0755]

index e477ad12e6bc3cc3e247dbcbc49845780f62ab2f..0040ec7ccb030ae3bccf72b471ae08b2d423635b 100644 (file)
@@ -92,6 +92,7 @@ install: modules
        @./scripts/check_depmod.sh
        @./scripts/backport_firmware_install.sh
        @/sbin/depmod -a
+       @./scripts/update-initramfs.sh $(KLIB)
        @echo
        @echo Your backported driver modules should be installed now.
        @echo Reboot.
diff --git a/backport/scripts/update-initramfs.sh b/backport/scripts/update-initramfs.sh
new file mode 100755 (executable)
index 0000000..dcc1dc3
--- /dev/null
@@ -0,0 +1,62 @@
+#!/bin/bash
+# Copyright 2009-2013        Luis R. Rodriguez <mcgrof@do-not-panic.com>
+#
+# Since we provide ssb, ethernet modules and most importantly
+# DRM drivers, people may want to update the initramfs image
+# of their distribution. This can also help people who may
+# want to wireless-boot their systems.
+
+KLIB="$1"
+ver=$(echo $KLIB | awk -F "/lib/modules/" '{print $2}' | awk -F"/" '{print $1}')
+dir=/boot/
+
+LSB_RED_ID=$(/usr/bin/lsb_release -i -s &> /dev/null)
+
+if [[ -z $LSB_RED_ID && -f "/etc/os-release" ]]; then
+       # Let's try with os-release. Fedora doesn't have
+       # lsb_release anymore.
+       LSB_RED_ID=$(sed -n '/^NAME/ s/^NAME=\(.*\)$/\1/p' /etc/os-release)
+fi
+
+case $LSB_RED_ID in
+"Ubuntu")
+       echo "Updating ${LSB_RED_ID}'s initramfs for $ver under $dir ..."
+       mkinitramfs -o $dir/initrd.img-$ver $ver
+       echo "Will now run update-grub to ensure grub will find the new initramfs ..."
+       update-grub
+       ;;
+"Debian")
+       echo "Updating ${LSB_RED_ID}'s initramfs for $ver under $dir ..."
+       mkinitramfs -o $dir/initrd.img-$ver $ver
+       echo "Will now run update-grub to ensure grub will find the new initramfs ..."
+       update-grub
+       ;;
+"Fedora")
+       # This adds a -compat-drivers suffixed initramfs with a new grub2
+       # entry to not override distribution's default stuff.
+       INITRAMFS=${dir}initramfs-$ver-compat-drivers.img
+       KERNEL=${dir}vmlinuz-$ver
+       GRUB_TITLE="Fedora ($ver) with compat-drivers"
+
+       echo "Updating ${LSB_RED_ID}'s initramfs for $ver under $dir ..."
+       mkinitrd --force $INITRAMFS $ver
+
+       # If a previous compat-drivers entry for the same kernel exists
+       # do not add it again.
+       grep -q "${GRUB_TITLE}" /etc/grub2.cfg &> /dev/null
+       if [[ "$?" == "1" ]]; then
+               echo "Will now run grubby to add a new kernel entry ..."
+               # Add a new kernel entry
+               grubby --grub2 --copy-default --add-kernel="$KERNEL" --initrd="$INITRAMFS" --title="$GRUB_TITLE"
+       fi
+       ;;
+*)
+       echo "Warning:"
+       echo "You may or may not need to update your initramfs, you should if"
+       echo "any of the modules installed are part of your initramfs. To add"
+       echo "support for your distribution to do this automatically send a"
+       echo "patch against $0. If your distribution does not require this"
+       echo "send a patch against the '/usr/bin/lsb_release -i -s': $LSB_RED_ID"
+       echo "tag for your distribution to avoid this warning."
+        ;;
+esac