있는 공유기에 OpenWRT를 설치하는 삽질까지 감당하지는 못하겠고...

OpenWRT가 사전 인스톨되어 있는 공유기를 찾아보던 중

 

https://www.amazon.com/GL-iNet-GL-MT1300-Wireless-Pocket-Sized-Repeater/dp/B08MKZXGBY/ref=sr_1_1?crid=27Y14K9DBSJ4M&keywords=gl.inet+mt1300&qid=1655864572&sprefix=gl.inet+mt130%2Caps%2C240&sr=8-1 

 

 

Amazon.com

Enter the characters you see below Sorry, we just need to make sure you're not a robot. For best results, please make sure your browser is accepting cookies.

www.amazon.com

 

아마존에서 적당한 공유기를 찾았... 다고 생각했는데 

알고 보니 2-3만원 정도 더 지불하면 훨씬 좋은 공유기를 고를 수 있었지만

이미 주문한 거 어쩌겠나.

국내 주문이었으면 반품 후 새로 주문하기라도 했겠지만 해외배송 왔다갔다도 너무 귀찮았고 작고 귀여운 맛에 그냥 쓰기로 했다. 

 

내장 Storage가 128MB 였기 때문에 리눅스 패키지 몇 개 깔면 용량이 꽉 차서

Micro SD를 찾아서 꽂은 다음 패키지 설치 기본 영역인 /overlay에 마운트되어 있는 기본 Storage를 umount후 SD 카드를 ext4로 포맷하여 /overlay에 마운트해서 /overlay를 넓게 쓰는 작업을 우선 해주는데 이걸 Extroot라고 부르는 것 같다. 

 

https://openwrt.org/docs/guide-user/additional-software/extroot_configuration

 

Extroot configuration

Extroot configuration This article relies on the following: * Accessing OpenWrt CLI * Managing configurations * Managing packages * Managing services Introduction This guide describes how to configure OpenWrt to use a storage device (USB or SATA or SD card

openwrt.org

 

opkg update
opkg install block-mount kmod-fs-ext4 e2fsprogs fdisk
DEVICE="$(sed -n -e "/\s\/overlay\s.*$/s///p" /etc/mtab)"
uci -q delete fstab.rwm
uci set fstab.rwm="mount"
uci set fstab.rwm.device="${DEVICE}"
uci set fstab.rwm.target="/rwm"
uci commit fstab
block info
/dev/mtdblock2: UUID="9fd43c61-c3f2c38f-13440ce7-53f0d42d" VERSION="4.0" MOUNT="/rom" TYPE="squashfs"
/dev/mtdblock3: MOUNT="/overlay" TYPE="jffs2"
/dev/sda1: UUID="fdacc9f1-0e0e-45ab-acee-9cb9cc8d7d49" VERSION="1.4" TYPE="ext4"
DEVICE="/dev/sda1"
mkfs.ext4 ${DEVICE}
eval $(block info ${DEVICE} | grep -o -e "UUID=\S*")
uci -q delete fstab.overlay
uci set fstab.overlay="mount"
uci set fstab.overlay.uuid="${UUID}"
uci set fstab.overlay.target="/overlay"
uci commit fstab
mkdir -p /tmp/cproot
mount --bind /overlay /tmp/cproot
mount ${DEVICE} /mnt
tar -C /tmp/cproot -cvf - . | tar -C /mnt -xf -	
umount /tmp/cproot /mnt
reboot

매뉴얼대로 하니 한번에 성공했는데,

중간에 (아마도) IP 설정을 변경하면서 뭐가 틀어진건지 Luci GUI가 먹통(정확히는 ID/PW 인증 실패로 로그인 불가) 현상이 발생하여 초기화를 한 뒤부터 삽질의 연속이 시작되었다. 

 

https://old.reddit.com/r/openwrt/comments/duvyxh/cant_log_in_through_chrome_since_update/f7c98vd/

 

Can't log in through Chrome since update

Please remove the index/modul cache from `luci` into the directories `/tmp/luci-*` connect to your brick via `ssh`...

old.reddit.com

 

Please remove the index/modul cache from luci into the directories /tmp/luci-*

connect to your brick via ssh [root@192.168.1.1](mailto:root@192.168.1.1)

control the existent of directory via ls -lias /tmp/luci*

If exists this directories then remove it

/etc/init.d/uhttpd stop
rm -fr /tmp/luci-*
/etc/init.d/uhttpd start

Now you should be connect to your brick luci via Webbrowser without errors:

http://192.168.1.1/cgi-bin/luci/admin
https://192.168.1.1/cgi-bin/luci/admin

열심히 구글링을 해서 luci의 캐시도 지워보고

 

https://hamy.io/post/0016/how-to-properly-remove-luci-from-openwrt/

 

How to properly remove LuCi from OpenWrt | Hamy - The IT Guy

In this post, we're going to discuss the proper ways of removing LuCi web interface from OpenWrt firmwares for good.

hamy.io

opkg --autoremove remove luci

 

LuCi 자체를 지워보기도 하고... 

 

별짓을 다했는데 결국 공유기 초기화 후 매뉴얼대로 다시 설정을 하니 마운트가 되기는 했다. 

그런데 이번에는 SD카드가 /overlay 영역에 마운트됐다가 리부팅하니 떨어져 나가는 증상 발생. 

 

뒤져보니 /etc/fstab에 이전 SD카드의 UUID가 박혀있어서 현재 UUID로 수정하니 리부팅해도 정상적으로 마운트가 확인되었고...

 

/overlay 영역도 32GB가 정상적으로 인식되었다. 

 

https://www.nemonein.xyz/2020/07/4014/

 

Openwrt : Extroot; 외부 드라이브를 root 화. – 바깥 세상으로

 

www.nemonein.xyz

 

한글로 써주신 분도 계신데... 영문이어도 초보자들에게는 오피셜 매뉴얼이 좀 쉽지 않나 싶다. 

하지만 덕분에

opkg update를 매번 리부팅 때마다 새로 입력해야 했던 이유가 /var/opkg-lists 가 메모리에 저장돼서 생기는 현상임을 알게됐다..

 

vi /etc/opkg.conf 로 수정시 디스크에 저장할 수 있음.

원래 값 : lists_dir ext /var/opkg-lists
바꿀 값 : lists_dir ext /usr/lib/opkg/lists
 
LuCi 설치 - 정상 동작까지 확인.
반응형

'Computer > Linux' 카테고리의 다른 글

Synology NAS - Goolgle Photo 백업 설정기  (0) 2023.09.26

Synology DS920+를 구매하여 사진 백업 용으로 아주 잘 사용 중이나...

 

결국 하드디스크라는 게 물리적으로 움직이는 장치인지라

아무리 RAID5라고 해도 HDD 1개 터지고 리빌딩 전에 또 안터진다는 보장이 없다. 

 

그렇다고 백업용 NAS를 또 구입하기도 그렇고...

이러한 이유로 무려 원본 백업 무제한을 지원하는 Google Pixel 폰 1세대를 중고로 구입하게 되었다. 

 

금방 할 줄 알았더만 꽤 긴 시간이...

 

가장 먼저 손쉬운 접근을 위하여 픽셀 폰을 SSH 서버로 만들어야 한다. 

안드로이드 어플로도 많기는 한데... 원래도 termux를 사용하기도 했고 그나마 제일 편해보여서 termux 설치하고 시작. 

 

 termux-setup-storage 로 스토리지 셋업하고 

termux-change-repo로 리포지토리를 잡아주면 되는데... 이 간단한 것부터 막히기 시작해서 험난한 길이 시작되었다-_-

 

pkg install openssh 설치가 안돼서 레딧을 엄청 뒤지다가 겨우 해결. 

openssh 설치 후 sshd 실행하면 ssh 서버 접속 가능. 

 

그리고 나서 시놀로지에 ssh로 접속해서 시놀로지 - 픽셀로 scp 스크립트 복제를 돌리려고 하니...

연결이 안됨... ㅋㅋㅋㅋㅋㅋ

 

한참 삽질을 했는데 알고 보니 termux openssh 접속 포트는 22가 아닌 8022. 

방화벽 패키지를 열심히 찾았는데 허탈... ㅋㅋㅋㅋㅋㅋ

 

1차 백업

그리고 나서 scp로 일괄 복사를 시작했으나...

아주 커다란 문제가 2개 있었다.

 

우선 scp로 폴더 하나 잡아서 복사를 때리면 

타겟 쪽에도 소스와 동일한 트리 구조의 폴더들이 주렁주렁 생기고

구글 포토에서 사진이 들어있는 폴더를 감지하면 그걸 수작업으로 일일이 동기화 하겠다고 눌러줘야 하는 아주 귀찮은 일이 기다리고 있었다...

 

결국 1차 백업 분량은 전부 수작업으로 진행.

 

거기다 더 짜증났던 게 여태까지는 시놀로지 Photos UI로 돌려서 몰랐는데 

시놀로지 포토가 썸네일 jpg를 대중소 사이즈로 주렁주렁 생성하고 있었고 그 파일까지 전부 복제를 걸어버리는 바람에

이 작은 파일들이 구글 포토 백업 대기열에 오픈런으로 줄을 서서 복제 속도가 어마어마하게 느려졌다...

 

구글 포토 어플리케이션의 백업 완료된 파일 일괄 삭제 기능으로 지우기는 했다만

속도가 엄청나게 느렸다. 

 

2차 백업 시도 후 실패

그래서 하위 폴더 파일을 찾아주는 find 명령어와 scp를 조합해서 넘기려는 구상을 했는데...

이번에는 자격 증명이 문제였다. 

아까는 자격 증명을 한번만 넣으면 됐는데 find로 파일을 하나씩 넘기는 구조다 보니 

파일 하나 넘어갈 때마다 패스워드를 입력해야 하는.. 현실적으로 불가능한 스크립트였고

Key 인증 방식으로 변경해야 했다. 

 

그런데 이눔의 시놀로지 서버는 ssh-copy-id 명령어가 없었고... 

공개키를 scp로 픽셀에 밀어넣고 그 키를 픽셀의 ~/.ssh/authorized_keys에 등록해줘야 했다...

그래서 하는 김에 파일명에 Syno 어쩌고가 포함되어 있는 썸네일 파일은 복사하지 않고 건너뛰는 스크립트를 chatGPT로 뽑아냈다.

 

 

find . -type f ! -iname "*syno*" -print0 | while IFS= read -r -d '' file; do
    if scp -v -r -P 8022 "$file" Account@IP:/data/data/com.termux/files/home/storage/downloads/"${file##*/}"; then
        echo "File '$file' copied successfully."
    else
        echo "Failed to copy '$file'."
    fi
done

파워쉘이 지원됐으면 훨씬 빨리 했을텐데 리눅스 바보라 너무 오래 걸림...

 

처음에 하고 싶었던 건 시놀로지 나스에서 한 장 가져와서 구글 포토 업로드 완료되면 삭제하는 걸

스크립트로 완전 자동화 하는 거였지만...

 

개발자도 아닌 주제에 거기까지는 도저히 실력이 안돼서 포기하고 중간에 방법을 좀 틀었는데 

이 정도면 그럭저럭 만족한다. 

추가로 오늘 알게된 사실이 구글 픽셀을 통한 업로드가 하루에 15GB 밖에 안된다고 해서

자동화 스크립트를 저기다 대입하면 또 예외 처리도 엄청나게 들어가야 할 것 같기도 하고...

 

단점이라고 한다면

가장 먼저 일일 업로드 제한 15GB일 것이고

두번째로는 픽셀 발열이 어마무시해서 쿨러 없이 쓸 생각은 안하는게 좋다는 것...

 

그래서 첫날은 내가 쓰던 탁상용 USB 선풍기를 틀어주다가 

120mm 쿨러를 하나 사서 틀어주고 있다. 

이제 발열은 해소.

 

2TB니까 엄청나게 오래 걸리겠지... 만 그래도 생각보다는 빠르게 스크립트 완성해서 다행 ㅎㅎ 

반응형

'Computer > Linux' 카테고리의 다른 글

OpenWRT - Extroot 설정 + opkg update 수정  (1) 2023.10.11

+ Recent posts