#!/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 fi # Next, if boot/vmlinuz-generic is a symlink to a kernel, generate a ramdisk # using the modules for that kernel: 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 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: 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 \ 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 fi