diff options
Diffstat (limited to 'source/a/mkinitrd')
-rw-r--r-- | source/a/mkinitrd/geninitrd | 33 | ||||
-rw-r--r--[-rwxr-xr-x] | source/a/mkinitrd/init | 0 | ||||
-rwxr-xr-x | source/a/mkinitrd/mkinitrd.SlackBuild | 12 | ||||
-rw-r--r-- | source/a/mkinitrd/setup.01.mkinitrd | 38 |
4 files changed, 82 insertions, 1 deletions
diff --git a/source/a/mkinitrd/geninitrd b/source/a/mkinitrd/geninitrd new file mode 100644 index 00000000..db7995ab --- /dev/null +++ b/source/a/mkinitrd/geninitrd @@ -0,0 +1,33 @@ +#!/bin/bash + +# Copyright 2019 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# This is a simple script to regenerate the initial ramdisk when a new +# kernel is installed. It will generate /boot/initrd.gz which will be +# suitable for *most* uses for whatever kernel is linked to the +# /boot/vmlinuz-generic (or /boot/vmlinuz-generic-smp) symlink. The +# linked kernel must be named properly with the kernel version in the +# filename (the same naming scheme as the kernels shipped in Slackware). +# +# If you use an encrypted root, you'll need to make your initrd manually. + +cd $(dirname $0)/../.. +chroot . /var/lib/pkgtools/setup/setup.01.mkinitrd diff --git a/source/a/mkinitrd/init b/source/a/mkinitrd/init index 7e238ac6..7e238ac6 100755..100644 --- a/source/a/mkinitrd/init +++ b/source/a/mkinitrd/init diff --git a/source/a/mkinitrd/mkinitrd.SlackBuild b/source/a/mkinitrd/mkinitrd.SlackBuild index 7538dbd1..38ea9485 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:-8} +BUILD=${BUILD:-9} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -120,6 +120,16 @@ cat $CWD/mkinitrd.conf.5 | gzip -9c > $PKG/usr/man/man5/mkinitrd.conf.5.gz cat $CWD/mkinitrd.8 | gzip -9c > $PKG/usr/man/man8/mkinitrd.8.gz cat $CWD/mkinitrd_command_generator.8 | gzip -9c > $PKG/usr/man/man8/mkinitrd_command_generator.8.gz +mkdir -p $PKG/var/lib/pkgtools/setup +cp -a $CWD/setup.01.mkinitrd $PKG/var/lib/pkgtools/setup +chown root:root $PKG/var/lib/pkgtools/setup/setup.01.mkinitrd +chmod 755 $PKG/var/lib/pkgtools/setup/setup.01.mkinitrd + +mkdir -p $PKG/usr/sbin +cp -a $CWD/geninitrd $PKG/usr/sbin +chown root:root $PKG/usr/sbin/geninitrd +chmod 755 $PKG/usr/sbin/geninitrd + mkdir -p $PKG/etc cp -a $CWD/mkinitrd.conf.sample $PKG/etc/mkinitrd.conf.sample # ARM systems often need more time to find devices: diff --git a/source/a/mkinitrd/setup.01.mkinitrd b/source/a/mkinitrd/setup.01.mkinitrd new file mode 100644 index 00000000..b8004470 --- /dev/null +++ b/source/a/mkinitrd/setup.01.mkinitrd @@ -0,0 +1,38 @@ +#!/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: +if [ -f $(readlink -f boot/vmlinuz-generic) ]; then + KERNEL_SYMLINK="boot/vmlinuz-generic" + 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 \ +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 +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_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 \ +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 +fi + |