diff options
Diffstat (limited to 'source/a/mkinitrd')
-rwxr-xr-x | source/a/mkinitrd/mkinitrd.SlackBuild | 2 | ||||
-rw-r--r-- | source/a/mkinitrd/mkinitrd_command_generator.sh | 4 | ||||
-rw-r--r-- | source/a/mkinitrd/setup.01.mkinitrd | 53 |
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 - |