Skip to content

Instantly share code, notes, and snippets.

@edp1096
Last active May 2, 2025 10:33
Show Gist options
  • Save edp1096/61f3f6d15f0fbf1307e67ab24ed2f9fb to your computer and use it in GitHub Desktop.
Save edp1096/61f3f6d15f0fbf1307e67ab24ed2f9fb to your computer and use it in GitHub Desktop.
오렌지파이5플러스 설정 메모

운영체제 설치 및 설정

시작 전 참고

  • 저장매체 - 나는 아래꺼 모두 사용함
    • sd카드 - 제조사 기본 이미지 server 버전. nvme 이미징 작업용
    • usb 외장 메모리 또는 외장 ssd - 이미지 배포판 저장용
    • nvme ssd - 부팅 및 주 저장매체
  • 전원 아답터
    • 상품 - 네이버에서 5v4a로 검색
    • nvme류의 부품을 달면 과부하시 순간적으로 16와트 넘게 튀므로 5V/4A 필요. 달린게 없으면 5V/3A 충전기도 괜찮음.
    • EU방식은 헐거워서 안되고 KR방식은 위의 제품이 전부임. 라즈베리파이5 어댑터는 KR방식이 없어서 아웃.
  • 오렌지파이5플러스 운영체제
    • Joshua Riek's ubuntu-rockchip - 링크
      • 추천 - 오렌지파이 기본 이미지보다 쓰기 좋음
      • 기본 id / password - ubuntu / ubuntu
      • 현재 24.04 Noble numbat으로 버전업된 것 같다. 커널은 rockchip-linux bsp 6.1
    • Armbian - 링크
    • 제조사 기본 이미지 - 링크
      • 비추 - 저장소 주소가 화웨이, 이미지는 암비안 옛날꺼 베이스라서 걍 암비안 쓰는게 낫다.
      • 기본 id / password - orangepi / orangepi
      • 나는 급할 때 쓰려고 sd카드로만 하나 만들어 놓음

sd카드 이미징

  • 윈도우 - Etcher 사용. https://etcher.balena.io
  • 리눅스 - dd 사용. 나는 Etcher로 ssd 이미징이 안돼서 sd카드로 띄운 리눅스에서 dd로 이미징

리눅스 콘솔에서 nvme ssd에 우분투 이미징

sudo fdisk -l | grep "nvme0n1"
lspci
sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress
sudo dd bs=1M if=우분투이미지.img of=/dev/nvme0n1 status=progress oflag=direct

usb메모리 마운트

  • 나의 경우, nvme ssd에 이미지 씌울 때, sd로 부팅해서 usb 외장하드에 이미지 다운받아 작업했음
sudo mkdir /media/usb
ls /dev/sd*
# sudo mount -t ntfs-3g /dev/sda1 /media/usb
sudo mount -t exfat /dev/sda1 /media/usb

트러블슈팅

  • x윈도
    • 이미지 부팅 안됨 - dd로 삭제없이 될 때까지 이미지 쓰기
    • 한글 - 국산(tian, kime) 입력기는 arm 바이너리 없어서 패스
      • 국산입력기인 nimf가 제일 좋은데 배포가 안될 때가 있다. 나는 apt가 아닌 deb 파일이 걸려있을 때 다운받아 설치함.
      • 외산을 쓰려면 fcitx5, fcitx5-hangul 설치 및 재시작 > 설정에서 hangul 추가
    • htop 온도가 N/A로 표시됨 - 뭔짓을 해도 안되니 포기하고 psensor 사용
    • 블루투스 느림(스피커 레이턴시) - 블투 포기하고 aux 단자 스피커 사용
  • 크로미엄에서 넷플릭스 M7111-1331 오류 - 아래 옵션을 직접 실행하거나 바로가기 생성
chromium-browser --user-agent="Mozilla/5.0 (X11; CrOS aarch64 15236.80.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
# 데이터폴더를 따로 잡아서 실행
chromium-browser --user-data-dir="/home/username/.chrome_ott_data" --user-agent="Mozilla/5.0 (X11; CrOS aarch64 15236.80.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
  • 뱅킹
    • 기본 agent로 KB국민은행은 보안 프로그램이 필요 없어서 브라우저 인증서로 잘 동작하고, 다른 은행은 강제하는 보안프로그램이 Linux aarch64를 지원하지 않아서 포기
    • 위 넷플릭스용 agent 사용시, 지원하지 않는 OS라고 하기 때문에 기본 agent 전용으로 user-dir을 따로 만들거나 해야됨

기타

파란색LED 끄기

  • 의미없이 반짝이는게 눈에 거슬려서 녹색LED만 깜빡이게 systemd 서비스로 추가.
  • 원래 그럴 의도는 아니었는데 정상 부팅되면 녹색LED만 깜빡여서 부팅 상태 확인 용도로도 괜찮은 거 같다.
sudo vi /etc/systemd/system/heartbeat-green-only.service
[Unit]
Description=LED Control Service
After=sysinit.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'echo none > /sys/class/leds/blue_led/trigger && echo heartbeat > /sys/class/leds/green_led/trigger'

[Install]
WantedBy=multi-user.target
sudo systemctl enable heartbeat-green-only.service

ubuntu-rockchip 데스크톱 추가 설치

  • Gnome extension manager
sudo apt install gnome-shell-extension-manager
  • Gnome tweaks
sudo apt install gnome-tweak-tool

mpv플레이어 옵션

* 파란화면, 녹색화면 나올 때 - `--hwdec=videotoolbox`
* 볼륨 작을 때 - `--volume-max=200`

GPU performance flag

아래처럼 하던지 아니면, export 제외한 아래 환경변수를 /etc/environment 에 추가

export PAN_MESA_DEBUG=gofaster,gl3

패킷 RST 플래그 무시

윈도우의 GoodbyeDPI 비스무리하게.. SNI, DPI 등. iptables 설치 필요

sudo iptables -A INPUT -p tcp --tcp-flags RST RST --sport 443 -j DROP

잡다

  • 소비전력 - 모니터 2개, 스피커, 랜선 1개, usb 유선 키보드/마우스 연결한 상태
    • 평상시 5~10w
    • 최대부하(거의 일어나지 않음) 15w+@
  • hdmi 모니터 3개 - 잘 되지만 hdmi 단자가 있는 usb-c 허브를 뺐다 끼웠다 할 때 화면 복구가 제대로 안될 수 있다.

끝.

클러스터 - 네트워크 설정

개요

  • Orange Pi 5 Plus에 붙어있는 듀얼랜을 이용하여 daisy chain topology로 cluster 꾸미기.. 위한 초기작업 메모
  • sbc 4개 사용 - 인터넷에 연결되는 메인이 sbc1, 이후 순서대로 2,3,4 연결
  • 사용 운영체제: ubuntu-rockchip server

Ethernet 설정

  • device 이름은 sbc 모두 동일하고, usb-c 전원단자 옆에 enP3p49s0, 다음은 enP4p65s0

각 sbc의 netplan 설정

  • sbc1 - 하나는 외부 인터넷, 나머지 하나는 내부 연결용
# sudo vi /etc/netplan/50-cloud-init.yaml
network:
  ethernets:
    enP3p49s0:
      dhcp4: true
      optional: true
    enP4p65s0:
      addresses: [172.16.0.10/24]
  version: 2
  renderer: networkd
  • sbc2 - 브릿지(br0)로 묶음
# sudo vi /etc/netplan/50-cloud-init.yaml
network:
  ethernets:
    enP3p49s0:
      addresses: [172.16.10.20/24]
    enP4p65s0:
      addresses: [172.16.10.21/24]
  bridges:
    br0:
      interfaces: [enP3p49s0, enP4p65s0]
      addresses: [172.16.0.20/24]
      routes:
        - to: default
          via: 172.16.0.10
      nameservers:
        addresses: [8.8.8.8, 8.8.8.4]
  version: 2
  • sbc3 - 브릿지(br0)로 묶음
# sudo vi /etc/netplan/50-cloud-init.yaml
network:
  ethernets:
    enP3p49s0:
      addresses: [172.16.10.30/24]
    enP4p65s0:
      addresses: [172.16.10.31/24]
  bridges:
    br0:
      interfaces: [enP3p49s0, enP4p65s0]
      addresses: [172.16.0.30/24]
      routes:
        - to: default
          via: 172.16.0.10
      nameservers:
        addresses: [8.8.8.8, 8.8.8.4]
  version: 2
  • sbc4 - 하나만 쓰고 하나는 안써서 dhcp로 내버려둠. sbc4 뒤에 sbc를 추가하려면 sb2, sbc3과 같은 형식으로 설정
# sudo vi /etc/netplan/50-cloud-init.yaml
network:
  ethernets:
    enP3p49s0:
      addresses:
        - 172.16.0.40/24
      routes:
        - to: default
          via: 172.16.0.10
      nameservers:
        addresses: [8.8.8.8, 8.8.8.4]
    enP4p65s0:
      dhcp4: true
      optional: true
  version: 2

netplan 설정 후 적용

  • sbc1 ~ sbc4 모두 실행
sudo netplan apply

통신 뚫기

ip_forward 활성화

  • sbc1 ~ sbc4 모두 설정
# sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1

# 설정 적용
sudo sysctl -p

외부 ping 안나갈 경우

  • 아래 마스커레이드 설정은 iptables 말고 ufw나 nftables 사용해도 됨
  • sbc1만 설정
# iptables 설치, 설정
sudo apt install iptables

sudo iptables -t nat -A POSTROUTING -o enP3p49s0 -j MASQUERADE

# iptables 설정 저장/관리 서비스 설치, 실행
sudo apt install iptables-persistent

sudo service netfilter-persistent save
sudo service netfilter-persistent start

# 테스트
# - POSTROUTING/MASQUERADE 설정 후, 아이피로 핑 요청시 응답을 받아야 됨
# - persistent 패키지가 저장/로드 기능이니까 재부팅해도 핑 응답을 받아야 됨
# - netplan 설정에서 nameservers 설정이 없으면 도메인으로 핑 요청시 응답 못 받음
ping 8.8.8.8
ping yahoo.com
ping bing.com
ping google.com

SSH/SFTP 터널링

  • 외부에서 sbc1 거쳐서 나머지 sbc로 접속하기
  • https://github.com/edp1096/tunnel 사용. 실행방법은 링크의 README.md 참고
  • 윈도우에서도 되는지는 확인 안 함

설정 - golang tunnel 실행에 필요한 config.yaml 내용들

  • sbc1 - 프록시이므로 필요 없음
  • sbc2
proxyserver:
  address: 192.168.100.43
  port: 22
  username: ubuntu
  authmethod: privatekey # password or privatekey or agent
  password: mypassword
  privatekey: ~/.ssh/my_key.pem
internalserver:
  address: 172.16.0.20
  port: 22
localport: 1620
  • sbc3
proxyserver:
  address: 192.168.100.43
  port: 22
  username: ubuntu
  authmethod: privatekey # password or privatekey or agent
  password: mypassword
  privatekey: ~/.ssh/my_key.pem
internalserver:
  address: 172.16.0.30
  port: 22
localport: 1630
  • sbc4
proxyserver:
  address: 192.168.100.43
  port: 22
  username: ubuntu
  authmethod: privatekey # password or privatekey or agent
  password: mypassword
  privatekey: ~/.ssh/my_key.pem
internalserver:
  address: 172.16.0.40
  port: 22
localport: 1640

rsa key 이용해서 로그인

검색하면 많이 나오니까 생략. 나는 어차피 장난감이라 ssh-keygen -t rsa로 만들어진 키페어 하나로 pub키를 모든 sbc의 ~/.ssh/authorized_keys에 복붙하고 비밀키만능열쇠로 사용.

확인

sbc2 접속 테스트

ssh -i ~/.ssh/my_key.pem ubuntu@localhost -p1620
# Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.10.160-rockchip aarch64)
# ...

끝.

K3s 설치

설치

  • Setup server - get node 실행 시 EXTERNAL-IP는 조금 늦게 뜸
curl -sfL https://get.k3s.io | sh -s - \
    --write-kubeconfig-mode 644 \
    --node-ip 172.16.0.10 \
    --node-external-ip 192.168.100.43

kubectl get node -o wide

kubectl get all -o wide

kubectl get service --all-namespaces
  • Setup agent
# At server
sudo cat /var/lib/rancher/k3s/server/node-token
# `tokentokentokentoken`
# At agent
curl -sfL https://get.k3s.io | K3S_URL=https://172.16.0.10:6443 \
    K3S_TOKEN="tokentokentokentoken" sh -

Server API Proxy

sudo kubectl proxy --address="0.0.0.0" --port=8080 --accept-hosts="^*$"

제거

# https://docs.k3s.io/installation/uninstall

# Kill all
# /usr/local/bin/k3s-killall.sh
sudo k3s-killall.sh

# Uninstall server
# /usr/local/bin/k3s-uninstall.sh
sudo k3s-uninstall.sh

# Uninstall worker
# /usr/local/bin/k3s-agent-uninstall.sh
sudo k3s-agent-uninstall.sh

Agent 먼저 종료 시, Agent 대기 없이 Server 바로 강제 종료

sudo vi /etc/systemd/system/shutdown-k3s.service
[Unit]
Description=Kill containerd-shims on shutdown
DefaultDependencies=false
Before=shutdown.target umount.target

[Service]
ExecStart=/usr/local/bin/k3s-killall.sh
Type=oneshot

[Install]
WantedBy=shutdown.target
sudo systemctl enable shutdown-k3s.service

Traefik dashboard

  • 포트포워딩 (sbc1)
kubectl --namespace kube-system port-forward deployments/traefik 9000:9000 &
curl localhost:9000/dashboard/
# <!DOCTYPE html><html><head><title>Traefik</title><meta charset=utf-8>...
  • ssh 터널링 - sbc1용 설정 생성 / config_1.yaml
# Proxy SSH server
proxyserver:
  address: 192.168.100.43
  port: 22
  username: ubuntu
  authmethod: privatekey # password or privatekey or agent
  password: mypassword
  privatekey: ~/.ssh/my_key.pem

# Internal (SSH) server
internalserver:
  address: 127.0.0.1
  port: 9000

# Port for localhost connection
localport: 1619
  • 접속
./tunnel_linux_arm64 ./config_1.yaml &
curl localhost:1619/dashboard/
# <!DOCTYPE html><html><head><title>Traefik</title><meta charset=utf-8>...

끝.

파티션 축소, fs 추가

  • 476.42GB(512GB) -> 384GB / 92.42GB 로 분할 후, 92.42GB를 btrfs로 설정
  • 섹터/블록 계산하면 1이 틀려서 동작 안되는 경우 생겨서 그냥 바이트로 입력
  • 확인 때문에 재부팅을 여러 번 했는데 btrfs용 파티션 생성할 때 재부팅없이 한 번에 해도 됨

nvme 크기 축소

sbc1 ~ sbc4 모두 아래와 같이 진행

  • sd 부팅 - 오렌지파이5플러스용 서버 기본이미지 알아서 굽고 부팅..

  • known_host 체크 건너뛰기 #1 - 모니터 안쓰고 ssh접속시 같은 ip 충돌 무시

ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" userid@hostip
  • known_host 체크 건너뛰기 #2 - 옵션이 길어서 매번 입력하는게 귀찮으면 ~/.ssh/config에 아래 내용 추가
# ~/.ssh/config
LogLevel ERROR
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
  • resize #1 - resize2fs
e2fsck -f /dev/nvme0n1p2
# ...
sudo resize2fs /dev/nvme0n1p2 384G
# resize2fs 1.46.5 (30-Dec-2021)
# Resizing the filesystem on /dev/nvme0n1p2 to 100663296 (4k) blocks.
# The filesystem on /dev/nvme0n1p2 is now 100663296 (4k) blocks long.
  • resize #2 - fdisk
sudo fdisk /dev/nvme0n1
p
# Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
# ...
#
# Device           Start        End   Sectors   Size Type
# /dev/nvme0n1p2 1081344 1000215182 999133839 476.4G Linux filesystem

d
2
# Partition 2 has been deleted.

n
2
First sector (34-1000215182, default 1081344): 걍 엔터
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1081344-1000215182, default 1000215182): +384G
# Created a new partition 2 of type 'Linux filesystem' and of size 384 GiB.
# Partition #2 contains a ext4 signature.
######## !!!아래 주의!!! : 시그니처 지우면 부팅 안되므로 반드시 N 눌러서 시그니처 유지할 것.
######## mkfs, gdisk, parted로 새로 만들 수 있지만 귀찮기 때문에 유지하는게 낫다.
Do you want to remove the signature? [Y]es/[N]o: N
# The signature will be removed by a write command.

w
# The partition table has been altered.
# Calling ioctl() to re-read partition table.
# ...
  • 확인
lsblk
# nvme0n1     259:0    0 476.9G  0 disk 
# ├─nvme0n1p1 259:1    0   512M  0 part 
# └─nvme0n1p2 259:2    0   384G  0 part 

e2fsck -f /dev/nvme0n1p2

파티션 추가 - SD로 부팅. nvme로 부팅하면 도로 확장될 수 있음

384GB로 줄이고 아래와 같이 남은 공간에 파티션 생성

  • fdisk
sudo fdisk /dev/nvme0n1
n
Partition number (3-128, default 3): 걍 엔터
First sector (34-1000215182, default 806389760): 걍 엔터
Last sector (806387713-1000215182, default 1000215182): 걍 엔터

w
# The partition table has been altered.
# Calling ioctl() to re-read partition table.
# ...

nvme 부팅 및 xfs 또는 btrfs 생성

fdisk -l 실행시 아래 msg의 빨간색 메시지가 나오면 아래 parted 같이 실행

  • msg
GPT PMBR size mismatch (8191 != 32767) will be corrected by write.
The backup GPT table is not on the end of the device.
  • parted
sudo parted -l
# ...
# you can fix the GPT to use all of the space (an extra 24576 blocks) or continue
# with the current setting? 
Fix/Ignore? F 
# ...
  • xfs 생성
lsblk
# nvme0n1     259:0    0 476.9G  0 disk 
# ├─nvme0n1p1 259:1    0   512M  0 part 
# ├─nvme0n1p2 259:2    0   384G  0 part 
# └─nvme0n1p3 259:3    0  92.4G  0 part 

sudo mkfs.xfs -f /dev/nvme0n1p3
  • btrfs 생성
lsblk
# nvme0n1     259:0    0 476.9G  0 disk 
# ├─nvme0n1p1 259:1    0   512M  0 part 
# ├─nvme0n1p2 259:2    0   384G  0 part 
# └─nvme0n1p3 259:3    0  92.4G  0 part 

sudo mkfs.btrfs -f /dev/nvme0n1p3

끝.

GlusterFS 설치

개요

  • 구성 - 여기서는 아래와 같이 서버/클라를 구분했지만, 모든 노드를 서버/클라로 잡아줘도 상관없다.
    • sbc1(opi5p1): 클라이언트
    • sbc2(opi5p2): 서버/노드/피어
    • sbc3(opi5p3): 서버/노드/피어
    • sbc4(opi5p4): 서버/노드/피어
  • 디스크 - 92GB x 3노드 ~= 278GB

준비

  • K3s 설치를 제외하고 이전 메모에 적어둔 모든 작업을 먼저 진행
  • 모든 sbc의 /etc/hosts에 아래 내용 추가
127.0.0.1 localhost
...

172.16.0.10 opi5p1
172.16.0.20 opi5p2
172.16.0.30 opi5p3
172.16.0.40 opi5p4

설치 - Server

  • fs 준비 - 모든 노드에서
sudo mkdir /mnt/glufs
sudo mount /dev/nvme0n1p3 /mnt/glufs
  • glusterfs-server 설치 및 활성화 - 모든 노드에서
sudo apt install glusterfs-server

sudo systemctl start glusterd
systemctl enable glusterd
  • 각 피어 연결 - 아무거나 하나의 노드에서
# 여기서는 opi5p2에서 실행
sudo gluster peer probe opi5p3
sudo gluster peer probe opi5p4

# 연결상태 확인
sudo gluster peer status
sudo gluster pool list
  • 볼륨 생성 (Distributed Volume) - 아무거나 하나의 노드에서
# 여기서는 opi5p2에서 실행
sudo gluster volume create dist_vol \
opi5p2:/mnt/glufs/brick \
opi5p3:/mnt/glufs/brick \
opi5p4:/mnt/glufs/brick

# 볼륨 확인
sudo gluster volume info
  • 볼륨 서비스 시작
sudo gluster volume start dist_vol

설치 - Client

  • fs 준비 - 헷갈릴거 같아서 /mnt대신 /media로 잡음
sudo mkdir /media/gludisk
  • glusterfs-client 설치
sudo apt install glusterfs-client
  • 마운트
sudo mount.glusterfs opi5p2:/dist_vol /media/gludisk

동작 확인 - 자동화 귀찮다. 전체 재부팅 시 확인만..

  • 서버 - xfs 마운트 > gluster volume 재시작
# 모든 노드에서 입력
sudo mount /dev/nvme0n1p3 /mnt/glufs

# 하나의 노드에서 입력
sudo gluster volume stop dist_vol
sudo gluster volume start dist_vol
  • 클라이언트
sudo mount.glusterfs opi5p2:/dist_vol /media/gludisk

끝.

MPI

노드

  • 구성 - opi5p1 ~ opi5p4 까지 총 4대
  • OpenMP, MPICH, OpenMPI 중에 OpenMPI 사용. 장난감 수준에서는 딱히 차이가 없다고 한다.
  • 검색해보면 ssh와 nfs가 필요하다는데 모르겠고 ssh만 설정함

openmpi 설치

  • 소스 컴파일 안하고 걍 apt로 설치
sudo apt install openmpi-bin openmpi-common libopenmpi-dev

설치 확인

# 모든 노드에서 실행
mpicc --showme
# gcc -I/usr/lib/aarch64-linux-gnu/openmpi/include -I/usr/lib/aarch64-linux-gnu/openmpi/include/openmpi -L/usr/lib/aarch64-linux-gnu/openmpi/lib -lmpi

ssh 키 등록

  • ssh-agent 실행 및 키 등록
# 모든 노드에서 실행
eval `ssh-agent`
ssh-add .ssh/my_key.pem
# Identity added: .ssh/my_key.pem (username@opi5p0)
  • 등록된 키 목록 - 키 등록했는지 확인이 필요하면
ssh-add -l
  • 등록된 키 삭제 - 키를 잘못 등록했으면
# 골라서 삭제
ssh-add -d .ssh/my_key.pem

# 모조리 삭제
ssh-add -D
  • 이후 모든 노드에서 ssh username@opi5p1 ~ 4 까지 접속해보고 known_host에 추가시킨다.

테스트

  • 예제 코드
/*
 hellompi.c
 source: https://bconfiden2.github.io/2022/05/15/mpi-cluster
 */

#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    MPI_Init(NULL, NULL);

    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);

    char processor_name[MPI_MAX_PROCESSOR_NAME];
    int name_len;
    MPI_Get_processor_name(processor_name, &name_len);

    printf("Hello world from processor %s, rank %d out of %d processors\n",
           processor_name, world_rank, world_size);

    MPI_Finalize();
}
  • 예제 코드를 아래와 같이 컴파일 후 실행
mpicc hellompi.c
mpirun -np 4 -host opi5p1,opi5p2,opi5p3,opi5p4 ./a.out 
# Hello world from processor opi5p1, rank 0 out of 4 processors
# Hello world from processor opi5p3, rank 2 out of 4 processors
# Hello world from processor opi5p4, rank 3 out of 4 processors
# Hello world from processor opi5p2, rank 1 out of 4 processors

끝.

기타 설치

Node.js 20 LTS

기본 상태에서는 16 보다 높은 버전으로 올리지 못한다

  • apt 키, 저장소 추가
sudo apt install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
  • 우선순위 설정 - liujianfeng1994-ubuntu-rockchip-multimedia-jammy.list 보다 먼저 걸리게 설정
# sudo touch /etc/apt/preferences.d/nodesource
# sudo vi /etc/apt/preferences.d/nodesource

Package: *
Pin: origin deb.nodesource.com
Pin-Priority: 1601
  • 설치 - 기존 설치본은 sudo apt remove nodejs 명령으로 삭제 후 설치
sudo apt update
sudo apt install nodejs

Yarn (classic)

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/yarn-keyring.gpg
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

sudo apt update
sudo apt install yarn

생각나면 계속 작성.

끝.

@lian6605
Copy link

재밌게 잘 봤습니다

@edp1096
Copy link
Author

edp1096 commented May 26, 2024

재밌게 잘 봤습니다

감사합니다 :)

@apwlq
Copy link

apwlq commented Apr 21, 2025

잘 읽었습니다

@edp1096
Copy link
Author

edp1096 commented Apr 21, 2025

잘 읽었습니다

@apwlq 감사합니다 :)

@alexxony
Copy link

Email로 문의 드리긴 했는데 여기다 다시 물어봐도 될까요

@edp1096
Copy link
Author

edp1096 commented Apr 28, 2025

Email로 문의 드리긴 했는데 여기다 다시 물어봐도 될까요

@alexxony 안녕하세요. 설치 후 부팅이 안되는 부분은 저의 경우, 블록크기(BS)를 크게 잡았을 때 부팅이 안돼서 ssd에 여러 번 덮어씌우기를 반복해서 부팅에 성공했습니다. 그 외에는 공급전력 부족이 원인이라서 이 부분은 전류량이 높은 아답터로 해결했습니다.

@alexxony
Copy link

Email로 문의 드리긴 했는데 여기다 다시 물어봐도 될까요

@alexxony 안녕하세요. 설치 후 부팅이 안되는 부분은 저의 경우, 블록크기(BS)를 크게 잡았을 때 부팅이 안돼서 ssd에 여러 번 덮어씌우기를 반복해서 부팅에 성공했습니다. 그 외에는 공급전력 부족이 원인이라서 이 부분은 전류량이 높은 아답터로 해결했습니다.

오렌지 파이 공식 이미지로는 성공을 했었습니다 그리고 어댑터도 이미 특별히 구매를 했던 것입니다.

@edp1096
Copy link
Author

edp1096 commented Apr 28, 2025

@alexxony 위에 트러블슈팅 보니까 저도 기억이 나는데, 저기에 적힌대로 bs값을 바꿔가며 부팅이 될 때까지 계속 시도했었습니다.
제가 갖고 있는 opi5p 보드 5대 중에 한 대가 불량이었는데 화면이 아예 안 나오고 그러지는 않았고, 부팅 중이나 부팅 후에 문제를 일으켰습니다.

@alexxony
Copy link

@alexxony 위에 트러블슈팅 보니까 저도 기억이 나는데, 저기에 적힌대로 bs값을 바꿔가며 부팅이 될 때까지 계속 시도했었습니다. 제가 갖고 있는 opi5p 보드 5대 중에 한 대가 불량이었는데 화면이 아예 안 나오고 그러지는 않았고, 부팅 중이나 부팅 후에 문제를 일으켰습니다.

발레나 엣처로 sd 카드를 굽고 작동하면 red-green 라이트 반복인데, 리눅스 상에서 dd로 하면 red 라이트만 나옵니다.

그리고 삭제를 하지 않는다는게, 구우기 전에 포맷을 하면 안된 다는 것입니까?

@edp1096
Copy link
Author

edp1096 commented Apr 29, 2025

@alexxony 빨간불만 나온다면 부팅할 수 없는 상태가 맞을겁니다.
어차피 dd 써서 바이트 단위로 쓰는건데 포맷이라는게 의미가 없겠지요. 저도 안되서 이것저것 막 하다보니 삭제는 따지지 않고 dd로 계속 덮어씌웠습니다.
레딧에 오렌지파이 포럼이 있는데 그곳에 질문을 올려보시면 답을 얻을 수도 있을 것 같습니다.

@alexxony
Copy link

@alexxony 빨간불만 나온다면 부팅할 수 없는 상태가 맞을겁니다. 어차피 dd 써서 바이트 단위로 쓰는건데 포맷이라는게 의미가 없겠지요. 저도 안되서 이것저것 막 하다보니 삭제는 따지지 않고 dd로 계속 덮어씌웠습니다. 레딧에 오렌지파이 포럼이 있는데 그곳에 질문을 올려보시면 답을 얻을 수도 있을 것 같습니다.

빨간불 녹색불 반복으로 나오면 어떤 상태 인지요?? + 레딧에서 orange pi , rockchipnpu 포럼에서 물어봤는데 자기들은 문제 없이 잘된다 이래서요...

https://www.reddit.com/r/RockchipNPU/comments/1k89skv/how_to_update_rknpu_driver_update/

@edp1096
Copy link
Author

edp1096 commented Apr 30, 2025

@alexxony opi5p에서 퀄컴 퀵차지 말고 일반 5V4A 아답터라면 보통은 잘 동작할건데 혹시 어떤 아답터 쓰시는지 알 수 있을까요?

@alexxony
Copy link

alexxony commented May 1, 2025

@alexxony opi5p에서 퀄컴 퀵차지 말고 일반 5V4A 아답터라면 보통은 잘 동작할건데 혹시 어떤 아답터 쓰시는지 알 수 있을까요?

선전 선샤인 테크놀로지에서 제작한 I.T.E 파워 서플라이입니다 5V4A 맞습니다.

공식 홈 이미지는 부팅도 잘됩니다. 다만 그게 아닌 경우는 적-녹 신호에 디스플레이가 안나와서 그렇죠.

@alexxony
Copy link

alexxony commented May 1, 2025

@alexxony opi5p에서 퀄컴 퀵차지 말고 일반 5V4A 아답터라면 보통은 잘 동작할건데 혹시 어떤 아답터 쓰시는지 알 수 있을까요?

https://docs.armbian.com/User-Guide_Getting-Started/

이거 대로 따라해봤습니다.

윈도우에서 sd카드 포맷하고 그 다음 usbmanager로 구웠는데

이번에는 빨간불은 안나오지만 녹색불만 계속 켜있더군요..

@edp1096
Copy link
Author

edp1096 commented May 2, 2025

@alexxony sd카드만 쓰는 중이라면 ssd를 시도해보시면 좋겠습니다.

01_os-installation.md / 운영체제 설치 및 설정 에도 적었듯이 저는 공식 이미지를 올린 sd카드로 부팅된 리눅스에서 sd카드에 다른 os이미지를 다운로드 받고 ssd에 다른 os 이미지의 쓰기를 하는 식으로 작업했습니다.

sd카드 부팅은 제가 경험이 적고 ssd에 비해 선호하지 않아서 도움 드리기가 쉽지 않네요.

성공하시길 빕니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment