Even,
Looks like you are missing the “System.map” file, as your message hinted.
ChatGPT gives some suggestions as below:
It looks like you're encountering an issue where the `System.map` file is missing during the kernel module installation. The `System.map` file is a key component for kernel debugging and the `depmod` utility,
which is responsible for managing module dependencies, relies on it to create the necessary module dependency files.
Here’s a breakdown of what's going on and how to fix it:
### What’s Happening?
- **Warning**: The kernel installation process is not able to find the `System.map` file. This file typically resides in the `/boot/` directory and contains a map of kernel symbols (i.e., the addresses of
kernel functions and variables). Without it, `depmod` cannot properly process the modules.
### Steps to Resolve:
1. **Verify if `System.map` exists**:
Check if the `System.map` file exists in the `/boot/` directory for your kernel version. You can use:
```bash
ls /boot | grep System.map
```
It should show something like `System.map-6.1.0-30-rt-amd64`. If it doesn’t appear, it could mean that the file wasn’t generated during the kernel installation.
2. **Rebuild the `System.map` file**:
If the file is missing, you can rebuild it using `make` from the kernel source directory, assuming you have the kernel source for `6.1.0-30-rt-amd64` installed. To do this:
- Navigate to the directory where the kernel source is located.
- Run the following:
```bash
make modules_prepare
```
This command prepares the kernel source tree for module compilation and will also regenerate the `System.map` file.
3. **Reinstall or Rebuild the Kernel**:
In some cases, reinstalling or rebuilding the kernel might regenerate the necessary files. You can reinstall the kernel package or rebuild it using the package manager, for example, with `apt` on Debian-based
systems:
```bash
sudo apt-get install --reinstall linux-image-6.1.0-30-rt-amd64
```
4. **Manually Generate the `System.map`**:
If you have the kernel binary (`vmlinuz-6.1.0-30-rt-amd64`), you can manually generate the `System.map` using the following:
```bash
nm /boot/vmlinuz-6.1.0-30-rt-amd64 > /boot/System.map-6.1.0-30-rt-amd64
```
This will create the `System.map` file based on the symbols in the kernel image.
5. **Run `depmod` Manually**:
After fixing the missing `System.map` file, you may want to run `depmod` manually to rebuild the module dependencies:
```bash
sudo depmod -a
```
6. **Check Kernel Headers**:
Ensure the kernel headers are installed, as these are required for building modules:
```bash
sudo apt-get install linux-headers-$(uname -r)
```
### Final Check:
Once you’ve taken these steps, check again if the warning goes away. You should now be able to install the PCI kernel module without issues.
Let me know if this helps or if you're seeing any other errors!
From:
Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Daykin, Evan via Tech-talk <tech-talk at aps.anl.gov>
Date: Wednesday, January 29, 2025 at 9:17 AM
To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: MRF kernel modules not seeing hardware
Hello,
On a new linux kernel 6.1.0-30-rt-amd64 installation, I am trying to install the mrfioc2 PCI kernel module by running the following:
sudo make KERNELDIR=/lib/modules/$(uname -r)/build modules_install
make -C /lib/modules/6.1.0-30-rt-amd64/build DRV_VERSION='3' M=/home/daykin/git/mrfioc2/mrmShared/linux modules_install
make[1]: Entering directory '/usr/src/linux-headers-6.1.0-30-rt-amd64'
INSTALL /lib/modules/6.1.0-30-rt-amd64/extra/mrf.ko
DEPMOD /lib/modules/6.1.0-30-rt-amd64
Warning: modules_install: missing 'System.map' file. Skipping depmod.
make[1]: Leaving directory '/usr/src/linux-headers-6.1.0-30-rt-amd64'
depmod -a && modprobe: <no output>
lsmod|grep mrf
mrf 24576 0
uio 28672 1 mrf
parport 73728 1 mrf
cat /proc/devices
Character devices:
1 mem
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
7 vcs
10 misc
13 input
29 fb
116 alsa
128 ptm
136 pts
153 spi
180 usb
189 usb_device
226 drm
238 uio
239 aux
240 cec
241 lirc
242 ipmidev
243 watchdog
244 mei
245 nvme-generic
246 nvme
247 cxl
248 bsg
249 ptp
250 pps
251 rtc
252 dax
253 tpm
254 gpiochip
Block devices:
7 loop
254 device-mapper
259 blkext
sudo dmesg|grep mrf
[ 508.671574] mrf: loading out-of-tree module taints kernel.
[ 508.671603] mrf: module verification failed: signature and/or required key missing - tainting kernel
I have also tried uninstalling the mrfioc2 version and installing Jukka’s driver (https://github.com/jpietari/mrf-linux-driver)
after some small modifications for the deprecation of HAS_UNLOCKED_IOCTL and ioremap_nocache, the module builds successfully but the module_load script also indicates it doesn’t see any EVGs/EVRs.
In both cases, the device files /dev/uio* or /dev/era* are not installed, and the output of lspci is as follows:
sudo lspci -vv -nn -s 07:0f.0
07:0f.0 Signal processing controller [1180]: Micro-Research Finland Oy Device [1a3e:150c] (rev 01)
Subsystem: Micro-Research Finland Oy Device [1a3e:150c]
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=slow >TAbort+ <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 255
IOMMU group: 15
Region 0: Memory at a1000000 (32-bit, non-prefetchable) [disabled] [size=1M]
Capabilities: [40] Null
sudo lspci -vv -nn -s 07:0e.0
07:0e.0 Signal processing controller [1180]: Micro-Research Finland Oy Device [1a3e:250c] (rev 01)
Subsystem: Micro-Research Finland Oy Device [1a3e:250c]
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=slow >TAbort+ <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 255
IOMMU group: 15
Region 0: Memory at a1100000 (32-bit, non-prefetchable) [disabled] [size=1M]
Capabilities: [40] Null
I’ve tried with multiple cards, including some known to be working on older installations and hardware. Is there something I’m missing?
Thanks,
Evan