dkmsを使用してrhel 8.6にNvidiaドライバをインストールしましたが、ビルド時にasm / kmap_types.hおよびdrm / drmP.hエラーが発生する

dkmsを使用してrhel 8.6にNvidiaドライバをインストールしましたが、ビルド時にasm / kmap_types.hおよびdrm / drmP.hエラーが発生する

Rhel 8.6 Lenovo p15にT1000 Quadro用のnvidiaドライバをインストールしようとしています。ところで、ドライバをビルドしてインストールしようとしたときにエラーが発生しました。

システムメッセージ?

root:Downloads# hostnamectl | grep Kernel
            Kernel: Linux 4.18.0-372.9.1.el8.x86_64
root:Downloads# lshw -c video
  *-display UNCLAIMED       
       description: VGA compatible controller
       product: TU117GLM [Quadro T1000 Mobile]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:01:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list
       configuration: latency=0
       resources: memory:ad000000-adffffff memory:80000000-8fffffff memory:90000000-91ffffff ioport:3000(size=128) memory:ae080000-ae0fffff
  *-display
       description: VGA compatible controller
       product: CometLake-H GT2 [UHD Graphics]
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       logical name: /dev/fb0
       version: 05
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm vga_controller bus_master cap_list fb
       configuration: depth=32 driver=i915 latency=0 mode=3840x2160 resolution=3840,2160 visual=truecolor xres=3840 yres=2160
       resources: iomemory:600-5ff iomemory:400-3ff irq:163 memory:6040000000-6040ffffff memory:4000000000-400fffffff ioport:4000(size=64) memory:c0000-dffff
root:Downloads# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.6 (Ootpa)

Nvidiaからドライバーを受け取りましたが、ここ

root:Downloads# ls -l | grep NVIDIA
-rwxr-xr-x.  1 brad brad 110600229 May 29 22:22 NVIDIA-Linux-x86_64-430.26.run

実行スクリプトを実行すると、次のDKMSステップが表示されます。

  ERROR: Failed to run `/sbin/dkms build -m nvidia -v 430.26 -k 4.18.0-372.9.1.el8.x86_64`:
         Building module:       
         cleaning build area...                                                                         
         'make' -j12 NV_EXCLUDE_BUILD_MODULES='' KERNEL_UNAME=4.18.0-372.9.1.el8.x86_64
         IGNORE_CC_MISMATCH='' modules....(bad exit status: 2)                                          
         Error! Bad return status for module build on kernel: 4.18.0-372.9.1.el8.x86_64 (x86_64)
         Consult /var/lib/dkms/nvidia/430.26/build/make.log for more information.

makeログは何を言いますか? これ(ペーストビン)そして以下の例です。

make[3]: *** [/usr/src/kernels/4.18.0-372.9.1.el8.x86_64/scripts/Makefile.build:315: /var/lib/dkms/nvidia/430.26/build/nvidia/nv-mmap.o] Error 1
make[3]: *** [/usr/src/kernels/4.18.0-372.9.1.el8.x86_64/scripts/Makefile.build:315: /var/lib/dkms/nvidia/430.26/build/nvidia/nv-i2c.o] Error 1
make[3]: *** [/usr/src/kernels/4.18.0-372.9.1.el8.x86_64/scripts/Makefile.build:315: /var/lib/dkms/nvidia/430.26/build/nvidia/nv-mempool.o] Error 1
In file included from /var/lib/dkms/nvidia/430.26/build/nvidia/nv-p2p.c:15:
/var/lib/dkms/nvidia/430.26/build/common/inc/nv-linux.h:118:10: fatal error: asm/kmap_types.h: No such file or directory
 #include <asm/kmap_types.h>         /* page table entry lookup          */
          ^~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [/usr/src/kernels/4.18.0-372.9.1.el8.x86_64/scripts/Makefile.build:315: /var/lib/dkms/nvidia/430.26/build/nvidia/nv-p2p.o] Error 1
make[2]: *** [/usr/src/kernels/4.18.0-372.9.1.el8.x86_64/Makefile:1577: _module_/var/lib/dkms/nvidia/430.26/build] Error 2
make[2]: Leaving directory '/usr/src/kernels/4.18.0-372.9.1.el8.x86_64'
make[1]: *** [Makefile:157: sub-make] Error 2
make[1]: Leaving directory '/usr/src/kernels/4.18.0-372.9.1.el8.x86_64'
make: *** [Makefile:81: modules] Error 2

dkmsを使ってインストールしようとしないとどうなりますか?まあ、そうしたいのですが…

  ERROR: An error occurred while performing the step: "Building kernel modules". See
         /var/log/nvidia-installer.log for details.

そして

  ERROR: An error occurred while performing the step: "Checking to see whether the nvidia kernel module
         was successfully built". See /var/log/nvidia-installer.log for details.

そしてもちろん

  ERROR: The nvidia kernel module was not created.

...

  ERROR: Installation has failed.  Please see the file '/var/log/nvidia-installer.log' for details.     
         You may find suggestions on fixing installation problems in the README available on the Linux  
         driver download page at www.nvidia.com.

その記録には何と書かれていましたか?まともな、NVIDIAインストーラ(pastebin)そしてサンプル。

   make[3]: *** [/usr/src/kernels/4.18.0-372.9.1.el8.x86_64/scripts/Makefile.build:316: /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia/nv-instance.o] Error 1
     CC [M]  /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia/nv-procfs.o
   In file included from /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia/nv-acpi.c:15:
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/common/inc/nv-linux.h:118:10: fatal error: asm/kmap_types.h: No such file or directory
    #include <asm/kmap_types.h>         /* page table entry lookup          */
             ^~~~~~~~~~~~~~~~~~
   compilation terminated.
   make[3]: *** [/usr/src/kernels/4.18.0-372.9.1.el8.x86_64/scripts/Makefile.build:316: /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-uvm/uvm8_fault_buffer_flush_test.o] Error 1
     CC [M]  /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-modeset.o
   In file included from /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-fb.c:29:
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-fb.h:30:10: fatal error: drm/drmP.h: No such file or directory
    #include <drm/drmP.h>
             ^~~~~~~~~~~~
   compilation terminated.
   make[3]: *** [/usr/src/kernels/4.18.0-372.9.1.el8.x86_64/scripts/Makefile.build:316: /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-uvm/uvm8_peer_identity_mappings_test.o] Error 1
   make[3]: *** [/usr/src/kernels/4.18.0-372.9.1.el8.x86_64/scripts/Makefile.build:316: /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-helper.o] Error 1
     CC [M]  /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.o
   In file included from /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.c:27:
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h:33:30: error: field 'base' has incomplete type
        struct nv_drm_gem_object base;
                                 ^~~~
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h:37:5: error: unknown type name 'bool'
        bool dumb_buffer;
        ^~~~
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h: In function 'to_nv_nvkms_memory':
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h:46:19: error: 'NULL' undeclared (first use in this function)
        if (nv_gem != NULL) {
                      ^~~~
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h:46:19: note: 'NULL' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'?
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h:31:1:
   +#include <stddef.h>
    
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h:46:19:
        if (nv_gem != NULL) {
                      ^~~~
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h:46:19: note: each undeclared identifier is reported only once for each function it appears in
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h:47:16: error: implicit declaration of function 'container_of' [-Werror=implicit-function-declaration]
            return container_of(nv_gem, struct nv_drm_gem_nvkms_memory, base);
                   ^~~~~~~~~~~~
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h:47:37: error: expected expression before 'struct'
            return container_of(nv_gem, struct nv_drm_gem_nvkms_memory, base);
                                        ^~~~~~
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h: In function 'to_nv_nvkms_memory_const':
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h:56:19: error: 'NULL' undeclared (first use in this function)
        if (nv_gem != NULL) {
                      ^~~~
   /tmp/selfgz30846/NVIDIA-Linux-x86_64-430.26/kernel/nvidia-drm/nvidia-drm-gem-nvkms-memory.h:56:19: note: 'NULL' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'?

最後に、あなたのNvidiaドライバにどのような地位があるとしたらどうなりますか?

root:Downloads# nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

dkmはどうですか?

root:Downloads# dkms status
nvidia/430.26: added

だからここで何が起こっているのかわかりませんが、いくつかのモジュールakmap_types.hとaがありませんdrmP.h。これらは何ですか? RHEL 8.6に関する情報はどこにありますか?どのようにインストールしますか?また、ドライバーが正しく構築されインストールされたら、モニターがもう存在しないことを前提としていますUNCLAIMED。洞察力を得るために事前に準備してください!

ベストアンサー1

これは、この機能がRedhat 8.6のkernel-develパッケージから意図的に削除されたためです。

問題 カーネル開発から kmap_types.h を削除すると、RHEL8.6 でモジュールのビルドが失敗する。

おすすめ記事