summaryrefslogtreecommitdiff
path: root/source/a/mkinitrd
diff options
context:
space:
mode:
Diffstat (limited to 'source/a/mkinitrd')
-rwxr-xr-xsource/a/mkinitrd/mkinitrd.SlackBuild2
-rw-r--r--source/a/mkinitrd/mkinitrd_command_generator.sh4
-rw-r--r--source/a/mkinitrd/setup.01.mkinitrd53
3 files changed, 47 insertions, 12 deletions
diff --git a/source/a/mkinitrd/mkinitrd.SlackBuild b/source/a/mkinitrd/mkinitrd.SlackBuild
index 38ea9485..4e298bae 100755
--- a/source/a/mkinitrd/mkinitrd.SlackBuild
+++ b/source/a/mkinitrd/mkinitrd.SlackBuild
@@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=mkinitrd
VERSION=${VERSION:-1.4.11}
BB=1.28.3
-BUILD=${BUILD:-9}
+BUILD=${BUILD:-11}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/a/mkinitrd/mkinitrd_command_generator.sh b/source/a/mkinitrd/mkinitrd_command_generator.sh
index d6d0d1a1..df6f24c9 100644
--- a/source/a/mkinitrd/mkinitrd_command_generator.sh
+++ b/source/a/mkinitrd/mkinitrd_command_generator.sh
@@ -341,6 +341,10 @@ while [ ! -z "$1" ]; do
shift
;;
-k)
+ if [ "$2" = "" ]; then
+ echo "Error: -k requires a kernel version."
+ exit 1
+ fi
KVER=$2
shift 2
;;
diff --git a/source/a/mkinitrd/setup.01.mkinitrd b/source/a/mkinitrd/setup.01.mkinitrd
index b8004470..8bddb5c5 100644
--- a/source/a/mkinitrd/setup.01.mkinitrd
+++ b/source/a/mkinitrd/setup.01.mkinitrd
@@ -8,31 +8,62 @@ fi
# Next, if boot/vmlinuz-generic is a symlink to a kernel, generate a ramdisk
# using the modules for that kernel:
-if [ -f $(readlink -f boot/vmlinuz-generic) ]; then
- KERNEL_SYMLINK="boot/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")"
-dialog --title "GENERATING INITIAL RAMDISK" --infobox \
- "Generating an initial ramdisk for use with the $KERNEL_VERSION generic \
+ # 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
+ 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
fi
# If boot/vmlinuz-generic-smp is a symlink to a kernel, also include the
# modules for that kernel:
-if [ -f $(readlink -f boot/vmlinuz-generic-smp) ]; then
- KERNEL_SYMLINK="boot/vmlinuz-generic-smp"
+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")"
-dialog --title "GENERATING INITIAL RAMDISK" --infobox \
- "Generating an initial ramdisk for use with the $KERNEL_VERSION generic \
+ # 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
+ 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
fi
-