내가 가지고 있는 Victus V 16 노트북은
AMD Ryzen 계열의 CPU
RTX 3050 mobile GPU
를 가지고 있고
지금까지 Autoware 1.14 를 우분투 18.04 에 Source build로
설치하여 진행하였다.
하지만, 노트북의 WIFI 모듈부터 시작해서, HDMI 인식안됨 등
별의 별 삽질을 거쳤다.
목적 : 20.04 에서는 AUTOWARE source build 가 안됨 그래서 docker로 melodic 기반의 실행을 진행
graphic safe mode 로 설치 20.04 설치 (Bootloader 는 windows bootloader p1 이 아닌, 물리적 하드위치로 잡는다)
무한재부팅 증상 발현 (nomodeset 으로 실행시키니 증상이 없다 짜증..)
sudo gedit /etc/default/grub 으로
$ sudo gedit /etc/default/grub
$ GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash nomodeset"
$ sudo update-grub2
GPU driver autoinstall
$ sudo ubuntu-drivers autoinstall
하지만, GPU 설치후, 이유를 알 수없는 드라이버 이슈로 노트북 monitor를 인식 못하는 이슈가 발생하고, monitor를 unknown display로 인식하는것도 모자라, 다음 부팅때는 아예 모니터에 아무것도 디스플레이 되지 않는 개같은 이슈 발생
재설치 (이번에는 꼭 성공한다는 마인드로, WIFI연결후, additional program 들도 같이 인스톨하는 옵션을 키고 설치한다, 이는 그래픽 카드도 자동으로 설치하기 위함)
설치 후, nvidia-smi를 해보면, 그래픽카드가 설치가 안되어있다고 나온다.
다시 4번의 커맨드로 설치 진행 (이번에는 470이 아닌 510이 깔린다 이건.. 뭔..)
모든 이슈들이 해결됨. 다음은 도커 설치
Install Docker
$ 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 apt-key fingerprint 0EBFCD88
$ 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
헬로월드 나오면 완성
근데, UID 는 처음에 0으로 설정되어있으므로 나중에 3번 할때 UID 세팅을 바꿔줘야한다.
Nvidia Docker Runtime
분명 이녀석은 일정버전 이상의 docker 를 설치하면 자동으로 깔리는것으로 알고 있는데, 설치가 안되어서 수동으로 설치를 했었어야했음.
NVIDIA GPU는 GTX 600 이상의 시리즈가 요구됨
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
Nvidia-docker install
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2
docker 서비스 재시작
$ sudo systemctl restart docker
Docker container 설치
여기까지 정말 힘들게 왔는데, 여기서 설치할 docker container 는 ros melodic 기반의 우분투 18.04 OS 이며 autoware 가 사전에 source build 된 버전을 깔았다.
$ git clone https://github.com/autowarefoundation/autoware_ai_docker.git
$ cd docker/generic
여기서 바로 generic의 run.sh파일을 실행하면 모든게 완료 된다.
$ sudo ./run.sh
하지만, 여기서 UID 가 겹쳐서 실행할 수없다는 에러가 뜬다면, 다음과같이 설정을 변경한다.
#!/bin/bash
set -e
CUDA="on"
IMAGE_NAME="autoware/autoware"
TAG_PREFIX="latest"
ROS_DISTRO="melodic"
BASE_ONLY="false"
PRE_RELEASE="off"
AUTOWARE_HOST_DIR=""![](https://velog.velcdn.com/images/b34b349/post/3cbc43ce-80e4-4b4d-85f1-4c3a677cfcbd/image.png)
USER_ID="$(id -u)"
if [ "$USER_ID" == 0 ]; then
USER_ID=1000;
else
USER_ID=${UID};
fi
이후에 터미널의 앞단이 흰색으로바뀌며 깔지도 않았던 ros 등의 명령어를 which 등으로 확인하면서 동작을 확인 하면 모든것이 완료
추가적으로, 처음에는 root 권한으로 docker에 억세스 해야하지만, 일반유저에 권한을 주지 않으면 shared_dir을 사용할 수 없다.
$ sudo usermod -aG docker [username]
$ sudo service docker restart
이렇게 하면 docker 가 재시작 되고, run.sh 파일을 실행시면 shrared_dir 안에 있는 파일들은 서로 공유가 가능한 상태가 된다.
끝