summaryrefslogtreecommitdiffstats
path: root/source/a/mkinitrd/setup.01.mkinitrd
diff options
context:
space:
mode:
Diffstat (limited to 'source/a/mkinitrd/setup.01.mkinitrd')
-rw-r--r--source/a/mkinitrd/setup.01.mkinitrd76
1 files changed, 22 insertions, 54 deletions
diff --git a/source/a/mkinitrd/setup.01.mkinitrd b/source/a/mkinitrd/setup.01.mkinitrd
index 8bddb5c55..31e871447 100644
--- a/source/a/mkinitrd/setup.01.mkinitrd
+++ b/source/a/mkinitrd/setup.01.mkinitrd
@@ -1,69 +1,37 @@
#!/bin/sh
#BLURB="Generate /boot/initrd.gz for the generic kernel"
-# First, clear the existing initrd-tree:
-if [ -f $(readlink -f boot/vmlinuz-generic) -o -f $(readlink -f boot/vmlinuz-generic-smp) ]; then
- rm -rf boot/initrd-tree
+# Start with the version for vmlinuz-generic-smp:
+KERNEL_SYMLINK="boot/vmlinuz-generic-smp"
+if [ -L $KERNEL_SYMLINK ]; then
+ KERNEL_VERSION_LIST=$(strings $KERNEL_SYMLINK | grep '([^ ]*@[^ ]*) #' | cut -f1 -d' ')
fi
-# Next, if boot/vmlinuz-generic is a symlink to a kernel, generate a ramdisk
-# using the modules for that kernel:
+# Next add the version for vmlinuz-generic:
KERNEL_SYMLINK="boot/vmlinuz-generic"
if [ -L $KERNEL_SYMLINK ]; then
- KERNEL_VERSION="$(readlink -f $KERNEL_SYMLINK | sed "s/-smp/_smp/g" | rev | cut -f 1 -d - | rev | sed "s/_smp/-smp/g")"
- # Sanity check. Not sure how/why, but there are reports we can arrive here
- # without a $KERNEL_VERSION. The only way I see how is if the symlink were
- # pointing to file with a malformed name
- # (i.e. not ${KERNEL_SYMLINK}-${KERNEL_VERSION}).
- # If ${KERNEL_VERSION} is blank, we'll bail out here.
- # Any information on known cases that might cause this would be appreciated.
- if [ ! "$KERNEL_VERSION" = "" ]; then
- dialog --title "GENERATING INITIAL RAMDISK" --infobox \
- "Generating an initial ramdisk for use with the $KERNEL_VERSION generic \
-kernel. The initial ramdisk contains kernel modules needed to mount the \
-root partition, and must be regenerated whenever the kernel is updated. To \
-regenerate the initrd, select this setup script from within pkgtool, or run \
-'geninitrd' which will produce an initial ramdisk (/boot/initrd.gz) for the \
-kernel pointed to by the /$KERNEL_SYMLINK symlink." 9 68
- chroot . /usr/share/mkinitrd/mkinitrd_command_generator.sh -k $KERNEL_VERSION | sed "s/-c -k/-k/g" | chroot . bash 1> /dev/null 2> /dev/null
+ if [ -z $KERNEL_VERSION_LIST ]; then
+ KERNEL_VERSION_LIST=$(strings $KERNEL_SYMLINK | grep '([^ ]*@[^ ]*) #' | cut -f1 -d' ')
else
- dialog --title "INTERNAL ERROR" --msgbox \
- "An internal error was detected. Please report the following information: \n\
-KERNEL_SYMLINK = $KERNEL_SYMLINK \n\
-KERNEL_SYMLINK (points to) = $(readlink -f $KERNEL_SYMLINK) \n\
-KERNEL_VERSION (is blank) \n\
-ls -l \$KERNEL_SYMLINK: \n\
-$(ls -l $KERNEL_SYMLINK)" 0 0
+ KERNEL_VERSION_LIST="$KERNEL_VERSION_LIST:$(strings $KERNEL_SYMLINK | grep '([^ ]*@[^ ]*) #' | cut -f1 -d' ')"
fi
fi
-# If boot/vmlinuz-generic-smp is a symlink to a kernel, also include the
-# modules for that kernel:
-KERNEL_SYMLINK="boot/vmlinuz-generic-smp"
-if [ -L $KERNEL_SYMLINK ]; then
- KERNEL_VERSION="$(readlink -f $KERNEL_SYMLINK | sed "s/-smp/_smp/g" | rev | cut -f 1 -d - | rev | sed "s/_smp/-smp/g")"
- # Sanity check. Not sure how/why, but there are reports we can arrive here
- # without a $KERNEL_VERSION. The only way I see how is if the symlink were
- # pointing to file with a malformed name
- # (i.e. not ${KERNEL_SYMLINK}-${KERNEL_VERSION}).
- # If ${KERNEL_VERSION} is blank, we'll bail out here.
- # Any information on known cases that might cause this would be appreciated.
- if [ ! "$KERNEL_VERSION" = "" ]; then
- dialog --title "GENERATING INITIAL RAMDISK" --infobox \
- "Generating an initial ramdisk for use with the $KERNEL_VERSION generic \
-kernel. The initial ramdisk contains kernel modules needed to mount the \
+# Proper plural(s):
+if echo $KERNEL_VERSION_LIST | grep -q : ; then
+ KERNEL=kernels
+else
+ KERNEL=kernel
+fi
+
+# Generate the initrd:
+if [ ! -z $KERNEL_VERSION_LIST ]; then
+ dialog --title "GENERATING INITIAL RAMDISK" --infobox \
+ "Generating an initial ramdisk for use with the $KERNEL_VERSION_LIST generic \
+${KERNEL}. The initial ramdisk contains kernel modules needed to mount the \
root partition, and must be regenerated whenever the kernel is updated. To \
regenerate the initrd, select this setup script from within pkgtool, or run \
'geninitrd' which will produce an initial ramdisk (/boot/initrd.gz) for the \
-kernel pointed to by the /$KERNEL_SYMLINK symlink." 9 68
- chroot . /usr/share/mkinitrd/mkinitrd_command_generator.sh -k $KERNEL_VERSION | sed "s/-c -k/-k/g" | chroot . bash 1> /dev/null 2> /dev/null
- else
- dialog --title "INTERNAL ERROR" --msgbox \
- "An internal error was detected. Please report the following information: \n\
-KERNEL_SYMLINK = $KERNEL_SYMLINK \n\
-KERNEL_SYMLINK (points to) = $(readlink -f $KERNEL_SYMLINK) \n\
-KERNEL_VERSION (is blank) \n\
-ls -l \$KERNEL_SYMLINK: \n\
-$(ls -l $KERNEL_SYMLINK)" 0 0
- fi
+installed generic ${KERNEL}." 9 68
+ chroot . /usr/share/mkinitrd/mkinitrd_command_generator.sh -k $KERNEL_VERSION_LIST | chroot . bash 1> /dev/null 2> /dev/null
fi