폐쇄망 GPU 드라이버 반입 설치 · 설치 검증과 롤백 · 실습
검증과 롤백
목표
반입물의 무결성을 검증하고, 변조를 탐지하고, 버전을 고정하고, 실제로 롤백까지 수행합니다.
왜 중요한가
폐쇄망에서는 롤백 경로가 없는 변경을 하지 않습니다. 무언가를 지웠는데 다시 받으려면 반입 심의를 또 거쳐야 하고, 그게 며칠입니다. 그래서 작업 절차의 절반은 "무엇을 바꿨는지 기록하고 어떻게 되돌릴지 미리 정하는 것" 입니다.
그리고 검증은 층을 순서대로 해야 합니다. 최종 확인만 해 보고 실패하면 어느 층이 문제인지 모릅니다. 커널 → 유저 공간 → 컨테이너 주입 → 실제 실행 순으로 올라가면 실패 지점이 곧 원인입니다.
단계
1. /root/gpu/pool 안의 모든 .deb 에 대한 SHA-256 매니페스트를 /root/gpu/manifest.sha256 으로 만들고, 검증을 수행해 결과를 /root/gpu/verify-ok.txt 로 저장하세요. 모든 줄이 정상이어야 합니다.
2. /root/gpu/tamper/ 디렉터리를 만들어 .deb 하나를 복사한 뒤 사본을 변조하고, 그 사본에 대한 검증이 실패하는 것을 확인해 출력을 /root/gpu/verify-fail.txt 로 저장하세요. 원본 pool 은 그대로여야 합니다.
3. 설치된 nvidia-container-toolkit 의 파일 무결성을 확인해 결과를 /root/gpu/dpkg-verify.txt 로 저장하세요.
4. /root/gpu/verify-plan.txt 를 다음 4줄로 만드세요. 실제 GPU 가 있는 환경에서의 검증 순서입니다.L1=lsmod / L2=nvidia-smi / L3=nvidia-ctk / L4=podman-run
5. nvidia-driver-550 과 nvidia-container-toolkit 을 업그레이드 대상에서 제외하고, 고정 목록을 /root/gpu/holds.txt 로 저장하세요. 두 패키지가 모두 보여야 합니다.
6. apt 의 설치 트랜잭션 기록에서 이번 설치와 관련된 부분을 /root/gpu/history.txt 로 저장하세요. nvidia 문자열이 포함돼야 합니다.
7. nvidia-container-toolkit 을 설정 파일까지 완전히 제거(롤백)하고, 제거 후 상태를 /root/gpu/after-rollback.txt 로 저장하세요. 그 패키지가 설치 상태가 아니어야 하고, nvidia-driver-550 은 여전히 설치 상태여야 합니다.
8. /root/gpu/final-report.txt 를 다음 6줄로 만드세요.BUNDLE_VERIFY=OK / TAMPER_DETECTED=yes / HELD=2 / DRIVER_STILL=installed / TOOLKIT_NOW=removed / SNAPSHOT=<오늘 날짜 YYYY-MM-DD>
참고
- 매니페스트는
cd /root/gpu/pool && sha256sum *.deb > ../manifest.sha256형태로 만들고, 검증도 같은 디렉터리에서sha256sum -c ../manifest.sha256로 합니다. - 변조는
printf 'x' >> <사본>처럼 바이트를 덧붙이면 됩니다. - 파일 무결성 확인은
dpkg -V <패키지>입니다. 출력이 비어 있으면 정상입니다. - 고정 해제는
apt-mark unhold <패키지>입니다. 7번 전에 필요할 수 있습니다. - 흔한 실수 1: 2번에서 pool 안의 원본을 변조해 이후 단계가 전부 깨지는 경우.
- 흔한 실수 2: 7번에서
remove만 쓰면 설정 파일이 남아rc상태가 됩니다. 완전 제거가 필요합니다.
단계 8개
- 무결성 매니페스트 생성
- 변조 탐지 재현
- 설치 파일 무결성 확인
- 검증 계획 문서
- 버전 고정
- 설치 트랜잭션 확인
- 롤백 실행
- 반입·설치·검증·롤백 보고서