警告:modules_install:缺少'System.map'文件。跳过depmod。

13

我正在尝试使用depmodmodprobe工具插入一个内核模块,以解决任何依赖关系。当我构建模块时,它会抛出“警告:modules_install:缺少'System.map'文件。跳过depmod。

后来,当我尝试执行modprobe时,它会抛出一个错误,指出“modprobe:致命错误:目录/lib/modules/4.19.58-v7+中找不到i2c_eeprom_client.ko模块。”

以下是我正在使用的make文件:

obj-m += i2c_eeprom_client.o
KDIR = /lib/modules/$(shell uname -r)/build

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
    make -C $(KDIR) M=$(PWD) modules_install

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

以下是构建的输出结果:

make -C /lib/modules/4.19.58-v7+/build M=/home/pi/work/eeprom modules
make[1]: Entering directory '/usr/src/linux-headers-4.19.58-v7+'
  Building modules, stage 2.   
  MODPOST 1 modules
make[1]: Leaving directory '/usr/src/linux-headers-4.19.58-v7+'
make -C /lib/modules/4.19.58-v7+/build M=/home/pi/work/eeprom 
modules_install  
make[1]: Entering directory '/usr/src/linux-headers-4.19.58-v7+'
  INSTALL /home/pi/work/eeprom/i2c_eeprom_client.ko
  DEPMOD  4.19.58-v7+
Warning: modules_install: missing 'System.map' file. Skipping depmod.
make[1]: Leaving directory '/usr/src/linux-headers-4.19.58-v7+'

我该如何解决这个问题?请帮忙。

平台:树莓派3b+,Raspbian - Linux 4.19.58-v7+。


顺便提一下,在同一个 make 目标中执行安装步骤和构建步骤是一个不好的想法,因为通常需要 root 权限来执行安装步骤,但通常不需要这些权限来执行构建步骤。 - Ian Abbott
谢谢!那么我该如何解决这个问题呢?我已经尝试在构建后进行操作,下面是我收到的错误信息。make: 进入目录 '/usr/src/linux-headers-4.19.58-v7+'cp: 无法获取文件状态信息'./modules.order': 没有那个文件或目录make: *** [Makefile:1253: modinst] 错误 1make: 离开目录 '/usr/src/linux-headers-4.19.58-v7+' - user11875340
1个回答

8

在执行modules_install步骤后,您可以运行depmod。另外,最好将安装与构建分开以避免必须使用root特权进行构建:

obj-m += i2c_eeprom_client.o

# Default to running kernel's build directory if KDIR not set externally
KDIR ?= "/lib/modules/$(shell uname -r)/build"

all:
    $(MAKE) -C "$(KDIR)" M="$(CURDIR)" modules

install:
    $(MAKE) -C "$(KDIR)" M="$(CURDIR)" modules_install
    depmod -A

clean:
    $(MAKE) -C "$(KDIR)" M="$(CURDIR)" clean

调用方式:

$ make
$ make install

我完全不知道我刚才做了什么。你能给我一点更多的背景信息,告诉我当我修改了我的 Makefile 后发生了什么吗?我使用 Vagrant 的 generic/ubuntu2204 创建了一个全新的 libvirt 虚拟机,并在 kmod 项目中修改了这个 make 文件以包含 depmod -A,结果它起作用了。https://github.com/orhun/kmon - activedecay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接