On Tue, Dec 19, 2023 at 05:37:31PM +0900, Masahiro Yamada wrote: > On Thu, Dec 7, 2023 at 3:37 AM Lucas De Marchi <lucas.demarchi@xxxxxxxxx> wrote: > > > > On Fri, Nov 10, 2023 at 01:13:53PM +0100, Michal Suchanek wrote: > > >Hello, > > > > > >This is resend of the last patch in the series that adds prefix support > > >to kernel module location together with additional patch for validating > > >the user supplied input to options that are interpreted as directories. > > > > > >Thanks > > > > applied, thanks > > > > Lucas De Marchi > > > > If I understood this correctly, MODULE_DIRECTORY is determined > by "configure --with-module-directory=...", and there is no > way to change it after that. > > > If so, how to work with cross-building? > > Cross-building is typical when building embedded Linux systems. > > > Consider this scenario: > > - Your build machine adopts > MODULE_DIRECTORY=/usr/lib/modules > - The target embedded system adopts > MODULE_DIRECTORY=/lib/modules > > (or vice a versa) > > > > > depmod is used also for cross-building because > it is executed as a part of "make module_install". > > > The counterpart patch set for Kbuild provides > KERNEL_MODULE_DIRECTORY, which only changes > the destination directory to which *.ko are copied. > > You cannot change the directory where the > depmod searches for modules, as it is fixed > at the compile-time of kmod. > > > > > In this case, what we can do is to build another > instance of kmod configured for the target system, > and use it for modules_install: > > 1. In the kmod source directory > ./configure --with=module-directory=/lib/modules > make > > 2. make modules_install INSTALL_MOD_PATH=<staging-dir> > KERNEL_MODULE_DIRECTORY=/lib/modules > DEPMOD=<new-depmod-you-has-just-built> > > > > If you use OpenEmbedded etc., this is what you do > because host tools are built from sources. > > But, should it be required all the time? > Even when the target embedded system uses > busybox-based modprobe instead of kmod? > > > > depmod provides --basedir option, which changes > the prefix part, but there is no way to override > the stem part, MODULE_DIRECTRY. > > In the review of the counter patch set, > I am suggesting an option to override MODULE_DIRECTRY > (let's say --moduledir) at least for depmod. > > (Perhaps modinfo too, as it also supports --basedir) > > > > Then, we can change scripts/depmod.sh so that > Kbuild can propagate KERNEL_MODULE_DIRECTORY > to depmod. > > > if <depmod supports --moduledir>; then > set -- "$@" --moduledir "${KERNEL_MODULE_DIRECTORY}" > fi > > > > Does it make sense? Did this conversation go anywhere? After the upgrade to kmod 33 in Arch Linux, which includes building with the configuration option '--with-module-directory' set to '/usr/lib/modules' [1], building a tarzst-pkg breaks for me, seemingly for the reason noted above. $ make -skj"$(nproc)" ARCH=x86_64 CROSS_COMPILE=x86_64-linux- O=$HOME/tmp/build/linux defconfig tarzst-pkg depmod: ERROR: could not open directory /home/nathan/tmp/build/linux/tar-install/usr/lib/modules/6.11.0-rc4-00019-gb311c1b497e5: No such file or directory depmod: FATAL: could not search modules: No such file or directory $ ls $HOME/tmp/build/linux/tar-install boot lib I don't see how to get around this without an option to override MODULE_DIRECTORY. I guess I'll ask Arch Linux to revert this option for the time being, as it mentions they do not really need it at the moment. [1]: https://gitlab.archlinux.org/archlinux/packaging/packages/kmod/-/commit/0efd732cb78bc0b7851a8367f4dc8e6933f5b99d Cheers, Nathan