You are not logged in.
This could well be a simple misunderstanding on my part but I thought I'd ask anyway.
I'm using DKMS to automatically compile the driver for my TV tuner. This is working perfectly and the drivers are successfully rebuilt each time I upgrade the kernel.
The one issue I have is that the old modules are not deleted during this progress. This means I'm left with a folder in /usr/lib/modules with the old kernel name and a single subfolder containing the drivers. I therefore need to manually delete this folder after an upgrade.
The wiki page implies that "dkms remove" should remove the files unless dkms has lost the information about the previous build. That shouldn't be the case here as I've just been using "sudo pacman -Syu" to upgrade the system each time.
Looking at the dkms man page:
uninstall [module/module-version] [-k kernel/arch] [--all]
Uninstalls an installed module/module-version combo from the kernel/arch passed in the -k option, or the current kernel if the -k option was not passed. Use the --all option in order to unin‐
stall all instances for every kernel at once. After uninstall completion, the driver will be left in the built state. To completely remove a driver, the remove action should be utilized.
This suggests that "dkms uninstall" leaves the built files and "dkms remove" removes them. The dkms hook does indeed run "dkms remove" so it doesn't seem like the files should be left behind.
During the upgrade, I also get messages saying "warning: could not get file information for..." and then the names of the files built by dkms. These warnings don't appear in the pacman log file so I can't copy them here. I'm assuming these warnings appear because the files weren't installed by pacman but, as per comments above, I had assumed dkms would handle the deletion of these files.
Have I misunderstood or do I need to be manually deleting these files each time I upgrade the kernel? If it's the latter, I'm quite comfortable writing my own script to run as hook but I just didn't expect it to be necessary.
Thanks.
In case it's relevant:
Kernel: linux-lts 5.4.69-1
DKMS: dkms 2.8.3-1
TV Tuner module (from AUR): tbsecp3-driver-git-dkms r20200925.214819.3cdeaee-3
Last edited by elParaguayo (2020-10-26 08:09:01)
Offline
I don't know if it's relevant, but I noticed a difference between the tv module package and other packages.
For comparison:
#tbsecp3-driver-git-dkms
cp -r "${srcdir}/tbsecp3-driver"/* "${pkgdir}/usr/src/${_pkgbase}-${pkgver}/" #shiftfs-dkms
install -Dt "${pkgdir}/usr/src/${pkgbase}-${pkgver}" -m644 Makefile shiftfs.c dkms.conf
}So maybe using the command "install" instead of "cp" does the trick.
Offline
diff --git a/PKGBUILD b/PKGBUILD
index 94616aa..9a0988c 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -15,7 +15,7 @@ provides=("${_pkgbase}")
source=('git+https://github.com/AlexanderS/tbsecp3-driver.git'
'dkms.conf')
sha256sums=('SKIP'
- 'e412b417d60d035f467b93751611142c426f68e49542598e7434422e524fd639')
+ 'd07a98c0e5a06a1d6b34a1d8c938a92eea3053d8315338b3c8e68a6eb8d740e0')
pkgver() {
cd "$srcdir/tbsecp3-driver"
diff --git a/dkms.conf b/dkms.conf
index 4d40f67..6da477f 100644
--- a/dkms.conf
+++ b/dkms.conf
@@ -3,70 +3,70 @@ PACKAGE_VERSION="@PKGVER@"
# driver
BUILT_MODULE_NAME[0]="tbsecp3"
-DEST_MODULE_LOCATION[0]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[0]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[1]="saa716x_core"
-DEST_MODULE_LOCATION[1]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[1]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[2]="saa716x_ff"
-DEST_MODULE_LOCATION[2]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[2]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[3]="saa716x_hybrid"
-DEST_MODULE_LOCATION[3]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[3]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[4]="saa716x_tbs-dvb"
-DEST_MODULE_LOCATION[4]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[4]="/kernel/$PACKAGE_NAME"
# dvb-frontends
BUILT_MODULE_NAME[5]=gx1133
-DEST_MODULE_LOCATION[5]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[5]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[6]=gx1503
-DEST_MODULE_LOCATION[6]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[6]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[7]=isl6422
-DEST_MODULE_LOCATION[7]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[7]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[8]=isl6423
-DEST_MODULE_LOCATION[8]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[8]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[9]=mb86a16
-DEST_MODULE_LOCATION[9]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[9]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[10]=mn88436
-DEST_MODULE_LOCATION[10]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[10]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[11]=mtv23x
-DEST_MODULE_LOCATION[11]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[11]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[12]=mxl58x
-DEST_MODULE_LOCATION[12]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[12]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[13]=si2183
-DEST_MODULE_LOCATION[13]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[13]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[14]=stb6100
-DEST_MODULE_LOCATION[14]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[14]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[15]=stid135
-DEST_MODULE_LOCATION[15]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[15]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[16]=stv090x
-DEST_MODULE_LOCATION[16]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[16]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[17]=stv091x
-DEST_MODULE_LOCATION[17]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[17]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[18]=stv6110x
-DEST_MODULE_LOCATION[18]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[18]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[19]=tas2101
-DEST_MODULE_LOCATION[19]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[19]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[20]=tas2971
-DEST_MODULE_LOCATION[20]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[20]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[21]=tda1004x
-DEST_MODULE_LOCATION[21]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[21]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[22]=zl10353
-DEST_MODULE_LOCATION[22]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[22]="/kernel/$PACKAGE_NAME"
# tuners
BUILT_MODULE_NAME[23]=av201x
-DEST_MODULE_LOCATION[23]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[23]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[24]=mxl603
-DEST_MODULE_LOCATION[24]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[24]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[25]=rda5816
-DEST_MODULE_LOCATION[25]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[25]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[26]=stv6120
-DEST_MODULE_LOCATION[26]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[26]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[27]=tda18212
-DEST_MODULE_LOCATION[27]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[27]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[28]=tda827x
-DEST_MODULE_LOCATION[28]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[28]="/kernel/$PACKAGE_NAME"
BUILT_MODULE_NAME[29]=tda8290
-DEST_MODULE_LOCATION[29]="/extra/$PACKAGE_NAME"
+DEST_MODULE_LOCATION[29]="/kernel/$PACKAGE_NAME"
AUTOINSTALL="yes"
REMAKE_INITRD="yes"Does applying the above to the PKGBUILD make a difference?
Offline
Thanks for the reply G3ro.
Unfortunately, I'm pretty sure that's not the issue as that's just to do with the packaging of the source rather than how dkms builds/installs/removes the module.
When dkms installs the driver, it builds the modules and puts the files in /usr/lib/modules/<kernel-version>
However, when the kernel is upgraded, dkms uninstalls the modules for the old kernel before building/installing for the new kernel. The problem I'm having is that the modules for the old kernel are not being deleted.
EDIT: Just seen your reply, loqs. Will test and report back.
Last edited by elParaguayo (2020-10-11 19:10:54)
Offline
@loqs: I've had a chance to look at this again.
I applied your patch but, before building/installing the package, I took a look at what files were remaining from a previous upgrade and got this:
isl6423.ko.xz mb86a16.ko.xz stb6100.ko.xz stv090x.ko.xz stv6110x.ko.xz tda1004x.ko.xz tda18212.ko.xz tda827x.ko.xz tda8290.ko.xz zl10353.ko.xzThis is significantly fewer files than are being installed according to the dkms.conf.
I removed the old package and installed the new one. I then checked what files were installed by dmks and, sure enough, it was more than the above list:
av201x.ko.xz isl6422.ko.xz mn88436.ko.xz mxl603.ko.xz saa716x_ff.ko.xz si2183.ko.xz stv090x.ko.xz stv6120.ko.xz tbsecp3.ko.xz tda827x.ko.xz
gx1133.ko.xz isl6423.ko.xz mtv23x.ko.xz rda5816.ko.xz saa716x_hybrid.ko.xz stb6100.ko.xz stv091x.ko.xz tas2101.ko.xz tda1004x.ko.xz tda8290.ko.xz
gx1503.ko.xz mb86a16.ko.xz mxl58x.ko.xz saa716x_core.ko.xz saa716x_tbs-dvb.ko.xz stid135.ko.xz stv6110x.ko.xz tas2971.ko.xz tda18212.ko.xz zl10353.ko.xzI then ran the upgrade as follows:
$ sudo pacman -Syu
[sudo] password for elpara:
:: Synchronising package databases...
core 130.8 KiB 3.19 MiB/s 00:00 [############################################################################] 100%
extra 1640.1 KiB 11.4 MiB/s 00:00 [############################################################################] 100%
community 5.2 MiB 13.0 MiB/s 00:00 [############################################################################] 100%
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...
Packages (20) firefox-81.0.2-1 freetype2-2.10.3-1 fuse-common-3.10.0-1 glib2-2.66.1-2 imagemagick-7.0.10.34-1 libpulse-13.99.2+11+g05f567086-1 libsecret-0.20.4-1 libxnvctrl-455.28-1 linux-lts-5.4.70-1
linux-lts-headers-5.4.70-1 mariadb-libs-10.5.6-3 nvidia-lts-1:455.28-4 nvidia-settings-455.28-1 nvidia-utils-455.28-1 opencore-amr-0.1.5-5 perl-html-parser-3.75-1 tzdata-2020b-2
xcb-proto-1.14.1-1 xkeyboard-config-2.31-1 xorg-xinit-1.4.1-3
Total Download Size: 260.05 MiB
Total Installed Size: 775.84 MiB
Net Upgrade Size: 5.39 MiB
:: Proceed with installation? [Y/n] y
:: Retrieving packages...
tzdata-2020b-2-x86_64 385.0 KiB 1925 KiB/s 00:00 [############################################################################] 100%
glib2-2.66.1-2-x86_64 2.8 MiB 3.83 MiB/s 00:01 [############################################################################] 100%
libsecret-0.20.4-1-x86_64 238.6 KiB 7.77 MiB/s 00:00 [############################################################################] 100%
linux-lts-5.4.70-1-x86_64 68.4 MiB 10.8 MiB/s 00:06 [############################################################################] 100%
linux-lts-headers-5.4.70-1-x86_64 20.2 MiB 11.7 MiB/s 00:02 [############################################################################] 100%
xcb-proto-1.14.1-1-any 108.8 KiB 5.31 MiB/s 00:00 [############################################################################] 100%
libpulse-13.99.2+11+g05f567086-1-x86_64 396.4 KiB 9.68 MiB/s 00:00 [############################################################################] 100%
freetype2-2.10.3-1-x86_64 498.8 KiB 12.2 MiB/s 00:00 [############################################################################] 100%
opencore-amr-0.1.5-5-x86_64 145.9 KiB 14.3 MiB/s 00:00 [############################################################################] 100%
xkeyboard-config-2.31-1-any 712.7 KiB 13.9 MiB/s 00:00 [############################################################################] 100%
nvidia-utils-455.28-1-x86_64 81.8 MiB 12.3 MiB/s 00:07 [############################################################################] 100%
firefox-81.0.2-1-x86_64 57.7 MiB 12.7 MiB/s 00:05 [############################################################################] 100%
fuse-common-3.10.0-1-x86_64 2.7 KiB 0.00 B/s 00:00 [############################################################################] 100%
imagemagick-7.0.10.34-1-x86_64 2.5 MiB 12.0 MiB/s 00:00 [############################################################################] 100%
libxnvctrl-455.28-1-x86_64 77.1 KiB 0.00 B/s 00:00 [############################################################################] 100%
mariadb-libs-10.5.6-3-x86_64 5.6 MiB 12.7 MiB/s 00:00 [############################################################################] 100%
nvidia-lts-1:455.28-4-x86_64 17.7 MiB 12.6 MiB/s 00:01 [############################################################################] 100%
nvidia-settings-455.28-1-x86_64 784.8 KiB 12.8 MiB/s 00:00 [############################################################################] 100%
perl-html-parser-3.75-1-x86_64 81.3 KiB 3.97 MiB/s 00:00 [############################################################################] 100%
xorg-xinit-1.4.1-3-x86_64 17.3 KiB 1727 KiB/s 00:00 [############################################################################] 100%
(20/20) checking keys in keyring [############################################################################] 100%
(20/20) checking package integrity [############################################################################] 100%
(20/20) loading package files [############################################################################] 100%
(20/20) checking for file conflicts [############################################################################] 100%
(20/20) checking available disk space [############################################################################] 100%
warning: could not get file information for usr/lib/modules/5.4.69-1-lts/kernel/drivers/media/dvb-frontends/isl6423.ko.xz
warning: could not get file information for usr/lib/modules/5.4.69-1-lts/kernel/drivers/media/dvb-frontends/mb86a16.ko.xz
warning: could not get file information for usr/lib/modules/5.4.69-1-lts/kernel/drivers/media/dvb-frontends/stb6100.ko.xz
warning: could not get file information for usr/lib/modules/5.4.69-1-lts/kernel/drivers/media/dvb-frontends/stv090x.ko.xz
warning: could not get file information for usr/lib/modules/5.4.69-1-lts/kernel/drivers/media/dvb-frontends/stv6110x.ko.xz
warning: could not get file information for usr/lib/modules/5.4.69-1-lts/kernel/drivers/media/dvb-frontends/tda1004x.ko.xz
warning: could not get file information for usr/lib/modules/5.4.69-1-lts/kernel/drivers/media/dvb-frontends/zl10353.ko.xz
warning: could not get file information for usr/lib/modules/5.4.69-1-lts/kernel/drivers/media/tuners/tda18212.ko.xz
warning: could not get file information for usr/lib/modules/5.4.69-1-lts/kernel/drivers/media/tuners/tda827x.ko.xz
warning: could not get file information for usr/lib/modules/5.4.69-1-lts/kernel/drivers/media/tuners/tda8290.ko.xz
:: Running pre-transaction hooks...
(1/2) Removing linux initcpios...
(2/2) Remove DKMS modules
==> dkms remove --no-depmod -m tbsecp3-driver-git -v r20200925.214819.3cdeaee -k 5.4.69-1-lts
==> depmod 5.4.69-1-lts
:: Processing package changes...
( 1/20) upgrading tzdata [############################################################################] 100%
( 2/20) upgrading xcb-proto [############################################################################] 100%
( 3/20) upgrading libpulse [############################################################################] 100%
( 4/20) upgrading glib2 [############################################################################] 100%
( 5/20) upgrading freetype2 [############################################################################] 100%
( 6/20) upgrading opencore-amr [############################################################################] 100%
( 7/20) upgrading xkeyboard-config [############################################################################] 100%
( 8/20) upgrading nvidia-utils [############################################################################] 100%
If you run into trouble with CUDA not being available, run nvidia-modprobe first.
( 9/20) upgrading firefox [############################################################################] 100%
(10/20) upgrading fuse-common [############################################################################] 100%
(11/20) upgrading imagemagick [############################################################################] 100%
(12/20) upgrading libsecret [############################################################################] 100%
(13/20) upgrading libxnvctrl [############################################################################] 100%
(14/20) upgrading linux-lts [############################################################################] 100%
(15/20) upgrading linux-lts-headers [############################################################################] 100%
(16/20) upgrading mariadb-libs [############################################################################] 100%
(17/20) upgrading nvidia-lts [############################################################################] 100%
(18/20) upgrading nvidia-settings [############################################################################] 100%
(19/20) upgrading perl-html-parser [############################################################################] 100%
(20/20) upgrading xorg-xinit [############################################################################] 100%
:: Running post-transaction hooks...
( 1/11) Tidying cache: Keep last 3 versions of installed packages...
==> finished: 11 packages removed (disk space saved: 234.06 MiB)
( 2/11) Creating system user accounts...
( 3/11) Reloading system manager configuration...
( 4/11) Arming ConditionNeedsUpdate...
( 5/11) Updating module dependencies...
( 6/11) Install DKMS modules
==> dkms install --no-depmod -m tbsecp3-driver-git -v r20200925.214819.3cdeaee -k 5.4.70-1-lts
==> depmod 5.4.70-1-lts
( 7/11) Update Nvidia module in initcpio
( 8/11) Updating linux initcpios...
==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'default'
-> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts.img
==> Starting build: 5.4.70-1-lts
-> Running build hook: [base]
-> Running build hook: [systemd]
-> Running build hook: [autodetect]
-> Running build hook: [modconf]
-> Running build hook: [block]
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
-> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-lts.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux-lts.preset: 'fallback'
-> -k /boot/vmlinuz-linux-lts -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-lts-fallback.img -S autodetect
==> Starting build: 5.4.70-1-lts
-> Running build hook: [base]
-> Running build hook: [systemd]
-> Running build hook: [modconf]
-> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: wd719x
==> WARNING: Possibly missing firmware for module: aic94xx
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
-> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-lts-fallback.img
==> Image generation successful
( 9/11) Warn about old perl modules
(10/11) Updating icon theme caches...
(11/11) Updating the desktop file MIME type cache...Those warning lines are the names of the files that were not being deleted (but they are in a different directory) so I assumed the directory in /usr/lib/modules for the old kernel would still contain these files. However, it doesn't. The directory was successfully removed.
Before I mark as solved, could you explain why your change works as I'm very confused!
Last edited by elParaguayo (2020-10-13 18:39:35)
Offline
My change was based on:
https://linux.die.net/man/8/dkms
DEST_MODULE_LOCATION[#]=
This directive specifies the destination where a module should be installed to, once compiled. It also is used for finding original_modules. This is a required directive, except as noted below. This directive must start with the text "/kernel" which is in reference to /lib/modules/<kernelversion>/kernel.
If DKMS requires the DEST_MODULE_LOCATION entries has a certain format, I would have expected not using that format to produce a warning or error rather than undefined behavior.
Offline
Not sure how I missed that in the man pages. Thanks for your help and the explanations.
Marking as closed.
Offline
Re-opening this.
Just ran a system upgrade and the old module folder is left behind. Inside it is a single folder ("kernel") which only has the tv tuner folder in it plus the files listed in post #5.
Pacman won't know about these files as they're built/installed by dkms so I'm assuming this is a dkms bug.
I'll post the issue on their github page.
Offline