openwrt: 판올림 후 extroot 인식 불가? 재설치/재설정 간단 정리.

** 2023.05.19 현재.

이 문서보다는, 좀 더 정리가 잘 된 ‘더’ 간단 정리를 참고하라.


지금껏 이런 적은 없었는데, openwrt 펌웨어(19.07.7 -> 19.07.8) 판올림 후 extroot 인식이 안되는 사태(?)가 벌어졌다. 물론, 매번 하던 대로 조치를 취했으나, 여전히 extroot 는 내 품으로 돌아와주질 않았다. (아! 더운 여름, 귀찮은 일만 자꾸 생기네.)

왜 그런지 메시지라도 볼 수 있으면 좋으련만, USB 드라이브를 붙이고 전원을 넣으면 아예 공유기가 제대로 부팅을 하지 않으니 별 도리가 없다. (이 때 로그를 볼 방법도 있긴 할텐데.. 거기까지 파보기엔 내 열정이 너무나 차갑게 식어있다.)
이 상황에서 그나마 정신건강을 지키면서 공유기를 되살릴 방법은 extroot 초기화 뿐!

그나마 설정파일은 고스란히 남아있으므로, 내가 쓰던 꾸러미들 설치만 해주면 크게 신경쓸 일은 없다.
여기선, 내가 그동안 openwrt 에서 쓰던 프로그램들 목록을 기록해두는 의미와 함께, 기타 간단한 설정만 언급하기로 한다.


시스템에서 선행해야할 작업

일반 사용자 생성

물론, extroot 만 날아간 상태라면 이 작업은 이미 돼 있었겠지만, 만약 초기화가 된 경우, 사용자 생성 작업은 extroot 추가 전, 시스템에서 해야 옳다. extroot 를 한 후에 해도 되긴 하지만, 여기서 하는게 맞다고 여겨진다.
자세한 내용은 연결된 글을 참고하고, 이 작업에 필요한 꾸러미(sudo)는 아래 ‘추천’에 포함시켰다.

설치할 꾸러미

extroot 를 쓰려는 이유는, 결국 많은 프로그램을 내려받아 사용하겠다는 뜻이 되겠지만, 가능한한 작은 시스템 저장공간이라도 설치해두는게 좋은 프로그램들도 있다.
이 중엔 ‘반드시’ 해야만 하는 것도 있고, 그렇지 않은 것도 있다. Stubby 같은게 후자인데, DNS 관련 오작동을 피하기 위해 여기 설치해두는 편이 좋다.

필수 :

opkg update && opkg install block-mount kmod-fs-ext4 kmod-usb-storage kmod-usb-ohci kmod-usb-uhci

추천 :

opkg update && opkg install stubby vim-full nnn mc coreutils-ls sudo

mc 보다는 이제부턴 nnn 에 익숙해지도록 하자! (2023.05)
여기까지 설치하고, 공유기에 접속된 각 기기들에서 인터넷 접속에 이상이 없는지 확인한 후, 다음 단계로 진행한다.
특히 Stubby 설정 확인이 가장 중요하다!

EXT Root 재 설정

예전에 쓴 글 내용을 참고하여, 새롭게 ext root 를 만든다. 기존에 사용하던 디렉토리는 임시로 다른 디렉토리로 옮겨놓고 작업한다.

다만, 재설치이므로 파티션 작업은 불필요하다. 기존 디렉토리는 모두 지우고, 새롭게 /overlay 를 복사하는 작업만 해주면 된다.

작업한 후, 부팅해서, mount 상태를 확인해보고(Luci 에서 mount 메뉴를 통해. /overlay 의 용량이 USB 드라이브 용량과 같은지 확인하면 간단하다.), 이상이 없다면 새로 생성된 /etc/config 디렉토리로 지금까지 사용해왔던 설정 파일을 모두 복사해준다.

그외.. 몇가지 더 복사할 파일이 있을 수도 있겠는데.. 아무튼 이럴 필요가 있다면 원래 파일들을 새 위치로 복사해주면 된다.

꾸러미 설치및 설정

openwrt 에서 사용해오던 꾸러미들 목록.

자질 구레 파일들

opkg install coreutils-whoami rsync tar lsblk usbutils whereis shadow-su wakeonlan rpcbind grep tmux iputils-ping ip-full htop

rpcbindrpcinfo 를 포함하고 있는 꾸러미다.

사용자 계정 생성관련, sudo 및 openssh

여기는 명령어를 한번에 적을 순 없고, 이전 글을 참고하여 그대로 따라하면 되겠다. (다만, /etc/passwd 등은 그대로 보존이 되어 있으니 다시 만들 필요는 없다.)

사실, ‘사용자 계정 생성’ 보다는, /etc/passwd 등을 원 위치로 복사해주는 작업이라 해야 좀 더 확실하겠다. /etc 산하 사용자 관련 파일들과, /home/user 디렉토리에 있던 모든 파일을 복사해준다. 특히, ~/.ssh 산하에 authorized_keys 가 있어야 openssh 연결이 가능해진다.

zsh 및 ohmyzsh 설치

opkg install ca-certificates zsh wget git-http

만약, /etc/passwd사용 Shell 이 zsh 로 되어 있다면, openssh 를 설치했다하더라도 zsh 가 설치되기 전까진 접속이 되지 않는다. 따라서, zsh 까지 설치한 후 ssh 접속을 해야 한다.

/etc/passwd 에서, zsh 를 사용할 사용자의 Shell 을 zsh 로 바꿔준다.

  • ash : owrt:x:1000:1000:aaabbbb:/home/owrt:/bin/ash
  • zsh : owrt:x:1000:1000:aaabbbb:/home/owrt:/usr/bin/zsh

oh my zsh 는, 일반 계정으로 로그인 후 다음 스크립트를 실행한다.

sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Duck DNS

opkg install ddns-scripts ca-certificates wget luci-app-ddns

nfs

opkg install nfs-utils kmod-fs-nfs kmod-fs-nfs-v3

WireGuard

opkg install luci-proto-wireguard luci-app-wireguard kmod-wireguard wireguard-tools

** openwrt 21.02.0 이후부터는, 커널 5 를 사용하기 때문에 wireguard 꾸러미는 불필요하다. 커널에서 지원을 하므로 그냥 설정하면 되는 듯은 한데, 혹시 안된다면 kmod-wireguard 꾸러미가 필요할 수도 있겠다. (이전판까지는 wireguard 꾸러미를 설치해야먄 했다.)
kmod-wireguard 가 필요하다. (23.04.12)

Wireguard 설정 후, 재부팅 또는 서비스 재실행을 해야 기존에 설정해놓은 network 카드 설정이 제대로 인식된다.

/etc/init.d/network restart

# network reload 로는 안되더라..

extroot 가 날아가고, 따라서 wireguard 를 못쓰게 되고 나서야 깨달았는데, 내가 WireGuard 를 꽤 자주 사용하고 있었다. 없으니 은근히 불편함이 많네..

cron 설정

이전 크론 파일(/etc/crontabs/*)을 복사한 뒤, /etc/init.d/cron restart 로 재시작해줘야 한다. (예전엔 그냥 복사만 해줘도 됐었던 듯 한데..)

설정 및 복사해줘야할 파일?

/sbin/backup-to-nfs
/etc/config/*
/etc/crontabs/*
/usr/share/mc
/home/user

이 정도면 된 듯 한데..??

Author: 아무도안

안녕하세요. 글 남겨주셔서 고맙습니다.