Rock Pi 3A 관련 메모

eojin·2022년 12월 31일
0

TIL

목록 보기
6/6

똑같은 삽질 두번 할 수 없다 ㅂㄷㅂㄷ

이하의 모든 설명은 debian bullseye stable을 설치했다고 가정한다.

apt-get update 되게 하기

갓 설치한 상태에서는 이게 안 되더라. 키가 필요하다.

wget -O - apt.radxa.com/bullseye-stable/public.key | sudo apt-key add -

그리고 추가로, testing쪽 저장소도 추가해주는 편이 좋은 모양이다.

sudo sed -i 's/#deb/deb/g' /etc/apt/sources.list.d/apt-radxa-com.list

Docker 설치

엔진 받아 서비스 띄우기

그냥 get.docker.com 스크립트 돌리는 건 안전하지 않은 것 같다.
공식 매뉴얼은, Docker가 제공하는 저장소를 등록해서 거기서 엔진을 받으라고 권고한다.

sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt-get install ca-certificates curl gnupg lsb-release # 실제로는 다 깔려 있다고 나옴
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Docker 설치가 끝났으므로 설치후 작업을 해준다. (왜 이건 해도 해도 까먹을까?)

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

여기까지 하고 나면 서비스는 항상 dead가 된다.
이거 때문에 며칠간 머리털 빠질 거 같았는데, 허망하게도 공식매뉴얼에 known issue로 알려져 있었다.

이제 아래와 같은 오류가 보일 것입니다. 무시하세요. docker 설치 프로그램은 nat에 iptables를 사용합니다. 불행히도 데비안은 nftables를 사용합니다.

심지어 대책도 있다. (잘 된다.)

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo service docker start

여기까지 하고 나면 일단 Docker 서비스는 뜬 것이다.
이제 서비스를 enable해도 좋다.

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

컨테이너 돌리기 - cgroup 문제

여기까지 하면, docker ps는 잘 되지만, docker run은 안된다.
bpf_prog_query(BPF_CGROUP_DEVICE) failed 어쩌구 하는 멍청이 같은 오류가 계속 난다.
흔한 오류 같지 않아서 검색결과도 잘 안 나오고 미쳐버리겠더군...

결과적으로, Rock3A 기준으로는 이런 짓을 해야 한다.

echo "cmdline: systemd.unified_cgroup_hierarchy=0" | sudo tee -a /boot/config.txt # 부팅설정파일에 이런걸 추가한다. 이게 뭔진 나도 모름
sudo /usr/local/sbin/update_extlinux.sh                                           # 설정파일을 컴파일한다.
cat /boot/extlinux/extlinux.conf | grep unified_cgroup_hierarchy                  # 잘 컴파일됐는지 본다.
sudo reboot                                                                       # 재부팅하면 끝.

이제 다음 부팅 때부터는 systemd.unified_cgroup_hierarchy=0 설정이 잘 적용되면서 docker run foo/bar가 잘 된다.

profile
4년차 PHP 개발자입니다.

0개의 댓글