티스토리 뷰
UEFI + Secure boot mode Ubuntu 18.04 nvidia-docker 설치하기
사용자 WonkyungLee 2018. 9. 13. 18:16Introduction
본 문서는 UEFI + Secure boot enabled mode 인 Ubuntu 18.04 에서 GPU container를 사용하기 위한 Docker 를 설치하는 가이드로, 2018년 9월 13일에 직접 시행착오를 겪으며 작성하였다.
참고로 GPU 는 NVIDIA Geforce 980TI 한 장을 장착하고 있다. ASUS 메인보드를 사용하며, fast boot mode 는 disabled 되어 있는 상태이다.
- NVIDIA Driver 설치
- Docker 설치
- Nvidia-docker 설치
Install NVIDIA Driver
현재 필자의 PC 는 윈도우와 우분투 모두 UEFI 모드로 설치하여 멀티부팅을 지원하도록 세팅하여 놓았다. (윈도우로 게임도 하고 우분투로 딥러닝도 하고 싶었다…) 그리고 Secure Boot 기능 또한 켜놓았기 때문에 부팅 시 인증서를 통한 OS 부트로더 검증을 실시한다. 이 때문에 ubuntu 18.04 에 NVIDIA Driver 를 설치하는 데에 고통을 받았으며, 되는 방법과 안되는 방법을 소개하여 독자들의 삽질을 예방하고자 한다. 인터넷에 소개된 NVIDIA driver 설치 방법 세 가지를 시도해보았다.
PPA repository 를 통한 설치 - 실패
- 필요한 드라이버 확인
다음 명령어를 통해 필요한 드라이버 버젼 명을 알 수 있다.
$ ubuntu-drivers devices
-
해당 드라이버가 ppa 에 없을 수 있기에 다음 명령어를 통해 graphic driver ppa 를 우리 시스템에 추가시킨다.
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt update -
다음 명령어를 통해 자동으로 필요한 드라이버를 설치할 수 있다.
$ sudo ubuntu-drivers autoinstall
-
Reboot 한다.
이러면 NVIDIA X server 가 실행되지 않는다. 아마도 secure boot 모드 때문에 그런 것 같다. 일단 설치된 nvidia-driver 를 지운다.
$ sudo apt purge nvidia-*
$ sudo apt autoremove
RUN file 을 통한 설치 (Secure boot mode 고려 X )- 실패
- 엔비디아 공식 홈페이지에서 자신의 하드웨어에 맞는 드라이버의 run file을 다운받는다.
-
드라이버 설치에 앞서 필요한 패키지들을 설치한다.
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install build-essential libc6:i386 -
Disable Nouveau Nvidia driver
-
다음 링크에서 nouveau 를 disable 할 수 있는 방법을 소개한다.
- [https://linuxconfig.org/how-to-disable-nouveau-nvidia-driver-on-ubuntu-18-04-bionic-beaver-linux](https://linuxconfig.org/how-to-disable-nouveau-nvidia-driver-on-ubuntu-18-04-bionic-beaver-linux)
-
요약하자면 다음 명령어들을 입력하면 된다.
$ sudo bash -c “echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf”
$ sudo bash -c “echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf”$ cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf
blacklist nouveau
options nouveau modeset=0$ sudo update-initramfs -u
$ sudo reboot -
tty shell 에서 download 받은 run file 을 실행시킨다.
sudo sh ./NVIDIA-Linux-x86_64-xxx.xx.run
-
Reboot 한다.
이번에는 blank screen 이 떠서 Login 창을 볼 수 없게 된다. nouveau 를 disable 했는데 nvidia driver 도 작동하지 않으니 아얘 화면이 안나오는 것으로 예상된다. 역시 secure boot 모드 때문이라고 추론해볼 수 있다.
RUN file 을 통한 설치 (Secure boot mode 고려 O ) - 성공
Blank screen 이후 눈물을 흘리며 우분투를 재설치하고, 열심히 구글링을 하던 도중 다음 링크에서 해답을 발견할 수 있었다. 이 링크를 잘 따라하면 성공적으로 UEFI mode 로 설치된 ubuntu 를 secure boot mode 로 부팅했을 때 nvidia driver 를 성공적으로 설치 및 적용할 수 있다.
-
https://askubuntu.com/questions/1023036/how-to-install-nvidia-driver-with-secure-boot-enabled?rq=1
-
요약하자면 secure boot 는 부트로더가 검증됐는지를 확인하기 위해 인증서가 필요한데, NVIDIA Driver 를 설치하는 과정에서 이 인증서가 필요한 모양이다. 따라서 먼저 인증서(private key, public key 의 쌍) 을 만들고, 두 파일의 위치를 driver run file 을 실행시키는 명령어에 argument 로 전달해서 주면 정상적으로 드라이버를 설치할 수 있다는 내용이다.
-
Reboot 후에 NVIDIA X server 도 잘 작동하고, 화면도 좋은 해상도로 잘 렌더링 하는 것을 확인할 수 있다.
-
다음 명령어로 설치된 드라이버와 GPU 모델명, 총 메모리와 사용중인 메모리, GPU 온도 등을 확인할 수 있다.
$ nvidia-smi
Install Docker
도커 설치는 다음 링크를 참고하여 간단히 설치할 수 있다.
-
ppa repository 등록
$ sudo apt-get remove docker docker-engine docker.io
$ sudo apt-get update
$ sudo apt-get install
apt-transport-https
ca-certificates
curl
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository
“deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable” -
docker-ce 설치 및 확인
$ sudo apt-get update
$ sudo apt-get install docker-ce
$ sudo docker run hello-world
NVIDIA Docker 설치
nvidia-docker2 역시 다음 링크를 참고하여 간단히 설치할 수 있다.
요약하자면, 다음 명령어들을 실행시키면 된다.
# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker
# Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
# Install nvidia-docker2 and reload the Docker daemon configuration
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
잘 설치되었는지 다음 명령어를 통해 확인해보자.
# Test nvidia-smi with the latest official CUDA image
sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
docker 명령어에 매번 sudo 를 붙이는 것이 귀찮기 때문에 다음 명령어를 실행시켜서 docker 그룹에 user 를 등록시키자.
$ sudo usermod -a -G docker $USER
$ sudo reboot now
매번 —runtime=nvidia 를 입력하면 귀찮기 때문에 다음 링크를 참고하여 argumetn 기본 등록을 해준다.
그리고 도커를 restart 해주면 —runtime=nvidia 명령어를 치지 않아도 자동으로 nvidia-docker로 도커를 실행하게 된다.
설정을 모두 마치고 docker 서비스를 restart 하여 적용시키자.
$ sudo service docker restart
다시 한번 모든 설정이 잘 적용되었는지 다음 명령어를 통해 확인해보자.
# Test nvidia-smi with the latest official CUDA image
docker run --rm nvidia/cuda nvidia-smi
References
Install NVIDIA Driver
- https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-18-04-bionic-beaver-linux
- https://www.nvidia.com/Download/index.aspx
- https://linuxconfig.org/how-to-disable-nouveau-nvidia-driver-on-ubuntu-18-04-bionic-beaver-linux
- https://askubuntu.com/questions/1023036/how-to-install-nvidia-driver-with-secure-boot-enabled?rq=1
Install Docker
Install Nvidia-docker
- https://github.com/NVIDIA/nvidia-docker
- http://haanjack.github.io/docker/2018/02/21/nvidia-docker2-runtime.html
'Environment Setting' 카테고리의 다른 글
구매한 도메인에 개인서버 연결하기 (2) | 2018.09.20 |
---|---|
Ubuntu 18.04 한글 설정하기 (0) | 2018.09.13 |
UEFI + Secure boot mode Ubuntu 18.04 nvidia-docker 설치하기 (1) | 2018.09.13 |
- Total
- 72,832
- Today
- 35
- Yesterday
- 88