Anbei die neueste Version des Scripts - funktioniert auch mit Kernel 6.5.x.
Fehler bitte gerne melden, ebenso Ideen zur Verbesserung.
Beim Ausführen treten am Ende einige Warnungen, bzw. ohne KBUILD_MODPOST_WARN=1 Fehler auf (siehe diesen Post).
Das Modul lädt dennoch und funktioniert zumindest bei mir offensichtlich ohne Probleme.
Bash
#!/bin/bash
# ======================================================================
#
# script for building and installing the modules for TTS2-6400 DVB
# cards on openSUSE systems
#
# rev. 0.01 - 20.10.2022 - Michael Hirmke (development@mike.franken.de)
# - first public version
#
# rev. 0.02 - 02.04.2023 - Michael Hirmke (development@mike.franken.de)
# - improved handling of return values
#
# rev. 0.03 - 27.08.2023 - Michael Hirmke (development@mike.franken.de)
# - a few changes for kernel 6.4.x
#
# rev. 0.04 - 28.08.2023 - Michael Hirmke (development@mike.franken.de)
# - new DEBUG parameter
# - kernel version taken from running kernel, if -v isn't provided
#
# rev. 0.05 - 12.10.2023 - Michael Hirmke (development@mike.franken.de)
# - modified questions asked by config for kernel 6.5.x
#
# ======================================================================
fUsage() {
action="$1"
case "$action" in
5) $ECHO "$VERSION"
exit 0
;;
esac
$ECHO
case "$action" in
4) $ECHO "wrong parameter!";;
3) $ECHO "mutual exclusive parameters!";;
2) $ECHO "missing parameter!";;
1) $ECHO "unknown parameter!";;
esac
$ECHO "\tusage:\t$my_name [ -D <level>][ -h][ -v <kver>][ -V]"
$ECHO
$ECHO "\t\t-D <level> debugging level;"
$ECHO "\t\t 0 - no debugging (default);"
$ECHO "\t\t 1 - \"set -x\" activated;"
$ECHO "\t\t 2 - all important commands are prepended by"
$ECHO "\t\t \"$ECHO\";"
$ECHO "\t\t 3 - 1 and 2 combined."
$ECHO "\t\t-h displays this help message."
$ECHO "\t\t-v <kver> kernel version like 5.14.21-150400;"
$ECHO "\t\t if empty, the version of the running kernel"
$ECHO "\t\t is used."
$ECHO "\t\t-V displays version number and date."
$ECHO
exit $action
} # // end fUsage( .. )
VERSION="version 0.04 / 28.08.2023"
LANG=C; export LANG
ECHO="/bin/echo -e"
ECHON="/bin/echo -n"
# just testing
DEBUG=0
TESTEXEC=""
while getopts D:hv:V OPTION # {
do
case "$OPTION" in
D) DEBUG=$OPTARG;;
h) fUsage 0;;
v) KERNELVER=$OPTARG;;
V) fUsage 5;;
*) fUsage 4;;
esac
done # }
shift `expr "$OPTIND" - 1`
[ -z $KERNELVER ] && KERNELVER=$( uname -r | sed -e "s/\-default$//" )
KERNELMAINVER=$( $ECHO "$KERNELVER" | cut -d. -f 1,2 )
case "$DEBUG" in # {
0) ;;
1) set -x ;;
2) TESTEXEC=$ECHO ;;
3)
TESTEXEC=$ECHO
set -x
;;
esac # }
ret=0
# 1. installing kernel source rpms
zypper se -i kernel-source || $TESTEXEC zypper in -y kernel-source
ret=$?
if [ $? -eq 0 ]
then
zypper se -i kernel-devel || $TESTEXEC zypper in -y kernel-devel
ret=$?
fi
# 2. downloading patch
if [ $? -eq 0 ]
then
wget -O /tmp/saa716x-${KERNELMAINVER}.diff \
https://github.com/s-moch/linux-saa716x/compare/v${KERNELMAINVER}...saa716x-${KERNELMAINVER}.diff
ret=$?
fi
# 3. patching kernel
if [ $? -eq 0 ]
then
cd "/usr/src/linux-${KERNELVER}" \
&& $TESTEXEC patch -p1 </tmp/saa716x-${KERNELMAINVER}.diff
ret=$?
fi
# 4. modifying kernel configuration
if [ $ret -eq 0 ]
then
$ECHO "========================================================================"
$ECHO "answer the questions as shown below:"
$ECHO "..."
$ECHO "*"
$ECHO "* Restart config..."
$ECHO "*"
$ECHO "*"
$ECHO "* Support for SAA7160/1/2 family from NXP/Philips"
$ECHO "*"
$ECHO "Support for SAA7160/1/2 family from NXP/Philips (SAA716X_SUPPORT) [N/y/?] (NEW) y"
$ECHO " SAA7160/1/2 based Budget PCIe cards (DVB only) (DVB_SAA716X_BUDGET) [N/m/?] (NEW) n"
$ECHO " SAA7160/1/2 based Hybrid PCIe cards (DVB + Analog) (DVB_SAA716X_HYBRID) [N/m/?] (NEW) n"
$ECHO " SAA7160/1/2 based Full-Featured PCIe cards (DVB_SAA716X_FF) [N/m/?] (NEW) m"
$ECHO "#"
$ECHO "# configuration written to .config"
$ECHO "#"
$ECHO "========================================================================"
$TESTEXEC make oldconfig
ret=$?
fi
# 6. compiling modules
if [ $ret -eq 0 ]
then
$ECHO "Warnings like"
$ECHO "- Module.symvers is missing."
$ECHO "- Skipping BTF generation for <...> due to unavailability of vmlinux"
$ECHO "can be ignored."
# KBUILD_MODPOST_WARN=1 new for kernel > 6.4.x
# (otherwise the build will fail)
$ECHO make scripts prepare modules_prepare \
&& $TESTEXEC make scripts prepare modules_prepare \
&& $ECHO make -C . M=drivers/media/pci/saa716x KBUILD_MODPOST_WARN=1 \
&& $TESTEXEC make -C . M=drivers/media/pci/saa716x KBUILD_MODPOST_WARN=1
ret=$?
fi
# 7. installing modules
if [ $ret -eq 0 ]
then
$ECHO " Modules are installed into"
$ECHO " /lib/modules/${KERNELVER}-default/extra/"
$ECHO " starting with kernel 6.4.x into"
$ECHO " /lib/modules/${KERNELVER}-default/updates/"
$ECHO " (https://www.suse.com/support/kb/doc/?id=000018455)"
$TESTEXEC make -C . M=drivers/media/pci/saa716x modules_install
ret=$?
fi
# 8. generating module list
# (should happen in topic 7, but often fails there)
$TESTEXEC /sbin/depmod -a
exit $ret
# ======================================================================
#
# 2022-2023 - Michael Hirmke (development@mike.franken.de)
#
# ======================================================================
Alles anzeigen
Ciao.
Michael.