diff options
Diffstat (limited to 'mkinitfs/mkinitfs.trigger')
| -rw-r--r-- | mkinitfs/mkinitfs.trigger | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/mkinitfs/mkinitfs.trigger b/mkinitfs/mkinitfs.trigger new file mode 100644 index 0000000..35b13c0 --- /dev/null +++ b/mkinitfs/mkinitfs.trigger @@ -0,0 +1,37 @@ +#!/bin/sh + +CONFIG='/etc/mkinitfs/mkinitfs.conf' +if [ -f "$CONFIG" ]; then + case "$(. "$CONFIG" >/dev/null; printf %s "$disable_trigger")" in + yes | YES | true | TRUE | 1) exit 0;; + esac +fi + +for i in "$@"; do + # get last element in path + flavor=${i##*/} + if ! [ -f "$i"/kernel.release ]; then + # kernel was uninstalled + rm -f $( readlink -f /boot/initramfs-$flavor ) \ + /boot/initramfs-$flavor /boot/vmlinuz-$flavor \ + /boot/$flavor /boot/$flavor.gz /$flavor /$flavor.gz + continue + fi + abi_release=$(cat "$i"/kernel.release) + initfs=initramfs-$flavor + mkinitfs -o /boot/$initfs $abi_release || { + echo " mkinitfs failed!" >2 + echo " your system may not be bootable" >2 + exit 1 + } +done + +# extlinux will use path relative partition, so if /boot is on a +# separate partition we want /boot/<kernel> resolve to /<kernel> +if ! [ -e /boot/boot ]; then + ln -sf . /boot/boot 2>/dev/null # silence error in case of FAT +fi + +# sync only the filesystem on /boot as that is where we are writing the initfs. +sync -f /boot +exit 0 |
