NVIDIA GPU 드라이버 CentOS 7.x 완벽 설치 및 트러블슈팅 가이드
과거 사내 빅데이터 모니터링 플랫폼의 고도화 작업 중 하나는, 단순한 지표 수집을 넘어 모인 데이터를 기반으로 “장애 예측(Anomaly Detection)” 머신러닝 모델을 돌리는 것이었습니다.
이를 위해 R&D 데이터 분석가들에게 V100, T4 같은 강력한 GPU가 꽂혀 있는 베어메탈(Bare-metal) CentOS 7.x 엣지 서버를 할당해 줘야 했습니다. 클라우드 환경이라면 클릭 몇 번에 끝나겠지만, 보안이 엄격한 온프레미스(On-premise) 환경에서는 인프라 엔지니어가 직접 마우스도 없는 시커먼 터미널 화면에서 NVIDIA X Server 의존성과 싸워가며 .run 리눅스 네이티브 드라이버 패키지를 밀어 넣어야만 합니다.
그 과정에서 가장 악명 높았던 훼방꾼인 Nouveau 오픈소스 드라이버와의 충돌을 우회하는 정석 절차를 정리했습니다.
1. 사전 준비: GPU 물리 모델 및 커널 확인
먼저 OS가 물리적인 고가(高價)의 GPU 카드를 잘 물고 있는지, 커널(Kernel) 버전에 맞는 소스 코드가 있는지 검증해야 합니다.
$ lspci | grep -i nvidia
# 출력 예: 3b:00.0 3D controller: NVIDIA Corporation GV100 [Tesla V100S PCIe 32GB] (rev a1)
# 2. C 컴파일러 및 리눅스 커널 헤더(소스코드)를 OS의 릴리즈와 100% 동일한 버전으로 덮어쓰기
$ yum -y install gcc gcc-c++ make binutils libtool autoconf automake patch dkms
$ yum -y install kernel-devel-$(uname -r) kernel-headers-$(uname -r)(주의: 커널 헤더 버전과 현재 uname -r 버전이 소수점 하나라도 다르면 설치 스크립트가 커널 모듈(ko)을 빌드하다가 장렬히 실패합니다.)
2. 최대 난관: Nouveau 오픈소스 드라이버 강제 비활성화
CentOS 7을 설치하면 OS가 화면 출력을 위해 기본적으로 잡아두는 nouveau라는 그래픽 드라이버 모듈이 메모리에 올라가 있습니다. NVIDIA 공식 드라이버 패키지가 설치되려면 이 녀석을 커널 레벨에서 멱살을 잡고 끌어내려야 합니다.
[방법: 부트로더 및 블랙리스트 동시 차단]
-
/etc/default/grub파일의GRUB_CMDLINE_LINUX뒷부분에 커널 파라미터를 우겨 넣습니다.rd.driver.blacklist=nouveau nouveau.modeset=0 -
그 다음 추가로 모듈 로드 자체를 금지하는
.conf파일을 생성합니다.
$ vi /etc/modprobe.d/nvidia-installer-disable-nouveau.conf
# 아래 두 줄 텍스트 삽입 후 저장
blacklist nouveau
options nouveau modeset=0- 부트 이미지를 갱신하고 서버를 깔끔하게 재부팅(
reboot) 해줍니다. 재부팅 후lsmod | grep nouveau를 쳤을 때 아무것도 안 나오면 성공입니다.
3. 공식 드라이버 파일(.run) 텍스트 모드 빌드
NVIDIA 홈페이지에서 다운받아 온 거대한 리눅스 셸 파일(NVIDIA-Linux-x86_64-xxx.xx.run)을 USB나 sftp로 밀어넣고 실행 권한을 줍니다. X11 GUI 윈도우 환경이 살아있다면 충돌이 나므로 텍스트 멀티유저 타겟(Runlevel 3) 환경에서 스크립트를 돌려야 합니다.
# 1. 실행 권한 부여
$ chmod +x NVIDIA-Linux-x86_64-410.104.run
# 2. 강제 텍스트 모드 인스톨 (터미널 GUI 창이 뜨면 Accept -> Yes만 계속 갈기면 됩니다)
$ ./NVIDIA-Linux-x86_64-410.104.run설치가 끝난 뒤, 대망의 nvidia-smi 명령어를 쳤을 때 GPU의 메모리와 온도가 표 형태의 박스로 영롱하게 그려지는 것을 보게 된다면, 하둡/AI 엔지니어로서 하나의 거대한 산을 또 넘은 것입니다.