오렌지파이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=directsudo mkdir /media/usb
ls /dev/sd*
# sudo mount -t ntfs-3g /dev/sda1 /media/usb
sudo mount -t exfat /dev/sda1 /media/usbdd로 삭제없이 될 때까지 이미지 쓰기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.targetsudo systemctl enable heartbeat-green-only.servicesudo apt install gnome-shell-extension-managersudo 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: 2sudo 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.comproxyserver:
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: 1620proxyserver:
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: 1630proxyserver:
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.shsudo 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.targetsudo systemctl enable shutdown-k3s.servicekubectl --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 noe2fsck -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/nvme0n1p2384GB로 줄이고 아래와 같이 남은 공간에 파티션 생성
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/nvme0n1p3lsblk
# 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 infosudo gluster volume start dist_vol/mnt대신 /media로 잡음sudo mkdir /media/gludisksudo apt install glusterfs-clientsudo mount.glusterfs opi5p2:/dist_vol /media/gludiskxfs 마운트 > gluster volume 재시작# 모든 노드에서 입력
sudo mount /dev/nvme0n1p3 /mnt/glufs
# 하나의 노드에서 입력
sudo gluster volume stop dist_vol
sudo gluster volume start dist_volsudo 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 -Dssh 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.listliujianfeng1994-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: 1601sudo apt remove nodejs 명령으로 삭제 후 설치sudo apt update
sudo apt install nodejscurl -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생각나면 계속 작성.
끝.
재밌게 잘 봤습니다
감사합니다 :)
잘 읽었습니다
잘 읽었습니다
@apwlq 감사합니다 :)
Email로 문의 드리긴 했는데 여기다 다시 물어봐도 될까요
Email로 문의 드리긴 했는데 여기다 다시 물어봐도 될까요
@alexxony 안녕하세요. 설치 후 부팅이 안되는 부분은 저의 경우, 블록크기(BS)를 크게 잡았을 때 부팅이 안돼서 ssd에 여러 번 덮어씌우기를 반복해서 부팅에 성공했습니다. 그 외에는 공급전력 부족이 원인이라서 이 부분은 전류량이 높은 아답터로 해결했습니다.
Email로 문의 드리긴 했는데 여기다 다시 물어봐도 될까요
@alexxony 안녕하세요. 설치 후 부팅이 안되는 부분은 저의 경우, 블록크기(BS)를 크게 잡았을 때 부팅이 안돼서 ssd에 여러 번 덮어씌우기를 반복해서 부팅에 성공했습니다. 그 외에는 공급전력 부족이 원인이라서 이 부분은 전류량이 높은 아답터로 해결했습니다.
오렌지 파이 공식 이미지로는 성공을 했었습니다 그리고 어댑터도 이미 특별히 구매를 했던 것입니다.
@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에 비해 선호하지 않아서 도움 드리기가 쉽지 않네요.
성공하시길 빕니다.
재밌게 잘 봤습니다