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)
엔비디아에서 드라이버를 받았는데,여기.
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.
그 기록에는 뭐라고 적혀 있었나요? 괜찮은,엔비디아 설치 프로그램(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
그래서 여기서 무슨 일이 일어나고 있는지 잘 모르겠지만 일부 모듈 a kmap_types.h
와 a 가 누락된 것 같습니다 drmP.h
. 이것들은 무엇입니까? RHEL 8.6에 대한 정보는 어디서 찾을 수 있나요? 어떻게 설치하나요? 또한 드라이버가 올바르게 구축되고 설치되면 더 이상 모니터가 없어야 한다고 가정합니다 UNCLAIMED
. 통찰력을 얻으려면 미리 준비하세요!
답변1
이는 이 기능이 Redhat 8.6의 kernel-devel 패키지에서 의도적으로 제거되었기 때문입니다.
문제 커널 개발에서 kmap_types.h를 제거하여 RHEL8.6에서 모듈 빌드가 실패합니다.