오렌지파이5플러스
로 간단한 데탑환경 만들기- 2.5Gbps 듀얼랜을 이용하여
스위칭허브
없이데이지체인
으로 구성된 클러스터 만들기
끝.
오렌지파이5플러스
로 간단한 데탑환경 만들기스위칭허브
없이 데이지체인
으로 구성된 클러스터 만들기끝.
nvme
류의 부품을 달면 과부하시 순간적으로 16와트 넘게 튀므로 5V/4A 필요. 달린게 없으면 5V/3A 충전기도 괜찮음.dd
사용. 나는 Etcher로 ssd 이미징이 안돼서 sd카드로 띄운 리눅스에서 dd
로 이미징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
sudo mkdir /media/usb
ls /dev/sd*
# sudo mount -t ntfs-3g /dev/sda1 /media/usb
sudo mount -t exfat /dev/sda1 /media/usb
dd
로 삭제없이 될 때까지 이미지 쓰기fcitx5
, fcitx5-hangul
설치 및 재시작 > 설정에서 hangul 추가htop
온도가 N/A
로 표시됨 - 뭔짓을 해도 안되니 포기하고 psensor
사용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"
KB국민은행
은 보안 프로그램이 필요 없어서 브라우저 인증서로 잘 동작하고, 다른 은행은 강제하는 보안프로그램이 Linux aarch64를 지원하지 않아서 포기systemd
서비스로 추가.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
sudo apt install gnome-shell-extension-manager
sudo apt install gnome-tweak-tool
* 파란화면, 녹색화면 나올 때 - `--hwdec=videotoolbox`
* 볼륨 작을 때 - `--volume-max=200`
아래처럼 하던지 아니면, export
제외한 아래 환경변수를 /etc/environment
에 추가
export PAN_MESA_DEBUG=gofaster,gl3
윈도우의 GoodbyeDPI
비스무리하게.. SNI, DPI 등. iptables
설치 필요
sudo iptables -A INPUT -p tcp --tcp-flags RST RST --sport 443 -j DROP
끝.
Orange Pi 5 Plus
에 붙어있는 듀얼랜을 이용하여 daisy chain topology로 cluster 꾸미기.. 위한 초기작업 메모enP3p49s0
, 다음은 enP4p65s0
# 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
# 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
# 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
# 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
sudo netplan apply
# sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1
# 설정 적용
sudo sysctl -p
# 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
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
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
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
검색하면 많이 나오니까 생략. 나는 어차피 장난감이라 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)
# ...
끝.
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
# 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 -
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
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
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>...
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>...
끝.
sbc1 ~ sbc4 모두 아래와 같이 진행
sd 부팅 - 오렌지파이5플러스
용 서버 기본이미지 알아서 굽고 부팅..
known_host 체크 건너뛰기 #1 - 모니터 안쓰고 ssh접속시 같은 ip 충돌 무시
ssh -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" userid@hostip
~/.ssh/config
에 아래 내용 추가# ~/.ssh/config
LogLevel ERROR
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
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.
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
384GB로 줄이고 아래와 같이 남은 공간에 파티션 생성
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.
# ...
fdisk -l 실행시 아래 msg의 빨간색 메시지가 나오면 아래 parted 같이 실행
GPT PMBR size mismatch (8191 != 32767) will be corrected by write.
The backup GPT table is not on the end of the device.
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
# ...
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
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
끝.
서버/클라
를 구분했지만, 모든 노드를 서버/클라
로 잡아줘도 상관없다.
K3s 설치
를 제외하고 이전 메모에 적어둔 모든 작업을 먼저 진행/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
모든 노드
에서sudo mkdir /mnt/glufs
sudo mount /dev/nvme0n1p3 /mnt/glufs
모든 노드
에서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
아무거나 하나의 노드
에서# 여기서는 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
/mnt
대신 /media
로 잡음sudo mkdir /media/gludisk
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
끝.
OpenMPI
사용. 장난감 수준에서는 딱히 차이가 없다고 한다.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
# 모든 노드에서 실행
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
끝.
기본 상태에서는 16 보다 높은 버전으로 올리지 못한다
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
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
생각나면 계속 작성.
끝.
@alexxony 빨간불만 나온다면 부팅할 수 없는 상태가 맞을겁니다.
어차피 dd 써서 바이트 단위로 쓰는건데 포맷이라는게 의미가 없겠지요. 저도 안되서 이것저것 막 하다보니 삭제는 따지지 않고 dd로 계속 덮어씌웠습니다.
레딧에 오렌지파이 포럼이 있는데 그곳에 질문을 올려보시면 답을 얻을 수도 있을 것 같습니다.
@alexxony 빨간불만 나온다면 부팅할 수 없는 상태가 맞을겁니다. 어차피 dd 써서 바이트 단위로 쓰는건데 포맷이라는게 의미가 없겠지요. 저도 안되서 이것저것 막 하다보니 삭제는 따지지 않고 dd로 계속 덮어씌웠습니다. 레딧에 오렌지파이 포럼이 있는데 그곳에 질문을 올려보시면 답을 얻을 수도 있을 것 같습니다.
빨간불 녹색불 반복으로 나오면 어떤 상태 인지요?? + 레딧에서 orange pi , rockchipnpu 포럼에서 물어봤는데 자기들은 문제 없이 잘된다 이래서요...
https://www.reddit.com/r/RockchipNPU/comments/1k89skv/how_to_update_rknpu_driver_update/
@alexxony opi5p에서 퀄컴 퀵차지 말고 일반 5V4A 아답터라면 보통은 잘 동작할건데 혹시 어떤 아답터 쓰시는지 알 수 있을까요?
@alexxony opi5p에서 퀄컴 퀵차지 말고 일반 5V4A 아답터라면 보통은 잘 동작할건데 혹시 어떤 아답터 쓰시는지 알 수 있을까요?
선전 선샤인 테크놀로지에서 제작한 I.T.E 파워 서플라이입니다 5V4A 맞습니다.
공식 홈 이미지는 부팅도 잘됩니다. 다만 그게 아닌 경우는 적-녹 신호에 디스플레이가 안나와서 그렇죠.
@alexxony opi5p에서 퀄컴 퀵차지 말고 일반 5V4A 아답터라면 보통은 잘 동작할건데 혹시 어떤 아답터 쓰시는지 알 수 있을까요?
https://docs.armbian.com/User-Guide_Getting-Started/
이거 대로 따라해봤습니다.
윈도우에서 sd카드 포맷하고 그 다음 usbmanager로 구웠는데
이번에는 빨간불은 안나오지만 녹색불만 계속 켜있더군요..
@alexxony sd카드만 쓰는 중이라면 ssd를 시도해보시면 좋겠습니다.
01_os-installation.md / 운영체제 설치 및 설정
에도 적었듯이 저는 공식 이미지
를 올린 sd카드로 부팅된 리눅스에서 sd카드에 다른 os
이미지를 다운로드 받고 ssd에 다른 os 이미지
의 쓰기를 하는 식으로 작업했습니다.
sd카드 부팅은 제가 경험이 적고 ssd에 비해 선호하지 않아서 도움 드리기가 쉽지 않네요.
성공하시길 빕니다.
오렌지 파이 공식 이미지로는 성공을 했었습니다 그리고 어댑터도 이미 특별히 구매를 했던 것입니다.