GPU 서버 환경 설정 — Ubuntu 22.04
이 가이드는 폐쇄망 환경에서 DO-Solution 2.0 GPU 서버의 Ubuntu 22.04 OS 환경 구축 방법을 제공합니다.
전제 조건
- 공개망 서버와 폐쇄망 서버의 OS 및 커널 버전 일치:
- OS Version: Ubuntu 22.04 LTS
- Kernel Version:
6.8.0-110-generic
- Root 또는 sudo 권한 필요
1. 패키지 레포지토리 반입
SCP 또는 물리적 이동을 통해 폐쇄망 서버 /home/$USER에 do-repo-ubuntu2204.tar.gz 파일을 반입합니다.
2. 로컬 레포지토리 등록
Repo명 지정
bash
export DEB_REPO_NAME="do-repo"파일 압축 해제 및 배치
bash
tar -xzvf ${DEB_REPO_NAME}-ubuntu2204.tar.gz
sudo mv ${DEB_REPO_NAME} /opt/${DEB_REPO_NAME}로컬 .list 파일 등록
bash
sudo cp /opt/${DEB_REPO_NAME}/${DEB_REPO_NAME}.list \
/etc/apt/sources.list.d/${DEB_REPO_NAME}.list3. 외부 레포지토리 비활성화
기존 sources.list 비활성화
bash
# 기존 sources.list 비활성화
sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak 2>/dev/null || true
# sources.list.d 내 do-repo.list를 제외한 다른 .list 파일 비활성화
sudo find /etc/apt/sources.list.d/ -type f -name "*.list" ! -name "${DEB_REPO_NAME}.list" \
-exec mv {} {}.bak \;APT 캐시 갱신
bash
sudo apt clean
sudo apt update레포지토리 인식 확인
bash
apt-cache policy | grep -A2 "${DEB_REPO_NAME}"
# 기대 출력:
# 500 file:/opt/do-repo ./ Packages
# release c=4. 시스템 패키지 설치
운영 유틸리티 설치
bash
sudo apt install -y --no-install-recommends \
vim pv telnet net-tools nvtop sysstat htop iotop lsof tcpdump \
dnsutils curl unzip zip jq tree rsync커널 설치 및 GCC 버전 설정
bash
# 커널 버전 변수 지정 (공개망에서 고정한 버전과 동일)
export KERNEL_VER="6.8.0-110-generic"
# 커널 설치
sudo apt install -y --no-install-recommends \
linux-image-${KERNEL_VER} linux-modules-${KERNEL_VER} linux-headers-${KERNEL_VER} \
build-essential dkms gcc-12 g++-12
# 커널 버전 고정 (자동 업그레이드 방지)
sudo apt-mark hold \
linux-image-${KERNEL_VER} \
linux-modules-${KERNEL_VER} \
linux-headers-${KERNEL_VER}
# 메타패키지 hold (새 커널 자동 설치 방지)
sudo apt-mark hold linux-image-generic linux-headers-generic linux-generic
# 고정 확인
apt-mark showhold
# GCC 12로 변경
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
# GCC 버전 확인
gcc --version | head -n 1GRUB 부팅 커널 변경
bash
# 설치된 커널 목록 확인
dpkg --list | grep linux-image
# GRUB 메뉴 엔트리 확인 (정확한 문자열 확인용)
awk -F"'" '/menuentry |submenu / {print $2}' /boot/grub/grub.cfg
# saved 모드 설정
sudo sed -i 's|^GRUB_DEFAULT=.*|GRUB_DEFAULT=saved|' /etc/default/grub
sudo update-grub
# 설치한 커널을 기본 부팅 커널로 지정
sudo grub-set-default "Advanced options for Ubuntu>Ubuntu, with Linux ${KERNEL_VER}"
# 설정 확인
grub-editenv list서버 재부팅
bash
sudo reboot재부팅 이후 커널 버전 확인
bash
uname -r
# 기대 출력 (반드시 아래 버전이어야 함):
# 6.8.0-110-generic5. NVIDIA 패키지 설치 (GPU 서버만 진행)
CPU 서버: 6단계 — Docker 설치로 건너뜁니다.
NVIDIA 드라이버 설치
bash
# 재부팅 후 변수 재등록
export DEB_REPO_NAME="do-repo"
export NVIDIA_VER=$(apt-cache search "^nvidia-driver-[0-9]+$" \
| awk '{print $1}' \
| grep -oP 'nvidia-driver-\K[0-9]+' \
| sort -n \
| tail -1)
echo "감지된 NVIDIA 드라이버 버전: ${NVIDIA_VER}"
# 설치할 패키지 목록 구성
NVIDIA_PKG_LIST="\
nvidia-driver-${NVIDIA_VER} \
nvidia-dkms-${NVIDIA_VER} \
nvidia-utils-${NVIDIA_VER} \
nvidia-settings \
libnvidia-cfg1-${NVIDIA_VER} \
libnvidia-compute-${NVIDIA_VER} \
libnvidia-decode-${NVIDIA_VER} \
libnvidia-encode-${NVIDIA_VER} \
libnvidia-extra-${NVIDIA_VER} \
libnvidia-fbc1-${NVIDIA_VER} \
libnvidia-gl-${NVIDIA_VER} \
xserver-xorg-video-nvidia-${NVIDIA_VER}"
# NVIDIA 드라이버 설치
sudo apt install -y --no-install-recommends ${NVIDIA_PKG_LIST}nouveau 비활성화 및 재부팅
bash
# 기존 blacklist 설정 확인
ls /etc/modprobe.d/ | grep -i nouveau || echo "blacklist 파일 없음"
# blacklist 파일이 없으면 수동 추가
if ! grep -rq "blacklist nouveau" /etc/modprobe.d/ 2>/dev/null; then
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf
fi
# initramfs 재생성
sudo update-initramfs -u
# 재부팅
sudo rebootCUDA 및 cuDNN 설치
bash
sudo apt install -y --no-install-recommends cuda-toolkit-13-2 cudnn9-cuda-13CUDA 환경변수 설정
bash
# CUDA 설치 경로 확인
ls /usr/local/ | grep cuda
# 환경변수 설정
sudo tee /etc/profile.d/cuda.sh <<EOF
export PATH=/usr/local/cuda/bin:\${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:\${LD_LIBRARY_PATH}
EOF
source /etc/profile.d/cuda.sh6. Docker 설치
bash
# 재부팅 후 변수 재등록
export DEB_REPO_NAME="do-repo"
sudo apt install -y --no-install-recommends \
docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Docker 서비스 활성화
sudo systemctl enable --now docker
# Docker 권한 추가 (그룹 적용을 위해 재로그인 필요)
sudo usermod -aG docker $USER7. NVIDIA Container Toolkit 설치 (GPU 서버만 진행)
CPU 서버: 8단계 — 설치 검증으로 건너뜁니다.
bash
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.19.0-1
sudo apt install -y --no-install-recommends \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
# Docker Engine Runtime을 nvidia container toolkit으로 지정
sudo nvidia-ctk runtime configure --runtime=docker
# Docker Engine 재시작
sudo systemctl restart docker8. 설치 검증
NVIDIA 드라이버 확인 (GPU 서버만)
bash
# nvidia 모듈 로드 확인
lsmod | grep nvidia
# nvidia-smi 확인: 전달 받은 GPU 스펙과 일치하는지 확인
nvidia-smiCUDA 확인 (GPU 서버만)
bash
nvcc --version
# 기대 출력:
# Cuda compilation tools, release 13.2, V13.2.78cuDNN 확인 (GPU 서버만)
bash
ldconfig -p | grep cudnn
# 기대 출력: libcudnn.so.9, libcudnn_ops.so.9 등Docker 확인
bash
sudo docker versionNVIDIA Container Toolkit 적용 확인 (GPU 서버만)
bash
sudo nvidia-ctk runtime configure --runtime=docker --dry-run
# 기대 출력:
# {
# "runtimes": {
# "nvidia": { "path": "nvidia-container-runtime" }
# }
# }