🔧 Engineering/📁 Infra & System

오픈 커널 모듈

만두개 2026. 5. 22. 15:02
반응형
SMALL

블랙웰 아키텍처 이후 모델은 nvidia-smi 명령어를 쳤을 때, no device found 같이 gpu가 보이지 않고 찾을 수 없다고 나온다면 원인은 두가지다. HW 불량 or 커널 모듈 문제
 
1. 여기서 먼저 첫 번째로 lspci 명령어로 확인

lspci | grep -i nvidia

 
lspci에서 GPU가 확인되는데 nvidia-smi에서 No devices found가 뜨는 경우, Blackwell 아키텍처는 proprietary 드라이버가 지원되지 않기 때문에 원인이 거의 확정 됨. 따라서 별도 진단 없이 바로 오픈 커널 모듈 설치 플로우로 진행.
이 때, lib 버전 불일치 오류가 떴음.
 
open vs proprietary(일반) 차이
오픈은 커널 소스코드를 공개 하고 일반은 비공개하여 바이너리에만 배포함.
블랙웰 아키텍처 부터는 proprietary를 지원하지 않고 open만 지원하고 있음.
 
2. 그 다음 2번째로 확인해야하는 게 lsmod 로 로드 되었는지 확인

lsmod | grep nvidia
# 출력 예시
# nvidia              56442880  0
# nvidia_uvm           8192     0
# nvidia_modeset       1286144  0

 
3. 그리고 3번째로 modinfo 로 오픈 모듈인지 확인하면 됨.

modinfo nvidia | grep -E "license|filename"

# Proprietary (기존 proprietary)
# license: GPL and additional rights  ← open kernel module

# /lib/modules/.../kernel/drivers/video/nvidia.ko      ← proprietary
# /lib/modules/.../updates/dkms/nvidia.ko              ← open (dkms 설치 시)

여기서 아예 안나오면 모듈이 미설치 된거
 
4. 오픈 커널 모듈 설치를 위해서 드라이버 먼저 제거

apt purge '*nvidia*버전*'

 
5. 그 다음 현재 모듈에 있는 상태 확인을 함. 그리고 언로드 해야함.

lsmod | grep -i nvidia        # 현재 로드 상태 확인

rmmod nvidia_uvm              # 의존 모듈 먼저(보이는 거 다 제거)
      nvidia_drm           
      nvidia_peermem        
      nvidia_modeset

rmmod nvidia                  # 본체 제거

rmmod 말고 modprobe -r 도 모듈 언로드.
** 차이는 rmmod는 직접 지정해서 제거하고 modprobe -r은 의존 모듈까지 같이 제거

본체인 nvidia 먼저 제거해도 의존 모듈때문에 어차피 안지워짐.
 
어떤 프로세스가 해당 모듈을 사용하는지 

lsof /dev/nvidia*             # 어떤 프로세스가 GPU 붙잡고 있는지 확인

→ 해당 프로세스 확인 / reboot
 
6. 설치 가능한 버전이 뭔지 cache로 확인

apt-cache policy nvidia-driver-580-server-open
# 설치 가능한 버전, 리포 출처 확인용

 
7. 오픈 드라이버 + 필수 패키지 설치

apt install nvidia-driver-580-server-open \
            nvidia-fabricmanager-580 \
            libnvidia-nscq-580

오픈 커널 모듈 드라이버 본체랑 nvswitch 연결 관리하는 패브릭매니저랑 nvlink 토폴로지쿼리 라이브러리 nscq 다 설치.
 
8. 그리고 이제 다시 확인

nvidia-smi                             # GPU 인식 확인
systemctl status nvidia-fabricmanager  # NVSwitch 서비스
systemctl status nvidia-persistenced   # 퍼시스턴스 데몬

요기서 enable 이 아니라 disabled 뜨면 조치해야함

systemctl enable nvidia-fabricmanager
systemctl start nvidia-fabricmanager

systemctl enable nvidia-persistenced
systemctl start nvidia-persistenced

-- enable 은 부팅 시 자동 시작 등록 하는 거 / start는 당장 실행하는 거
 
nvsm/dcgm 에서도 확인

dcgmi nvlink -s 
apt list | grep -i nvsm

요기서 안되면 패키지가 없음 --> 리포 문제임.
그러면 sources.list.d 에서 소스로 받을 수 있음.

cd /etc/apt/sources.list.d/

mv dgx.sources.bak dgx.sources    
# 백업된 DGX 리포 복원 -> 이건 트러블 슈팅용으로 안보이게 잠깐 해둔거임.
# 원래는 DGX 는 보통 있고, HGX는 Nvidia repository 활성화로 curl로 다운로드 하면 됨.

apt update

nvsm 패키지 보이고 이제 dcgmi 여기서 안된거면 datacenter라는 것도 확인해야함.

apt list | grep -i datacenter      # datacenter-gpu-manager 패키지 확인

여기서 없으면

nvidia-smi                       # CUDA Version 확인
apt install datacenter-gpu-manager-4-cuda13   # 확인한 버전으로 설치

nvidia-smi 에서 확인한 쿠다 버전을 그대로 설치
 
9. 설치 후 enable/start 또 따로 해줘야함.

systemctl enable nvidia-dcgm
systemctl start nvidia-dcgm
systemctl status nvidia-dcgm

 
10. 다 하고 난 뒤 확인

dcgmi discovery -l        # GPU 전체 목록 확인
dcgmi nvlink -s           # NVLink 상태
nvsm show health          # 전체 시스템 헬스
반응형
LIST