#1567 PR merged: Fix copying kernel modules when module aliases are present

Labels: enhancement, bug, fixed / solved / done

OliverO2 opened issue at 2017-11-07 18:15:

ReaR fails to find kernel modules, where aliases are present. For example, the nVidia video driver modules on Ubuntu 16.04 LTS use aliases like this: nvidia_uvm -> nvidia_384_uvm, making rear -v mkrescue produce error messages like this:

Copying only currently loaded kernel modules (MODULES contains 'loaded_modules')
ERROR: nvidia_uvm loaded but no module file?
Aborting due to an error[...]

This PR fixes the module lookup code. It uses modprobe to check for aliased modules. If the modprobe version installed does not support alias resolution via -R, the new code will silently fall back to the old behavior (i.e. no alias resolution).

jsmeix commented at 2017-11-08 11:02:

@OliverO2
many thanks for your contribution - and
even more thanks for your perfect explanation
what the issue is about and how you fixed it
so that it is a pleasure for me to "just merge" it.

And on top of that now I even got an example
why I had implemented tests like

            # Can it really happen that a module exists (which is tested above) but 'modinfo -F filename' cannot show its filename?
            # To be on the safe side there is a test even for for such a possibly weird error here:
            module_files="$( modinfo_filename $module || Error "$module exists but no module file?" )"

which nicely proves that tests even for possibly weird errors
(that the developer could not imagine to actually happen)
are "the right way" to implement things.

jsmeix commented at 2017-11-08 11:35:

Via
https://github.com/rear/rear/commit/1b3d0e89401e351ae1c04f49de263fa15848522f
I explained now how it can happen that 'modinfo -F filename'
cannot show a module filename (when the modprobe command
does not support resolving module aliases via '-R').

OliverO2 commented at 2017-11-08 12:04:

@jsmeix Thank you for your kind words and the quick merge!


[Export of Github issue for rear/rear.]