mirror of
git://slackware.nl/current.git
synced 2025-01-11 08:01:05 +01:00
d5c267841a
a/kernel-firmware-20211216_f682ecb-noarch-1.txz: Upgraded. a/kernel-generic-5.15.9-x86_64-1.txz: Upgraded. a/kernel-huge-5.15.9-x86_64-1.txz: Upgraded. a/kernel-modules-5.15.9-x86_64-1.txz: Upgraded. a/openssl-solibs-1.1.1m-x86_64-1.txz: Upgraded. ap/inxi-3.3.10_1-noarch-1.txz: Upgraded. Thanks to h2-1. d/kernel-headers-5.15.9-x86-1.txz: Upgraded. d/vala-0.54.5-x86_64-1.txz: Upgraded. k/kernel-source-5.15.9-noarch-1.txz: Upgraded. SUNRPC_DEBUG n -> y +NFS_DEBUG y Thanks to bassmadrigal. kde/latte-dock-0.10.5-x86_64-1.txz: Upgraded. l/mozilla-nss-3.73.1-x86_64-1.txz: Upgraded. l/pipewire-0.3.42-x86_64-1.txz: Upgraded. n/iputils-20211215-x86_64-1.txz: Upgraded. n/openssl-1.1.1m-x86_64-1.txz: Upgraded. n/php-7.4.27-x86_64-1.txz: Upgraded. x/xorg-server-1.20.14-x86_64-1.txz: Upgraded. Built using --enable-systemd-logind to use elogind for device setup. Some code changes would be required in xorg-server, xinit, and various login managers to make rootless X work out of the box or to fall back in cases where elogind isn't supported, and those changes aren't appropriate here in the RC stage, but you can try it without recompiling: chmod 755 /usr/libexec/Xorg* Thanks to LuckyCyborg. x/xorg-server-xephyr-1.20.14-x86_64-1.txz: Upgraded. x/xorg-server-xnest-1.20.14-x86_64-1.txz: Upgraded. x/xorg-server-xvfb-1.20.14-x86_64-1.txz: Upgraded. xap/mozilla-firefox-91.4.1esr-x86_64-1.txz: Upgraded. This is a bugfix release. For more information, see: https://www.mozilla.org/en-US/firefox/91.4.1/releasenotes/ isolinux/initrd.img: Rebuilt. kernels/*: Upgraded. usb-and-pxe-installers/usbboot.img: Rebuilt.
446 lines
13 KiB
Bash
Executable file
446 lines
13 KiB
Bash
Executable file
#!/bin/bash
|
|
# This is 'probe', a wrapper for using fdisk to gather drive info for
|
|
# the Slackware setup scripts. I hate to bounce this much garbage through
|
|
# a tmpdir, but it looks like large variables can make ash crash...
|
|
|
|
# Many thanks to Vincent Rivellino for contributing the patches to support
|
|
# Mylex and Compaq RAID controllers.
|
|
|
|
# Regularize output that will be parsed:
|
|
unset LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY \
|
|
LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT \
|
|
LC_IDENTIFICATION LC_ALL
|
|
LANG=C
|
|
export LANG
|
|
|
|
TMP=/var/log/setup/tmp
|
|
|
|
# Use cached results if they exist and /proc/partitions has not changed:
|
|
if [ -r $TMP/SeTpartition.md5 -a -r $TMP/SeTfdisk ]; then
|
|
if [ "$(cat $TMP/SeTpartition.md5)" = "$(md5sum /proc/partitions)" ]; then
|
|
cat $TMP/SeTfdisk
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
# First run, or /proc/partitions has changed.
|
|
# Make a checksum for later comparison:
|
|
md5sum /proc/partitions > $TMP/SeTpartition.md5
|
|
|
|
# Wipe any previously existing results:
|
|
rm -f $TMP/SeTfdisk
|
|
|
|
# listide major minor hd1 hd2 (2 base devs for major)
|
|
list_ide() {
|
|
if [ "$2" = "0" ]; then
|
|
fdisk -l /dev/$3 >> $TMP/SeTfdisk
|
|
elif [ "$2" = "64" ]; then
|
|
fdisk -l /dev/$4 >> $TMP/SeTfdisk
|
|
fi
|
|
}
|
|
|
|
list_scsi() {
|
|
# find drive # 0 - 15
|
|
DRV=`expr $1 / 16`
|
|
NUM=`expr $1 % 16`
|
|
if [ ! "$NUM" = "0" ]; then
|
|
return
|
|
fi
|
|
if [ "$DRV" = "0" ]; then
|
|
fdisk -l /dev/sda >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "1" ]; then
|
|
fdisk -l /dev/sdb >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "2" ]; then
|
|
fdisk -l /dev/sdc >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "3" ]; then
|
|
fdisk -l /dev/sdd >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "4" ]; then
|
|
fdisk -l /dev/sde >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "5" ]; then
|
|
fdisk -l /dev/sdf >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "6" ]; then
|
|
fdisk -l /dev/sdg >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "7" ]; then
|
|
fdisk -l /dev/sdh >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "8" ]; then
|
|
fdisk -l /dev/sdi >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "9" ]; then
|
|
fdisk -l /dev/sdj >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "10" ]; then
|
|
fdisk -l /dev/sdk >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "11" ]; then
|
|
fdisk -l /dev/sdl >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "12" ]; then
|
|
fdisk -l /dev/sdm >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "13" ]; then
|
|
fdisk -l /dev/sdn >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "14" ]; then
|
|
fdisk -l /dev/sdo >> $TMP/SeTfdisk
|
|
elif [ "$DRV" = "15" ]; then
|
|
fdisk -l /dev/sdp >> $TMP/SeTfdisk
|
|
fi
|
|
}
|
|
|
|
# List Mylex RAID device
|
|
list_rd() {
|
|
# find drive
|
|
DRV=`expr $2 / 8`
|
|
NUM=`expr $2 % 8`
|
|
if [ ! "$NUM" = "0" ]; then
|
|
return
|
|
fi
|
|
fdisk -l /dev/rd/c$1d$DRV >> $TMP/SeTfdisk
|
|
#output_gpt_partitions /dev/rd/c$1d$DRV >> $TMP/SeTfdisk
|
|
}
|
|
|
|
# List Cpq SMART/2 RAID device
|
|
list_ida() {
|
|
# find drive
|
|
DRV=`expr $2 / 16`
|
|
NUM=`expr $2 % 16`
|
|
if [ ! "$NUM" = "0" ]; then
|
|
return
|
|
fi
|
|
fdisk -l /dev/ida/c$1d$DRV >> $TMP/SeTfdisk
|
|
#output_gpt_partitions /dev/ida/c$1d$DRV >> $TMP/SeTfdisk
|
|
}
|
|
|
|
list_cciss() {
|
|
# find drive
|
|
DRV=`expr $2 / 16`
|
|
NUM=`expr $2 % 16`
|
|
if [ ! "$NUM" = "0" ]; then
|
|
return
|
|
fi
|
|
fdisk -l /dev/cciss/c$1d$DRV >> $TMP/SeTfdisk
|
|
#output_gpt_partitions /dev/cciss/c$1d$DRV >> $TMP/SeTfdisk
|
|
}
|
|
|
|
list_ataraid() {
|
|
# find drive
|
|
DRV=`expr $2 / 16`
|
|
NUM=`expr $2 % 16`
|
|
if [ "$NUM" = "0" ]; then
|
|
fdisk -l /dev/ataraid/d$DRV >> $TMP/SeTfdisk
|
|
#output_gpt_partitions /dev/ataraid/d$DRV >> $TMP/SeTfdisk
|
|
else
|
|
return
|
|
fi
|
|
}
|
|
|
|
list_amiraid() {
|
|
# find drive
|
|
DRV=`expr $2 / 16`
|
|
NUM=`expr $2 % 16`
|
|
if [ "$NUM" = "0" ]; then
|
|
fdisk -l /dev/amiraid/ar$DRV >> $TMP/SeTfdisk
|
|
#output_gpt_partitions /dev/amiraid/ar$DRV >> $TMP/SeTfdisk
|
|
else
|
|
return
|
|
fi
|
|
}
|
|
|
|
#list_mmc() {
|
|
# # find drive
|
|
# DRV=`expr $2 / 8`
|
|
# NUM=`expr $2 % 8`
|
|
# if [ "$NUM" = "0" ]; then
|
|
# fdisk -l /dev/mmcblk$DRV >> $TMP/SeTfdisk
|
|
# #output_gpt_partitions /dev/mmcblk$DRV >> $TMP/SeTfdisk
|
|
# else
|
|
# return
|
|
# fi
|
|
#}
|
|
list_mmc() {
|
|
local device
|
|
# Filter out any partitions on the block device, as we'll use
|
|
# fdisk to capture those:
|
|
lsblk -o name,type -ripnd /dev/mmcblk* | egrep 'disk$' | awk '{print $1}' | while read device ; do
|
|
fdisk -l $device >> $TMP/SeTfdisk
|
|
done
|
|
}
|
|
|
|
list_nvme() {
|
|
fdisk -l | grep $1 >> $TMP/SeTfdisk 2> /dev/null
|
|
}
|
|
|
|
is_swap() {
|
|
HEADER=$(dd if="$1" bs=1 skip=4086 count=10 2>/dev/null | strings)
|
|
if [ "$HEADER" = "SWAPSPACE2" -o "$HEADER" = "SWAP_SPACE" ]; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
list_md() {
|
|
if ( is_swap "/dev/$2" ); then TYPE="Linux swap"; else TYPE="Linux"; fi
|
|
echo "/dev/$2 1 2 $1 kk $TYPE" >> $TMP/SeTfdisk
|
|
}
|
|
|
|
list_lvm() {
|
|
lvscan 2>/dev/null | grep "ACTIVE" | while read line ; do
|
|
SMASHED_LINE=$line
|
|
if [ "$SMASHED_LINE" = "" ]; then
|
|
break;
|
|
fi
|
|
DEV=`echo $SMASHED_LINE | cut -f2 -d"'"`
|
|
SIZE=`lvdisplay $DEV -C --units k --noheadings --separator : | cut -f4 -d':' | sed -e 's/^\([0-9]*\)[^0-9].*/\1/'`
|
|
TYPE="Linux"
|
|
if ( is_swap "$DEV" ); then TYPE="Linux swap"; fi
|
|
echo "$DEV 0 0 $SIZE lv $TYPE" >> $TMP/SeTfdisk
|
|
done
|
|
}
|
|
|
|
# List any volumes created by cryptsetup
|
|
list_crypt() {
|
|
for i in $(/bin/ls /dev/mapper/); do
|
|
if cryptsetup status $i 2>/dev/null | grep -wq "cipher:" ; then
|
|
DEV=$(cryptsetup status $i | head -n 1 | cut -f 1 -d ' ')
|
|
SIZE=$(fdisk -s $(cryptsetup status $i | grep "device:" | cut -f 2 -d : | tr -d ' '))
|
|
echo "$DEV 0 0 $SIZE lc Linux" >> $TMP/SeTfdisk
|
|
fi
|
|
done
|
|
}
|
|
|
|
# List virtual partitions
|
|
list_virt() {
|
|
fdisk -l /dev/$1 >> $TMP/SeTfdisk
|
|
#output_gpt_partitions /dev/$1 >> $TMP/SeTfdisk
|
|
}
|
|
|
|
output_gpt_partitions() {
|
|
# First, make sure the device is GPT:
|
|
if fdisk -l $1 2> /dev/null | grep -wq -e "GPT" -e "Disklabel type: gpt" ; then
|
|
unset output
|
|
# In the case of some RAID device like Mylex we will need to delimit the
|
|
# partition number. We will set a partition delimiter variable P set
|
|
# either to an empty string (default) or the needed delimiter.
|
|
TESTRAID="$(echo $1 | cut -f 2 -d /)"
|
|
case "$TESTRAID" in
|
|
'amiraid' )
|
|
P="p"
|
|
;;
|
|
'ataraid' )
|
|
P="p"
|
|
;;
|
|
'cciss' )
|
|
P="p"
|
|
;;
|
|
'ida' )
|
|
P="p"
|
|
;;
|
|
'rd' )
|
|
P="p"
|
|
;;
|
|
*)
|
|
P=""
|
|
;;
|
|
esac
|
|
gdisk -l $1 | tr -d '*' | while read parse ; do
|
|
if [ ! -z $output ]; then
|
|
line=$parse
|
|
if [ ! "$(echo $line | cut -b1)" = "" ]; then
|
|
gptpartition=${1}${P}$(echo $line | cut -f 1 -d ' ')
|
|
gpttype="$(echo $line | cut -f 6 -d ' ')"
|
|
if [ "$gpttype" = "8200" ]; then
|
|
fdisktype="Linux swap"
|
|
elif [ "$gpttype" = "0700" ]; then
|
|
if dd if=$gptpartition bs=1K count=1 2> /dev/null | grep -wq NTFS ; then
|
|
fdisktype="HPFS/NTFS"
|
|
elif dd if=$gptpartition bs=1K count=1 2> /dev/null | grep -wq EXFAT ; then
|
|
fdisktype="exFAT"
|
|
else
|
|
fdisktype="W95 FAT32"
|
|
fi
|
|
elif [ "$gpttype" = "AF00" ]; then
|
|
fdisktype="HFS+"
|
|
elif [ "$gpttype" = "EF00" ]; then
|
|
fdisktype="EFI System Partition"
|
|
elif [ "$gpttype" = "8300" ]; then
|
|
fdisktype=Linux
|
|
else
|
|
fdisktype="Unknown hex code $gpttype"
|
|
fi
|
|
sectorsize="$(gdisk -l $1 | tr -d '*' | grep "Logical sector size" | cut -f 2 -d : | cut -f 2 -d ' ')"
|
|
gptstart="$(expr $(echo $line | cut -f 2 -d ' ') \* $sectorsize / 1024)"
|
|
gptend="$(expr $(echo $line | cut -f 3 -d ' ') \* $sectorsize / 1024)"
|
|
gptsize="$(expr $gptend - $gptstart)"
|
|
echo $gptpartition $gptstart $gptend $gptsize $gpttype $fdisktype
|
|
fi
|
|
fi
|
|
if echo $parse | grep -q "^Number" ; then
|
|
output=true
|
|
fi
|
|
done
|
|
fi
|
|
}
|
|
|
|
list_scsi_gpt() {
|
|
# find drive # 0 - 15
|
|
DRV=`expr $1 / 16`
|
|
NUM=`expr $1 % 16`
|
|
if [ ! "$NUM" = "0" ]; then
|
|
return
|
|
fi
|
|
if [ "$DRV" = "0" ]; then
|
|
output_gpt_partitions /dev/sda
|
|
elif [ "$DRV" = "1" ]; then
|
|
output_gpt_partitions /dev/sdb
|
|
elif [ "$DRV" = "2" ]; then
|
|
output_gpt_partitions /dev/sdc
|
|
elif [ "$DRV" = "3" ]; then
|
|
output_gpt_partitions /dev/sdd
|
|
elif [ "$DRV" = "4" ]; then
|
|
output_gpt_partitions /dev/sde
|
|
elif [ "$DRV" = "5" ]; then
|
|
output_gpt_partitions /dev/sdf
|
|
elif [ "$DRV" = "6" ]; then
|
|
output_gpt_partitions /dev/sdg
|
|
elif [ "$DRV" = "7" ]; then
|
|
output_gpt_partitions /dev/sdh
|
|
elif [ "$DRV" = "8" ]; then
|
|
output_gpt_partitions /dev/sdi
|
|
elif [ "$DRV" = "9" ]; then
|
|
output_gpt_partitions /dev/sdj
|
|
elif [ "$DRV" = "10" ]; then
|
|
output_gpt_partitions /dev/sdk
|
|
elif [ "$DRV" = "11" ]; then
|
|
output_gpt_partitions /dev/sdl
|
|
elif [ "$DRV" = "12" ]; then
|
|
output_gpt_partitions /dev/sdm
|
|
elif [ "$DRV" = "13" ]; then
|
|
output_gpt_partitions /dev/sdn
|
|
elif [ "$DRV" = "14" ]; then
|
|
output_gpt_partitions /dev/sdo
|
|
elif [ "$DRV" = "15" ]; then
|
|
output_gpt_partitions /dev/sdp
|
|
fi
|
|
}
|
|
|
|
# List the LVM volumes:
|
|
list_lvm
|
|
|
|
# List CRYPT volumes:
|
|
list_crypt
|
|
|
|
## This is obsolete, since fdisk handles GPT now.
|
|
## List GPT partitions:
|
|
#cat /proc/partitions | while read line ; do
|
|
# SMASHED_LINE=$line
|
|
# MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
|
|
# MINOR=`echo $SMASHED_LINE | cut -f 2 -d ' '`
|
|
# if [ "$MAJOR" = "8" ]; then
|
|
# list_scsi_gpt $MINOR
|
|
# fi
|
|
#done
|
|
|
|
# Other partitions:
|
|
if cat /proc/partitions | grep -E '/|[0-9]' 1>/dev/null 2>/dev/null ; then # new
|
|
cat /proc/partitions | grep -E '/|[0-9]' | while read line ; do
|
|
SMASHED_LINE=$line
|
|
MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
|
|
MINOR=`echo $SMASHED_LINE | cut -f 2 -d ' '`
|
|
DEVNAME=`echo $SMASHED_LINE | cut -f 4 -d ' '`
|
|
if [ "$MAJOR" = "3" ]; then
|
|
list_ide $MAJOR $MINOR hda hdb
|
|
elif [ "$MAJOR" = "8" ]; then
|
|
list_scsi $MINOR
|
|
elif [ "$MAJOR" = "9" ]; then
|
|
list_md `echo $SMASHED_LINE | cut -f 3 -d ' ' | tr -d '/'` \
|
|
`echo $SMASHED_LINE | cut -f 4 -d ' '`
|
|
elif [ "$MAJOR" = "22" ]; then
|
|
list_ide $MAJOR $MINOR hdc hdd
|
|
elif [ "$MAJOR" = "33" ]; then
|
|
list_ide $MAJOR $MINOR hde hdf
|
|
elif [ "$MAJOR" = "34" ]; then
|
|
list_ide $MAJOR $MINOR hdg hdh
|
|
elif [ "$MAJOR" = "48" ]; then
|
|
list_rd 0 $MINOR
|
|
elif [ "$MAJOR" = "49" ]; then
|
|
list_rd 1 $MINOR
|
|
elif [ "$MAJOR" = "50" ]; then
|
|
list_rd 2 $MINOR
|
|
elif [ "$MAJOR" = "51" ]; then
|
|
list_rd 3 $MINOR
|
|
elif [ "$MAJOR" = "52" ]; then
|
|
list_rd 4 $MINOR
|
|
elif [ "$MAJOR" = "53" ]; then
|
|
list_rd 5 $MINOR
|
|
elif [ "$MAJOR" = "54" ]; then
|
|
list_rd 6 $MINOR
|
|
elif [ "$MAJOR" = "55" ]; then
|
|
list_rd 7 $MINOR
|
|
elif [ "$MAJOR" = "56" ]; then
|
|
list_ide $MAJOR $MINOR hdi hdj
|
|
elif [ "$MAJOR" = "57" ]; then
|
|
list_ide $MAJOR $MINOR hdk hdl
|
|
elif [ "$MAJOR" = "72" ]; then
|
|
list_ida 0 $MINOR
|
|
elif [ "$MAJOR" = "73" ]; then
|
|
list_ida 1 $MINOR
|
|
elif [ "$MAJOR" = "74" ]; then
|
|
list_ida 2 $MINOR
|
|
elif [ "$MAJOR" = "75" ]; then
|
|
list_ida 3 $MINOR
|
|
elif [ "$MAJOR" = "76" ]; then
|
|
list_ida 4 $MINOR
|
|
elif [ "$MAJOR" = "77" ]; then
|
|
list_ida 5 $MINOR
|
|
elif [ "$MAJOR" = "78" ]; then
|
|
list_ida 6 $MINOR
|
|
elif [ "$MAJOR" = "79" ]; then
|
|
list_ida 7 $MINOR
|
|
elif [ "$MAJOR" = "80" ]; then
|
|
list_ide $MAJOR $MINOR hdm hdn
|
|
elif [ "$MAJOR" = "89" ]; then
|
|
list_ide $MAJOR $MINOR hdo hdp
|
|
elif [ "$MAJOR" = "90" ]; then
|
|
list_ide $MAJOR $MINOR hdq hdr
|
|
elif [ "$MAJOR" = "91" ]; then
|
|
list_ide $MAJOR $MINOR hds hdt
|
|
elif [ "$MAJOR" = "101" ]; then
|
|
list_amiraid $MAJOR $MINOR
|
|
elif [ "$MAJOR" = "104" \
|
|
-o "$MAJOR" = "105" \
|
|
-o "$MAJOR" = "106" \
|
|
-o "$MAJOR" = "107" \
|
|
-o "$MAJOR" = "108" \
|
|
-o "$MAJOR" = "109" \
|
|
-o "$MAJOR" = "110" \
|
|
-o "$MAJOR" = "111" ]; then
|
|
list_cciss $(( $MAJOR - 104 )) $MINOR
|
|
elif [ "$MAJOR" = "114" ]; then
|
|
list_ataraid $MAJOR $MINOR
|
|
elif [ "$MAJOR" = "179" ]; then
|
|
list_mmc $MAJOR $MINOR
|
|
elif [ "$MAJOR" = "259" ]; then
|
|
if echo $line | grep -q p; then
|
|
list_nvme $DEVNAME
|
|
fi
|
|
elif [ $(expr $DEVNAME : 'x\?vd[^0-9]*$') -ne 0 ]; then
|
|
# The virtio devices have no set major dev number, so we have to search
|
|
# by name. Matches full drive names for KVM/lguest (vda) and Xen (xvda).
|
|
list_virt $DEVNAME
|
|
fi
|
|
done
|
|
else # old format and no RAID:
|
|
if cat /proc/partitions | grep md 1> /dev/null 2> /dev/null ; then
|
|
cat /proc/partitions | grep md | while read line ; do
|
|
SMASHED_LINE=$line
|
|
MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
|
|
if [ "$MAJOR" = "9" ]; then
|
|
list_md `echo $SMASHED_LINE | cut -f 3 -d ' ' | tr -d '/'` \
|
|
`echo $SMASHED_LINE | cut -f 4 -d ' '`
|
|
fi
|
|
done
|
|
fi
|
|
fdisk -l 2> /dev/null >> $TMP/SeTfdisk
|
|
fi
|
|
|
|
# Change the names to be the same as what the old fdisk used:
|
|
sed -i -e "s/Linux filesystem/Linux/g" $TMP/SeTfdisk
|
|
sed -i -e "s/EFI System/EFI System Partition/g" $TMP/SeTfdisk
|
|
sed -i -e "s,EFI (FAT-12/16/32),EFI System Partition,g" $TMP/SeTfdisk
|
|
|
|
cat $TMP/SeTfdisk
|