mirror of
https://github.com/kneutron/ansitest.git
synced 2025-01-16 04:42:55 +08:00
277f3113bf
added ncompress preinstall pkg as dependency for zfs 211
144 lines
4.3 KiB
Bash
144 lines
4.3 KiB
Bash
#!/bin/bash
|
|
|
|
# tested on alma linux 8.3 // centos / RHEL replacement
|
|
|
|
# Args/parameters to pass:
|
|
#
|
|
# upgrade = Unmount zfs datasets, export all zfs pools, unload zfs module, recompile zfs, reload module (does not re-import pools)
|
|
# fixit = just recompile zfs module for running kernel and load module
|
|
|
|
logfile=~/zfs-install-redhat-alma.log
|
|
mv -v $logfile $logfile-old
|
|
# blankit
|
|
> $logfile
|
|
chmod 750 $logfile
|
|
|
|
# xxx TODO EDITME
|
|
#zver="2.0.4"
|
|
zver="2.1.1"
|
|
|
|
firstrun=1
|
|
# if set to 1, will install prereq packages - set 0 to skip
|
|
|
|
# logecho.mrg
|
|
# Echo something to current console AND log
|
|
# Can also handle piped input ( cmd |logecho )
|
|
# Warning: Has trouble echoing '*' even when quoted.
|
|
function logecho () {
|
|
args=$@
|
|
|
|
if [ -z "$args" ]; then
|
|
args='placeholder'
|
|
|
|
while [ 1 ]; do
|
|
read -e -t2 args
|
|
|
|
if [ -n "$args" ]; then
|
|
echo "$args" |tee -a $logfile;
|
|
else
|
|
break;
|
|
fi
|
|
done
|
|
|
|
else
|
|
echo "$args" |tee -a $logfile;
|
|
fi
|
|
} # END FUNC
|
|
|
|
if [ "$1" = "fixit" ]; then
|
|
logecho "$(date) - Recompiling ZFS module for new/current kernel"
|
|
|
|
cd /usr/local/src/zfs-$zver
|
|
time rpm --reinstall zfs-dkms*.rpm && modprobe zfs
|
|
|
|
dmesg |grep ZFS
|
|
zpool version
|
|
logecho "o $(date) + Finished run = $0 $1"
|
|
|
|
exit;
|
|
fi
|
|
|
|
# failexit.mrg
|
|
function failexit () {
|
|
logecho "$(date) - Something failed! Code: $1 $2" # code # (and optional description)
|
|
exit $1
|
|
}
|
|
|
|
if [ "$1" = "upgrade" ]; then
|
|
systemctl stop zed
|
|
systemctl stop smb
|
|
# TODO also do nfs if you use that with zfs
|
|
|
|
logecho "! $(date) - Unmounting all ZFS datasets and exporting pools..."
|
|
zfs umount -a -f
|
|
zpool export -a -f
|
|
[ $(df -hT |grep -c zfs) -gt 0 ] && failexit 111 "! $(date) - ZFS pool/dataset found still mounted, lsof may come in handy"
|
|
# handy REF if you need fuser: https://vander.host/knowledgebase/operating-systems/how-to-deal-with-fuser-command-not-found-on-centos/
|
|
# yum install -y psmisc
|
|
|
|
logecho "o $(date) - Unloading ZFS modules..."
|
|
modprobe -rv zfs zunicode zzstd zlua zcommon znvpair zavl icp spl
|
|
if [ $(lsmod |grep -c zfs) -gt 0 ]; then
|
|
logecho "NOTE if you get error here, ' lsof |grep zfs ' and kill the process holding it, then retry"
|
|
failexit 302 "! ($date) - ZFS module(s) are still loaded!"
|
|
fi
|
|
|
|
yum remove -y zfs zfs-dkms* libnvpair* libuutil* libzfs* libzpool* python3-pyzfs zfs-debug* zfs-dracut zfs-test* \
|
|
--setopt=clean_requirements_on_remove=false \
|
|
|| failexit 999 "! $(date) - Failed to uninstall ZFS RPMs"
|
|
# REF: https://access.redhat.com/solutions/5577491
|
|
# otherwise it removes ~128 packages and is a big PITA :b
|
|
|
|
logecho "o $(date) - TODO NOTE upgrade was called, dont forget to restart services"
|
|
fi
|
|
|
|
if [ "$firstrun" -gt 0 ]; then
|
|
logecho "o $(date) + Installing prereq pkgs..."
|
|
yum install -y epel-release
|
|
#yum install -y https://zfsonlinux.org/epel/zfs-release.el8_3.noarch.rpm
|
|
#gpg --import --import-options show-only /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux
|
|
|
|
# REF: https://openzfs.github.io/openzfs-docs/Developer%20Resources/Custom%20Packages.html
|
|
|
|
yum install -y kernel-devel kernel-headers wget curl lsof ncompress
|
|
yum groupinstall -y "Development Tools"
|
|
|
|
dnf install -y gcc make autoconf automake libtool rpm-build kernel-rpm-macros dkms libtirpc-devel \
|
|
libblkid-devel libuuid-devel libudev-devel openssl-devel zlib-devel libaio-devel libattr-devel \
|
|
elfutils-libelf-devel kernel-devel-$(uname -r) python3 python3-devel python3-setuptools python3-cffi libffi-devel
|
|
|
|
fi
|
|
|
|
cd /usr/local/src
|
|
logecho "o $(date) + Downloading ZFS source code"
|
|
wget --no-clobber https://github.com/openzfs/zfs/releases/download/zfs-$zver/zfs-$zver.tar.gz
|
|
tar xzf zfs-$zver.tar.gz
|
|
|
|
cd zfs-$zver || failexit 404 "! $(date) - ZFS source code not found!"
|
|
|
|
logecho "o $(date) + Compiling ZFS"
|
|
# REF: https://openzfs.github.io/openzfs-docs/Developer%20Resources/Custom%20Packages.html
|
|
time ./configure
|
|
time make -s -j4 rpm-utils rpm-dkms && \
|
|
mv -v *.src.rpm ..
|
|
|
|
logecho "o $(date) + Installing ZFS RPMs"
|
|
time yum localinstall -y *.$(uname -p).rpm *.noarch.rpm \
|
|
|| failexit 666 "! $(date) - Failed to install ZFS packages"
|
|
|
|
modprobe zfs
|
|
dmesg |grep ZFS
|
|
|
|
zpool version && \
|
|
logecho "o $(date) + Now you should be able to issue ' zpool import '"
|
|
|
|
logecho "o $(date) + Finished run = $0 $1"
|
|
|
|
exit 0;
|
|
|
|
# Download and install zfs from source code, load module
|
|
# 2021 Dave Bechtel
|
|
|
|
REF:
|
|
https://zfsonlinux.topicbox.com/groups/zfs-discuss/T5e4d6ecb1044b00e
|