
A user encounters “permission denied” errors when running GPU-accelerated containers on a Secure Boot-enabled system.
What resolves this?
- A. Disable SELinux to relax unnecessary security policies.
- B. Reinstall Docker without the NVIDIA runtime.
- C. Enroll the MOK and sign NVIDIA kernel modules.
- D. Run Docker with sudo for elevated privileges.
보안 부팅이 활성화된 시스템에서 GPU 가속 컨테이너를 실행할 때 "권한 거부" 오류가 발생합니다.
이 문제를 해결하려면 어떻게 해야 할까요?
- A. 불필요한 보안 정책을 완화하려면 SELinux를 비활성화하십시오.
- B. NVIDIA 런타임 없이 Docker를 다시 설치합니다.
- C. MOK를 등록하고 NVIDIA 커널 모듈에 서명합니다.
- D. 관리자 권한으로 Docker를 실행하려면 sudo 명령어를 사용하십시오.
정답은 C. Enroll the MOK and sign NVIDIA kernel modules 입니다. ✅
이 문제의 핵심은 Secure Boot가 켜진 Linux에서는 신뢰되지 않은(서명되지 않은) 커널 모듈을 로드하지 않는다는 점입니다. NVIDIA GPU 컨테이너가 동작하려면 호스트의 NVIDIA 커널 모듈이 정상적으로 로드되어야 하는데, Secure Boot 환경에서 모듈 서명이 제대로 되어 있지 않으면 GPU 접근이 실패할 수 있습니다. Ubuntu 공식 문서도 Secure Boot에서는 커널 모듈이 검증되어야 하며, 사용자/DKMS 모듈은 MOK를 등록하고 해당 키로 서명해야 로드될 수 있다고 설명합니다. 우분투 문서
문제를 쉽게 해석하면
문제는:
Secure Boot가 켜져 있는 서버에서 GPU 컨테이너를 실행했는데 permission denied 오류가 발생했다. 무엇을 해야 하는가?
라고 묻고 있습니다.
흐름은 이렇게 이해하면 됩니다.
Secure Boot ON
↓
커널 모듈 서명 검사
↓
NVIDIA 모듈이 신뢰되지 않음
↓
nvidia 모듈 로드 실패
↓
GPU 접근 실패
↓
GPU Container 실행 문제
그래서 해결 방향은:
MOK 등록
+
NVIDIA Kernel Module 서명
입니다.
MOK가 뭔가요?
MOK = Machine Owner Key
쉽게 말하면:
“이 키로 서명된 커널 모듈은 내가 신뢰하겠다”라고 Secure Boot에 등록하는 키
입니다.
예를 들어 NVIDIA DKMS 모듈을 직접 빌드했다고 해보겠습니다.
nvidia.ko
nvidia_uvm.ko
nvidia_modeset.ko
Secure Boot가 켜져 있으면 단순히 모듈 파일이 있다고 해서 바로 로드할 수 없습니다.
NVIDIA Kernel Module
↓
MOK로 서명
↓
MOK를 Secure Boot에 등록
↓
Kernel이 신뢰
↓
Module Load 가능
Ubuntu에서도 Secure Boot 상태에서는 unsigned module의 insmod나 modprobe가 실패한다고 명시하고 있습니다. 우분투 문서
✅ C가 정답인 이유
보기 C:
Enroll the MOK and sign NVIDIA kernel modules.
정확히 문제 원인을 해결합니다.
개념적으로:
Secure Boot
↓
"이 NVIDIA 모듈 믿어도 돼?"
↓
MOK 등록
↓
NVIDIA module signature 확인
↓
신뢰됨
↓
nvidia module 로드
↓
GPU Container 정상 접근
따라서 C가 정답입니다.
❌ A. SELinux 비활성화
Disable SELinux
이건 헷갈릴 수 있습니다.
실제로 NVIDIA Container Toolkit에서는 SELinux 때문에:
Failed to initialize NVML: Insufficient Permissions
같은 오류가 발생할 수 있습니다. NVIDIA도 SELinux 정책과 관련된 별도의 해결 방법을 문서화하고 있습니다. NVIDIA Docs
하지만 이 문제에는 중요한 조건이 있습니다.
Secure Boot-enabled system
즉 시험 출제자는 Secure Boot → Kernel Module Signing을 묻고 있습니다.
따라서 SELinux를 통째로 끄는 A는 적절하지 않습니다.
TIP. permission denied만 보고 SELinux를 고르면 안 됩니다. Secure Boot가 문제에 명시되면 먼저 module signing을 생각하세요.
❌ B. NVIDIA runtime 없이 Docker 재설치
Docker
↓
NVIDIA Container Toolkit / Runtime
↓
NVIDIA Driver
↓
GPU
GPU Container를 사용하려면 오히려 NVIDIA Container Toolkit/runtime이 필요합니다.
NVIDIA runtime을 제거한다고 Secure Boot 문제가 해결되지 않습니다.
❌ D. sudo로 Docker 실행
이것도 꽤 그럴듯합니다.
sudo docker run ...
하면 일반 사용자 Docker 권한 문제는 해결할 수 있습니다.
하지만 이번 문제의 문제점은 Linux 사용자 권한이 아니라 Secure Boot의 커널 모듈 신뢰 문제입니다.
root로 실행하더라도 Secure Boot가:
"이 kernel module은 서명되지 않았으니 로드하지 않겠다."
라고 판단하면 해결되지 않습니다.
sudo
↓
Linux 사용자 권한 상승
Secure Boot
↓
Kernel Module 신뢰 검증
서로 다른 문제입니다.
🎯 시험에서는 이렇게 연결하세요
문제에서:
Secure Boot
가 나오면 바로:
Secure Boot
↓
Signed Kernel Module
↓
MOK
를 떠올리세요.
그리고 NVIDIA가 나오면:
NVIDIA Driver
↓
NVIDIA Kernel Module
↓
MOK 서명 필요
입니다.
한 줄 암기
Secure Boot + NVIDIA Driver 문제 → MOK 등록 + NVIDIA Kernel Module 서명
Question 정리
| A | ❌ | SELinux 문제와 Secure Boot 문제는 다름 |
| B | ❌ | NVIDIA runtime 제거는 해결책 아님 |
| C | ✅ | MOK 등록 + Kernel Module 서명 |
| D | ❌ | sudo는 Secure Boot 신뢰 검증을 우회하지 못함 |
정답: C ✅
NCP-AII 시험에서는 Secure Boot → MOK → signed NVIDIA kernel modules를 하나의 세트로 외워두면 좋습니다.
댓글