mirror of
git://slackware.nl/current.git
synced 2024-12-28 09:59:53 +01:00
ed49432ad9
a/elilo-3.16-x86_64-16.txz: Rebuilt. eliloconfig: don't mess with mounting efivarfs. This should be handled by rc.S, or by whatever the admin put in /etc/fstab. a/kernel-firmware-20230523_1ba3519-noarch-1.txz: Upgraded. a/kernel-generic-6.1.30-x86_64-1.txz: Upgraded. a/kernel-huge-6.1.30-x86_64-1.txz: Upgraded. a/kernel-modules-6.1.30-x86_64-1.txz: Upgraded. a/sysvinit-scripts-15.1-noarch-5.txz: Rebuilt. rc.S: mount efivarfs rw, may be overridden in /etc/default/efivarfs. ap/sc-im-0.8.3-x86_64-1.txz: Upgraded. d/kernel-headers-6.1.30-x86-1.txz: Upgraded. d/parallel-20230522-noarch-1.txz: Upgraded. k/kernel-source-6.1.30-noarch-1.txz: Upgraded. l/enchant-2.4.0-x86_64-1.txz: Upgraded. l/glib2-2.76.3-x86_64-1.txz: Upgraded. l/gtk+3-3.24.38-x86_64-1.txz: Upgraded. l/qt5-5.15.9_20230523_245f369c-x86_64-1.txz: Upgraded. This update fixes a security issue. Qt-based clients may mismatch HSTS headers (Strict-Transport-Security), which would prevent the client from switching to a secure HTTPS connection as requested by a server. For more information, see: https://www.cve.org/CVERecord?id=CVE-2023-32762 (* Security fix *) n/curl-8.1.1-x86_64-1.txz: Upgraded. This is a bugfix release. t/texlive-2023.230322-x86_64-3.txz: Rebuilt. This update patches a security issue: LuaTeX before 1.17.0 allows execution of arbitrary shell commands when compiling a TeX file obtained from an untrusted source. This occurs because luatex-core.lua lets the original io.popen be accessed. This also affects TeX Live before 2023 r66984 and MiKTeX before 23.5. Thanks to Johannes Schoepfer. For more information, see: https://www.cve.org/CVERecord?id=CVE-2023-32700 (* Security fix *) xap/mozilla-firefox-113.0.2-x86_64-1.txz: Upgraded. This is a bugfix release. For more information, see: https://www.mozilla.org/en-US/firefox/113.0.2/releasenotes/ xfce/libxfce4ui-4.18.4-x86_64-1.txz: Upgraded. xfce/xfce4-panel-4.18.4-x86_64-1.txz: Upgraded. isolinux/initrd.img: Rebuilt. kernels/*: Upgraded. usb-and-pxe-installers/usbboot.img: Rebuilt.
215 lines
7.8 KiB
Bash
215 lines
7.8 KiB
Bash
#!/bin/sh
|
|
# Copyright 2013, 2016, 2017, 2023 Patrick 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 script installs the elilo boot loader, the kernel, and optionally
|
|
# an initrd into the EFI System Partition. A boot menu entry can also be
|
|
# installed using efibootmgr. The kernel used will be whatever the symlink
|
|
# /boot/vmlinuz points to, and if /boot/initrd.gz exists, that will be
|
|
# installed as the initrd.
|
|
#
|
|
# The EFI System Partition is expected to be mounted on /boot/efi before
|
|
# running this script.
|
|
|
|
TMP=/var/log/setup/tmp
|
|
|
|
# Set the OS root directory (called T_PX for some unknown reason).
|
|
# If an argument is given to this script and it is a directory, it
|
|
# is taken to be the root directory. First though, we check for a
|
|
# directory named $T_PX, and that gets the first priority.
|
|
if [ ! -d "$T_PX" ]; then
|
|
if [ ! "$1" = "" ]; then
|
|
if [ -d "$1" ]; then
|
|
T_PX="$1"
|
|
fi
|
|
else
|
|
# Are we on the installer image?
|
|
if [ -r /usr/lib/setup/SeTpartitions ]; then
|
|
T_PX=/mnt
|
|
# Or, are we on a running system?
|
|
elif [ -r /etc/slackware-version ]; then
|
|
T_PX=/
|
|
# One more installer-likely thing:
|
|
elif [ -r /usr/lib/setup/setup ]; then
|
|
T_PX=/mnt
|
|
else
|
|
# We will have to assume we're on an installed and running system.
|
|
T_PX=/
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Determine the root partition (such as /dev/sda1)
|
|
ROOT_DEVICE=$2
|
|
if [ "$ROOT_DEVICE" = "" ]; then
|
|
if [ -r $TMP/SeTrootdev ]; then
|
|
ROOT_DEVICE="$(cat $TMP/SeTrootdev)"
|
|
else
|
|
ROOT_DEVICE="$(mount | grep ' / ' | cut -f 1 -d ' ' | head -n 1)"
|
|
fi
|
|
fi
|
|
|
|
# If the system is not running under EFI, skip running this script:
|
|
if [ ! -d /sys/firmware/efi ]; then
|
|
if [ "$T_PX" = "/" ]; then
|
|
echo "ERROR: System is not running under UEFI."
|
|
fi
|
|
exit
|
|
fi
|
|
|
|
# If there's no vfat mounted on /boot/efi or $T_PX/boot/efi, forget it:
|
|
if ! mount | grep vfat | grep -wq /boot/efi ; then
|
|
if ! mount | grep vfat | grep -wq $T_PX/boot/efi ; then
|
|
if [ "$T_PX" = "/" ]; then
|
|
echo "ERROR: No EFI System Partition mounted on /boot/efi."
|
|
fi
|
|
exit
|
|
fi
|
|
fi
|
|
|
|
# Figure out the device and partition number of the ESP:
|
|
DEVLEN=8
|
|
PARTLEN=9
|
|
if mount | grep vfat | grep -wq /boot/efi ; then
|
|
mount | grep vfat | grep -w /boot/efi | grep -q -e nvme -e mmcblk && DEVLEN=12 && PARTLEN=14
|
|
EFI_DEVICE=$(mount | grep vfat | grep -w /boot/efi | cut -b 1-${DEVLEN})
|
|
EFI_PARTITION=$(mount | grep vfat | grep -w /boot/efi | cut -f 1 -d ' ' | cut -b ${PARTLEN}- | sed 's/[^0-9]*//g')
|
|
else
|
|
mount | grep vfat | grep -w $T_PX/boot/efi | grep -q -e nvme -e mmcblk && DEVLEN=12 && PARTLEN=14
|
|
EFI_DEVICE=$(mount | grep vfat | grep -w $T_PX/boot/efi | cut -b 1-${DEVLEN})
|
|
EFI_PARTITION=$(mount | grep vfat | grep -w $T_PX/boot/efi | cut -f 1 -d ' ' | cut -b ${PARTLEN}- | sed 's/[^0-9]*//g')
|
|
fi
|
|
|
|
# There better be a kernel:
|
|
if [ ! -r $T_PX/boot/vmlinuz ]; then
|
|
if [ "$T_PX" = "/" ]; then
|
|
echo "ERROR: No kernel found at /boot/vmlinuz."
|
|
fi
|
|
exit
|
|
fi
|
|
|
|
dialog --title "INSTALL ELILO" \
|
|
--backtitle "ELILO (EFI Linux Loader) installation" \
|
|
--menu "ELILO is a Linux boot loader for \
|
|
EFI based systems. Installing ELILO will allow you to boot your Linux \
|
|
system from the hard drive after selecting it from the UEFI boot menu. \
|
|
Since an EFI System Partition was detected on this machine, it is \
|
|
recommended that you install ELILO now. Please select an option:" \
|
|
13 70 2 \
|
|
"install" "Install ELILO on the EFI System Partition" \
|
|
"skip" "Do not install ELILO" 2> $TMP/reply
|
|
if [ $? = 1 -o $? = 255 ]; then
|
|
exit
|
|
fi
|
|
REPLY="`cat $TMP/reply`"
|
|
rm -f $TMP/reply
|
|
if [ "$REPLY" = "skip" ]; then
|
|
exit
|
|
fi
|
|
|
|
mkdir -p $T_PX/boot/efi/EFI/Slackware 1> /dev/null 2> /dev/null
|
|
cat << EOF > $T_PX/boot/efi/EFI/Slackware/elilo.conf
|
|
chooser=simple
|
|
delay=1
|
|
timeout=1
|
|
#
|
|
EOF
|
|
cp -a $T_PX/boot/elilo-x86_64.efi $T_PX/boot/efi/EFI/Slackware/elilo.efi 1> /dev/null 2> /dev/null
|
|
if [ -r $T_PX/boot/initrd.gz ]; then
|
|
cp $T_PX/boot/vmlinuz-generic $T_PX/boot/efi/EFI/Slackware/vmlinuz 1> /dev/null 2> /dev/null
|
|
touch -r $T_PX/boot/vmlinuz-generic $T_PX/boot/efi/EFI/Slackware/vmlinuz
|
|
cp $T_PX/boot/initrd.gz $T_PX/boot/efi/EFI/Slackware 1> /dev/null 2> /dev/null
|
|
touch -r $T_PX/boot/initrd.gz $T_PX/boot/efi/EFI/Slackware/initrd.gz
|
|
cat << EOF >> $T_PX/boot/efi/EFI/Slackware/elilo.conf
|
|
image=vmlinuz
|
|
label=vmlinuz
|
|
initrd=initrd.gz
|
|
EOF
|
|
else
|
|
cp $T_PX/boot/vmlinuz-huge $T_PX/boot/efi/EFI/Slackware/vmlinuz 1> /dev/null 2> /dev/null
|
|
touch -r $T_PX/boot/vmlinuz-huge $T_PX/boot/efi/EFI/Slackware/vmlinuz
|
|
cat << EOF >> $T_PX/boot/efi/EFI/Slackware/elilo.conf
|
|
image=vmlinuz
|
|
label=vmlinuz
|
|
EOF
|
|
fi
|
|
cat << EOF >> $T_PX/boot/efi/EFI/Slackware/elilo.conf
|
|
read-only
|
|
append="root=$ROOT_DEVICE vga=normal ro"
|
|
EOF
|
|
|
|
dialog --title "INSTALL BOOT MENU ENTRY?" \
|
|
--backtitle "ELILO (EFI Linux Loader) installation" \
|
|
--menu "Would you like to install \
|
|
a boot menu entry so that you can easily select Slackware when you boot your \
|
|
machine? WARNING: DO NOT install a boot menu entry on Apple hardware. \
|
|
Apple computers use a different type of EFI firmware, and efibootmgr has \
|
|
been known to damage them. On all other computers, it is recommended to add \
|
|
a boot menu entry. Please select an option:" \
|
|
14 70 2 \
|
|
"install" "Install a boot menu entry" \
|
|
"skip" "Do not install a boot menu entry" 2> $TMP/reply
|
|
if [ $? = 1 -o $? = 255 ]; then
|
|
exit
|
|
fi
|
|
REPLY="`cat $TMP/reply`"
|
|
rm -f $TMP/reply
|
|
if [ "$REPLY" = "skip" ]; then
|
|
exit
|
|
fi
|
|
|
|
efibootmgr -v | rev | cut -f 2- | rev | grep Boot0 | grep Slackware | while read line ; do
|
|
# Reject entries that don't exactly match as not our business
|
|
if [ ! "$(echo $line | cut -f 2- -d ' ')" = "Slackware" ]; then
|
|
continue
|
|
fi
|
|
ENTRY="$(efibootmgr -v | grep "^$(echo $line | cut -b1-8)")"
|
|
dialog --title "REMOVE OLD \"Slackware\" EFI BOOT ENTRY?" \
|
|
--backtitle "ELILO (EFI Linux Loader) installation" \
|
|
--yesno "An old Slackware boot entry has been found in your EFI boot menu. \
|
|
Would you like to remove this before installing the new Slackware boot \
|
|
entry? This is recommended.\n\nOld EFI boot menu entry:\n$ENTRY" 13 70
|
|
if [ ! $? = 0 ]; then
|
|
continue
|
|
fi
|
|
# Remove the boot entry:
|
|
efibootmgr -q -B -b $(echo $line | cut -b5-8)
|
|
sleep 1
|
|
done
|
|
|
|
efibootmgr -q -c -d $EFI_DEVICE -p $EFI_PARTITION -l "\\EFI\\Slackware\\elilo.efi" -L "Slackware"
|
|
sleep 1
|
|
|
|
efibootmgr -v | rev | cut -f 2- | rev | grep Boot0 | grep Slackware | while read line ; do
|
|
# Reject entries that don't exactly match as not our business
|
|
if [ ! "$(echo $line | cut -f 2- -d ' ')" = "Slackware" ]; then
|
|
continue
|
|
fi
|
|
ENTRY="$(efibootmgr -v | grep "^$(echo $line | cut -b1-8)")"
|
|
if echo $ENTRY | grep -q -F "\EFI\Slackware\elilo.efi" ; then
|
|
dialog --title "EFI BOOT ENTRY INSTALLED" \
|
|
--backtitle "ELILO (EFI Linux Loader) installation" \
|
|
--msgbox "A Slackware boot entry has been installed to your EFI boot
|
|
menu.\n\nEFI boot menu entry:\n$ENTRY" 11 70
|
|
fi
|
|
done
|
|
|
|
# Done.
|