기타 IT정보

VM을 Docker로 구현

2020. 11. 23. 16:47

Docker는 가상화가 아니다!

처음에는 Docker에 Ubuntu나 CentOS를 설치해 사용했다.
사용하려는 목적이 Synology NAS에서 apt 패키지 매니저를 사용하기 위한 목적이었고, 쉘 사용이 쉬워서 OS 컨테이너를 사용했다.
그러니까... 가상화의 목적으로 사용했다는 것이다.

그러나 systemctl이나 네트워크 구성이 어려운 점, Docker의 목적과 달리 백업, 배포가 어려운 점 때문에 Docker에 OS를 돌리는 건 그만 두기로 했다.
그래서 아래와 같은 방법으로는 docker를 사용하지 않을 건데, 혹시 나중에라도 필요하게 될까봐 기록으로 남겨본다.

아래 방법을 따라하면 CentOS 이미지를 사용하여 Docker를 구성하고, systemctl을 사용할 수 있고, 고유의 IP를 부여할 수 있다.

VM을 Docker로 구현하려 함

VM

  • 모든 컴퓨터 하드웨어를 가상화하고 OS를 실행 함. 약 30% 성능 저하가 있음.
  • 최근에는 Hypervisor를 사용하여 CPU가상화를 하지 않아 성능 저하가 낮은 편. 하지만 기타 IO장치들은 가상화를 하기 때문에 IOPS가 낮음. (최대 50% 저하)
  • OS 설치해야 함. 메모리 및 디스크 관리를 호스트 OS와 가상 OS에서 동시에 수행하며, 가상 OS에 할당한 메모리는 호스트에서 사용할 수 없음.

Docker

Docker의 원래 목적은 OS 자체를 가상화하는 것이 아니고 프로그램별로 containerize(컨테이너화) 하는 것이다.

  • 운영체제를 설치하지 않고, 서비스에 필요한 패키지만 설치하고 설정파일을 import 하여 컨테이너로 만드는 방식이다.
  • OS가 없기 때문에 메모리, 디스크 관리를 호스트 OS에서만 관여하므로 오버헤드가 적다.
  • 단점은 OS가 없기 때문에 ssh같은 원격 접속 도구나 yum 같은 패키지 매니저가 없다는 것이다.
  • 같은 환경의 컨테이너를 몇 줄의 텍스트로 만들 수 있으며, 따라서 배포가 쉽다. 이런 방식 덕분에 낯선 방식이지만 서버 유지/보수는 더 쉽다.
  • docker의 목적상 호스트 컴퓨터의 환경을 따르기 때문에 기존의 가상머신처럼 개별적 IP를 부여하기 어렵다.
Docker로 환경을 구축하는 두 가지 방법
  1. OS 자체를 컨테이너에 구현하는 방법이다. 개별적인 IP를 부여하고자 할 때는 그 과정이 복잡하다. 지금까지는 이 방법으로 블로그를 운영했다.
    그리고 이 방법으로 컨테이너를 만드는 방법을 오늘 소개하려고 한다.
  2. Docker의 원래 목적대로 각 애플리케이션 별로 컨테이너를 만든다. 별도의 IP는 부여하지 않으며, 새로 구성할 때는 컨테이너를 새로 만들어야 한다.
    이 방식이 원래 Docker의 용도대로 이용하는 방법이다.
    2번 방법은 구축/유지 보수가 쉬운 장점이 있지만 낯선 방식 때문에 Docker에 익숙한 관리자가 필요하다.

Docker 설치

Docker repo 추가 및 설치

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io

systemctl enable docker

docker 볼륨 위치 이동, docker 네트워크에 dns 정보 강제 지정

nano /etc/docker/daemon.json
{
    "data-root": "/mnt/RAID-Storage/docker/",
    "dns": ["192.168.0.1"]
}

Docker에서 디스크 크기 제한을 가능하도록 변경

RAID-Storage에 quota 마운트 옵션 지정

nano /etc/fstab

UUID=...... /mnt/RAID-Storage xfs defaults,prjquota 0 1

원래 defaults인 부분을 defaults,prjquota로 변경한다.
이러면 xfs자체에서 quota 기능을 구현하고, docker는 xfs의 기능을 사용한다.

이후 컨테이너를 만들 때 --storage-opt size=120G 옵션 사용.

고유 IP 할당

고유 IP를 할당하기 위해 Linux 커널에서 기본으로 제공하는 가상 네트워크 어댑터를 활성화한다.

서버 부팅시에 macvlan을 자동으로 구성하는 스크립트.
cd /etc/sysconfig/network-scripts
wget https://raw.githubusercontent.com/larsks/initscripts-macvlan/master/ifdown-macvlan
wget https://raw.githubusercontent.com/larsks/initscripts-macvlan/master/ifup-macvlan
chmod +x ifup-macvlan ifdown-macvlan
macvlan 구성
nano /etc/sysconfig/network-scripts/ifcfg-macvlan

DEVICE="macvlan"
TYPE=macvlan
DEVICETYPE=macvlan
MODE=bridge
MACVLAN_MODE=bridge
PHYSDEV=br0
MACVLAN_PARENT=br0
BOOTPROTO=static
IPADDR=192.168.0.170
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no
ONBOOT=yes
Docker에서 macvlan 네트워크 생성
docker network create -d macvlan \
    --subnet=192.168.0.170/24 \
    --gateway=192.168.0.1 \
    -o parent=br0 \
    -o macvlan_mode=bridge \
    macvlan

이 후 컨테이너를 생성할 때 --network macvlan 옵션, --ip 192.168.0.XXX 옵션을 사용하고
각 컨테이너마다 docker exec -it "컨테이너 이름" "echo 'nameserver 192.168.0.1' >> /etc/resolv.conf" 를 수행해야 한다.

systemctl (서비스 관리 도구) 사용

docker는 기본적으로 systemctl을 사용할 수 없다. OS를 가상화하는 목적이 아니기 때문이다.
systemctl을 사용하기 위해서는 systemctl에 필요한 파일을 만들어야 한다.

빈 디렉토리에 Dockerfile 만들고 이미지 빌드
mkdir docker && cd docker
nano Dockerfile
FROM centos:7
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in ; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/;\
rm -f /etc/systemd/system/.wants/;\
rm -f /lib/systemd/system/local-fs.target.wants/; \
rm -f /lib/systemd/system/sockets.target.wants/udev; \
rm -f /lib/systemd/system/sockets.target.wants/initctl; \
rm -f /lib/systemd/system/basic.target.wants/;\
rm -f /lib/systemd/system/anaconda.target.wants/*;

# 언어셋 설치
RUN yum clean all \
&& yum repolist \
&& yum -y update \
&& sed -i "s/en_US/all/" /etc/yum.conf \
&& yum -y reinstall glibc-common

# epel-release 활성화
RUN yum install epel-release -y

# 기본적으로 필요한 OS 패키지를 설치한다.
RUN yum -y install tar unzip vi vim telnet net-tools iproute curl openssl \
apr apr-util apr-devel apr-util-devel nano firewalld git \
elinks locate python-setuptools

# ssh 서버 설치
RUN yum -y install openssh-server \
&& echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config \
&& echo 'PasswordAuthentication no' >> /etc/ssh/sshd_config \
&& mkdir /root/.ssh && echo 'ssh-rsa "키" kollhong@localhost.localdomain' >> /root/.ssh/authorized_keys\
&& yum clean all

RUN systemctl enable sshd

# 타임존 변경
ENV LANG=ko_KR.utf8 TZ=Asia/Seoul

# 컨테이너 실행시 실행될 명령
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

Dockerfile에 기반하여 컨테이너 이미지 생성

docker build --rm -t local/centos7 .

컨테이너 만들기

이제 docker run 명령어로 컨테이너를 만들어서 가상머신처럼 사용할 수 있다.

컨테이너를 만들 때 local/centos7 이미지로 container를 만들면 systemctl을 사용할 수 있다.

docker run --memory "2g" --storage-opt size=120G -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v "디스크 디렉토리":"컨테이너 마운트 위치" --privileged --network macvlan --restart always --ip "컨테이너 IP" --dns 192.168.0.1 -t -d --name "컨테이너 이름" local/centos7

-v 옵션은 호스트 컴퓨터의 볼륨을 컨테이너에 마운트한다.

systemctl을 사용하기 위해서는 아래 옵션이 필수적이다.
-v /sys/fs/cgroup:/sys/fs/cgroup:ro : 이 옵션은 systemctl을 사용하는데 필요한 컨트롤 그룹 정보를 컨테이너에서 확인할 수 있게 한다.
-t, -d : 이 옵션은 유사 TTY 환경을 구현하고, detatch 모드로 컨테이너를 실행한다.

예시

docker run --memory "2g" -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /mnt/RAID-Storage/docker_volumes/bio-processor/:/opt --privileged --network macvlan --restart always --ip 192.168.0.171 --dns 192.168.0.1 -t -d --name "bio-processor" local/centos7

컨테이너(게스트 컴퓨터) 접속

docker exec -it "컨테이너 이름" "명령"
명령은 보통 /bin/bash이다.

컨테이너 백업

현재 컨테이너를 image로 저장

docker commit "컨테이너 이름" "이미지 이름"

image를 tar로 내보내기

docker save -o "파일 이름.tar" "이미지 이름"

tar를 이미지로 불러오기

docker load -i "파일 이름.tar"

이미지 확인

docker image ls 명령을 사용해서 불러온 이미지가 있는지 확인

docker run... 명령을 사용할 때 이미지를 선택하여 컨테이너 생성할 수 있다.

CSS local font에 맑은 고딕만 인식되는 이유

2020. 9. 23. 16:41

이번에는 글 제목이 이상합니다.

원래는 서론, 본론, 결론부로 정확히 구분하여 포스팅을 작성했었죠.
그러다보니 글 작성 주기도 길어지고, 파트 구분이 어려운 글감은 버려지기도 했습니다.

앞으로 개발 이야기를 자주 쓰려고 하는데, 개발 이야기는 파트 구분이 어려운 주제인 듯합니다.
그래서 적어도 개발 이야기는 상당히 이상한 제목, 짧은 본문으로 자주 올려보려고 합니다.

문제의 인지

원래 블로그에 폰트를 Malgun Gothic, Apple SD Gothic Neo 두가지를 사용했습니다.
보통 모바일에도 둘 중 하나는 설치되어 있기 때문에 이렇게 설정했는데, 아이폰에서는 작동하지 않았습니다.
분명 Apple SD Gothic Neo가 폰트 이름이 맞는데 작동하지 않았습니다. 맑은 고딕 폰트는 잘 적용이 됐는데 말이죠.

구글링

대부분은 일관적인 사이트 경험을 위해 로컬 폰트보다 서버에 woff폰트를 저장하고 사용했습니다.
저는 HDD 서버를 사용했고, 반응형 페이지이기 때문에 폰트에 따라 사이트 경험이 크게 달라지지 않았죠. 그래서 시스템 폰트를 사용할 예정이었습니다.

그래서 폰트 이름이 인식되지 않는 문제로 아무리 구글링을 해봐도 서버에 업로드 된 woff 폰트의 경로와 이름을 잘 쓰면 인식 된다는 답변 뿐이었습니다.
게다가 맑은 고딕 폰트는 인식되고, 산돌 고딕 폰트는 인식되지 않으니 검색하기는 더 힘들었습니다. 산돌 고딕은 한글 폰트인데, 구글링을 할 때는 영어 위주로 검색해왔기도 하구요.

폰트의 Full Name을 사용해라

그러다가 로컬 폰트가 인식되지 않는 이유를 찾았습니다.
저는 CSS에서 폰트 패밀리를 인식해서 폰트의 weight가 클 경우 Bold 폰트를 불러오는 줄 알고 font-face를

src: local('Apple SD Gothic Neo'), local('Malgun Gothic');

로 적었습니다. 하지만 그게 아니었습니다.

PostScript name 또는 Full name을 사용해야 합니다.
맑은 고딕의 경우는 Regular Font의 Full name이 Malgun Gothic이기 때문에 CSS에서 인식할 수 있었지만,
애플 산돌 고딕의 경우는 Apple SD Gothic Neo Regular가 Full name이었습니다.
그래서 아이폰에서는 CSS에 정의 된 폰트를 인식할 수 없었던 것입니다.


위가 맑은 고딕 폰트입니다. Full name이 Malgun Gothic이죠.


애플 산돌 고딕은 다릅니다. Font family만 Apple SD Gothic Neo이고 Full name이나 PostScript name은 "Regular" 까지 써야 합니다.

아직 남은 의문

Full name은 언어에 따라 다릅니다. 한글 OS에서는 맑은 고딕, Apple SD 산돌고딕 Neo이고, 영문 OS에서는 Malgun Gothic, Apple SD Gothic Neo입니다.

지금까지는 영문으로만 적어도 적용 되는걸로 보이는데, 추가 확인이 필요합니다.

키보드, 한글 쿼티가 뭐야?

2020. 6. 14. 18:01

어디서 이런 단어가 나온걸까?

한글 쿼티라는 단어를 처음 접한 것은 삼성 스마트폰이 나온 이후이다.
갤럭시S의 한글 키보드 설정에 '쿼티'라는 단어를 넣은 것이다.

마침내는 커뮤니티 사이트에서도 '한글 쿼티'를 사용하기에 이르렀다.

의미 전달에는 문제가 없다. 하지만 실제로는 정말 말도 안 되는 표현이다.
그 이유를 얘기해보려 한다.

키보드 결정 요소

키보드를 경정하는 요소는 두 가지가 있다.
키보드 종류(Keyboard Type), 입력 방법(Input Method)

입력 방법 대신에 키보드 배열(Layout)이라고도 한다.
하지만 키보드 종류와 섞어 쓰는 경향이 있기 때문에 정확한 구분을 위해 입력 방법이라고 표현한다.

키보드 종류와 입력 방법을 선택할 수 있다.


윈도우 설치를 해봤다면 이런 화면 몇 번쯤 봤을 것이다.
윈도우 설치 과정에서 키보드의 종류와 키보드 입력 방법을 선택할 수 있다.

키보드 종류

키보드 종류는 쉽게 말하면 키보드가 보내는 신호의 종류를 말한다.
초기에는 키보드에 컴퓨터 제조사마다 신호가 달랐고, 윈도우는 범용 호환성이 타겟이었기 때문에 여러가지 키보드에 대한 호환성을 갖고 있다.

fn키 조합으로 101키를 입력할 수 있는 키보드

일반적으로 101키 키보드를 사용한다. 한/영 버튼이나 한자 버튼이 있다면 한글 103/106키를 사용하게 된다.
윈도우의 경우 101키 키보드로 한글을 입력할 경우 오른쪽 Alt를 한/영 버튼으로, 오른쪽 Ctrl을 한자 버튼으로 사용한다.

키보드의 종류에 따라 키보드의 모양이 바뀌고, 컴퓨터에 전송되는 신호가 달라진다. 또한 키보드 종류를 바꾸면 입력에 문제가 생기거나 한/영 전환이 불가능 할 수 있다.
하지만 키보드와 키보드 종류를 알맞게 선택한다면 어떤 언어도 문제 없이 입력할 수 있다.

키보드 입력 방법

키보드에 인쇄된 문자를 말한다.
키캡에 인쇄된 물리적인 차이만 존재할 뿐, 키보드 내부에는 어떤 차이도 존재하지 않는다.
키보드에 한글이 인쇄되어 있든 영문이 인쇄되어 있든 상관 없이 컴퓨터에 같은 신호를 보낸다.

한글 두벌식 표준의 'ㅂ'이나 영문 QWERTY의 'Q'나 같은 신호가 전송된다.
단지 차이는 컴퓨터에서(또는 운영체제에서) 같은 입력 신호에 대해 어떻게 해석하느냐의 차이인 것이다.
입력 방법이 영문 쿼티일 경우 한글 입력 방법으로 바꾸지 않는 한, 한글 입력은 불가능하다.

영문 : QWERTY

가장 큰 특징은 숫자키 아랫줄이 QWERTY로 시작한다는 것이다.
타자기에서 사용하던 배열으로, 입력 속도가 빠르면 타자기가 꼬이는 문제 때문에 최대한 비효율적으로 설계했다는 이야기가 있다.

QWERTY

영문(라틴어) : QWERTZ, AZERTY

QWERTZ는 독일, 오스트리아, 스위스 등에서 사용하는 키보드이다.
AZERTY는 프랑스, 벨기에 등에서 사양한다. 두 입력 방법은 발음 구별 기호를 입력할 수 있다.

숫자키 아래의 첫 줄이 각각 QWERTZ, AZERTY로 시작하는 특징이 있으며, 키보드 종류는 QWERTY와 같다.

한글 : 두벌식 표준

한글 키보드 중에서 자음과 모음으로 구분 된 두벌식 키보드이며, 그 중에서 표준 키보드 배열이다.

두벌식 표준

숫자키 아래의 첫 줄이 ㅂㅈㄷㄱㅅㅛ로 시작하는 특징이 있으며, 키보드 종류는 QWERTY와 같아도 된다.

한글 : 세벌식 3-91(세벌식 391 또는 세벌식 최종)

세벌식은 초성 중성 종성 세 부분으로 구분된 키보드를 말한다.

세벌식 최종


위 키보드는 그 중에서도 세벌식 3-91 키보드 배열이다.
세벌식은 대체로 숫자키로도 한글 입력을 하게끔 되어 있다.

기존 두벌식 키보드와 크게 다르지만, 키보드 종류가 컴퓨터와 호환된다면 어떤 키보드라도 세벌식 입력 방법을 사용할 수 있다.

한글 쿼티

위에서 한글 입력 방법의 종류, 쿼티의 의미를 알아봤다.
또한 키보드의 모양을 의미하는 키보드 종류도 알아봤다.

그렇다면 한글 쿼티라는 단어에 굉장히 큰 모순이 생기는 것을 알 수 있다.

1. 한글 입력 방법을 지정하지 않았다는 데에 문제가 있다.

위에서 본 것처럼 한글 키보드에는 종류가 많다.
두벌식은 대체로 표준만 사용하지만 세벌식까지 확장하면 5종류가 넘는다.

그렇다면 한글 쿼티는 어떤 입력 방법을 말하는 것일까?
좀 우겨보면 이런 것도 한글 쿼티라고 말할 수 있을 것이다.

천지인 쿼티?

키보드 첫 줄이 QWERTY로 시작하고, 한글 입력이 가능한 키보드이다.
그러면 문제 없는 것 아닌가?

2. 영문 키보드를 QWERTY로 고정한 데에 문제가 있다.

나는 키보드 입력을 많이 하기 때문에 DVORAK도 써봤다.
그러나 한글 입력에는 전혀 지장이 생기지 않았다. 왜냐하면 한/영 전환을 누르면 '두벌식 표준' 입력 방법을 사용할 수 있기 때문이다. DVORAK을 사용하든 Colemak을 사용하든 한글 입력 상태에서 왼쪽 Shift 키의 오른쪽에 있는 버튼을 누르면 여전히 'ㅋ'이 입력된다. 하지만 키보드 첫 줄이 QWERTY로 시작하지 않는다.

그렇다면 나는 한글 DVORAK 입력 방식이었을까? 아니면 한글 QWERTY 입력 방식이었을까?

0. 원래 '한글 쿼티'의 의도는 키보드 종류를 말하고 싶었던 것이다.

QWERTY와 두벌식 표준의 공통점은 키보드의 모양이다. 그것 뿐이다. 키보드의 종류가 같다는 것이다.
컴퓨터에서는 이 공통점을 말할 때 '101키 키보드'라고 한다. 하지만 스마트폰은 대부분의 키가 없으므로 101키라고 말할 수 없다. 실제로는 40개 내외의 키밖에 없다.
101키라고 말할 수 없으니 한글 QWERTY라는 세상 신박한 표현을 사용하게 된 것이다.

신토불이 vs 완전 현지화

블리자드에서 오버워치의 사운드를 담당했다는 분이 했던 말이 있다. 오버워치가 서든어택을 제치고, 잠시나마 롤까지 제칠 수 있었던 이유 중 하나가 완전 현지화라는 것이다. 이 부분은 믿거나 말거나 이지만 그 근거가 상당히 인상적이어서 소개한다.

오버워치는 캐릭터의 보이스를 대부분 한국인이 녹음했고, 그래서 한국인의 정서에 맞는 분위기를 연출할 수 있었다는 것이다.
오버워치를 안 해본 사람이라도 "이 것도 너프해 보시지!", "석양이 진다" 등의 대사는 다들 한 번쯤 들어봤을 것이다. 또한 한국어가 아니어도 한국인이 더빙했다. 류승룡 기모찌로 알려진 "류진노 켄오 쿠라에!"는 한국 블리자드에서 더빙한 음성이다.
외국 게임이지만 최대한 한국인에게 맞게 새로 만들었다는 것이다.

반면에 서든어택은 한국 게임이지만 외국 게임처럼 보이려고 노력했다는걸 지적했다.

단지 해당 담당자의 말일 뿐이다. 나는 그 근거가 인상적이었다고 말 하고 싶었을 뿐이고, 오버워치가 성공하고 서든어택이 망한 이유가 '사운드 때문이다' 라고 말하고 싶은 건 아니다.

신토불이 스마트폰?

한국인이 한국폰을 선호하는건 나쁜게 아니다. 게다가 한국 브랜드가 뒤쳐지는 브랜드도 아니니 말이다.
하지만 문제를 제기하고 고칠 필요는 있을 것 같다.

한국

삼성

구글에 "한글 쿼티"라고 검색해보자. 그러면 삼성 갤럭시 얘기 뿐이다.

항상 갤럭시라는 단어가 함께 등장한다.

타자기 역사는 1829년부터 시작됐고, 한글 타자기는 1913년부터 시작됐다.
전자식 타자기가 나올 때부터 한글과 영문을 동시에 입력할 수 있게 됐다.
두벌식 표준 입력 방식은 1985년 제정됐다.

입력기의 역사는 100년이 넘었고, QWERTY나 두벌식 표준 입력 방식이 바뀌지 않은 것은 35년이 넘었다.
그럼에도 불구하고 구글 검색에서는 삼성 스마트폰 얘기 뿐이다. '한글 쿼티'라는 표현은 근래에 사용하기 시작한 것이다.

 

LG

LG도 마찬가지로 '쿼티 키패드'라고 표현한다.

 

외국

왠만한 외국 기업들은 '두벌식 표준'이라고 표현하고 있다.

구글

구글 입력기에서는 두벌식 표준이라고 표현한다.

애플

애플은 표준, 10키로 구분한다.

보통은 '두벌식 표준'이라고 하는데, '표준'이라고 써져 있다.
조금 애매하긴 하다. 그러나 두벌식은 자음과 모음으로 구분된 것을 의미하고, 그 중에서도 표준 입력방식이 우리가 사용하는 자판인 것을 생각해보면 적절한 표현으로 볼 수 있다.

마치며...

한국 서드파티 키보드들 중에서도 '한글 쿼티' 라고 말하는 경우는 거의 드물다.
내가 스마트폰을 사용하면서 '한글 쿼티'를 본건 LG 기본 입력기와 삼성 기본 입력기 뿐이라고 해도 과언이 아니다.

그렇다면 두 업체는 어째서 '한글 쿼티'라고 말하기 시작한거고, 왜 여태까지 수정하지 않는걸까?

ASUS 라우터 퍼포먼스 최적화

2018. 2. 24. 13:00

서론

지난번에 TM-AC1900에 RT-AC68U의 펌웨어를 설치하는 방법을 알아봤습니다.

저는 Merlin펌웨어 때문에 RT-AC68U의 펌웨어를 설치했는데요.

라우터 최적화에 대한 포스트가 멀린 펌웨어를 기준으로 되어 있기에 펌웨어를 변경했습니다.

이번 포스트에서는 제가 참고했던 포스트를 번역, 정리하여 올리려고 합니다.

출처 : https://www.rickygao.com.au/blog/tuning-the-asus-wireless-router-to-best-performance/

Merlin 펌웨어는 Stock(정식)펌웨어를 기반으로 만들어져 있습니다. 때문에 정식 펌웨어가 업데이트되면 멀린 펌웨어는 정식 펌웨어를 통합합니다. 정식 펌웨어의 기능을 대부분 담고 있으니 정식 펌웨어에서도 참고할 수 있을 듯합니다.

최적화

HW NAT

제가 커스텀 펌웨어를 쓰지 않으려고 했던 이유는 하드웨어 가속을 지원하지 않아서였습니다.
HW NAT은 200Mbps이상의 기가인터넷에서는 필수입니다.

하지만 ASUS의 경우, 정식펌웨어와 멀린 펌웨어도 HW NAT을 사용하려면 조건이 있습니다.

ASUS Router의 HW NAT은 두 가지가 있습니다.

CTF only 와 CTF+FA입니다. 정식 펌웨어에서는 Level 1, Level 2로 표현됩니다.

CTF (Cut Through Forwarding): 넷 가속을 위한 소프트웨어 최적화
FA (Flow Accelerator): DHCP 또는 고정 IP 유선 연결을 위한 하드웨어 넷 가속 메커니즘

제가 500Mbps환경에서 사용해보니 CTF만 되어도 충분한 속도가 나옵니다.

순정 펌웨어 HW NAT기능표

종류 기능 메뉴 하드웨어 가속
QoS Traditional Adaptive Qos->QoS 미지원
QoS Adaptive Adaptive QoS->QoS Level 1
LAN Spanning-Tree Protocol LAN->Switch Control Level 1
해당 없음 Level 2

멀린 펌웨어 HW NAT 기능표

종류 기능 메뉴 하드웨어 가속
QoS Traditional Adaptive Qos->QoS Off
Traffic Monitor IP Traffic Monitoring Tools->Other Settings Off
QoS Adaptive Adaptive QoS->QoS Level 1
해당 없음 Level 2

*이번 편은 포스트 번역 및 요약이기에 최대한 원형을 유지했습니다.

*이 외에도 하드웨어 넷을 꺼야 하거나, Level 1만 사용해야 하는 기능이 있습니다. AI Protection, Traffic Analyzer가 이에 해당합니다.

무선

General

Wireless Mode : 무선에 사용할 모드를 선택한다. 2.4Ghz는 Turbo QAM을 사용하려면 Auto로 두어야 한다.

Control Channel : 채널 번호를 선택한다. 항상 Manual로 두고 전파 혼신을 막기 위해 주변 라우터에서 사용하지 않는 채널을 선택한다. 단, 5Ghz 채널 165는 저성능의 채널이니 피한다.

Protected Management Frames : 802.11 표준에서 지원하는 보호 모드이다. 보안성은 올라가지만 호환성은 떨어진다. 아이폰, 아이패드는 연결되는데 맥북 프로는(2016년형) 연결이 안된다.
추천 값 : Disable 또는 Capable로 둔다.

Group Key Rotation Interval : WPA그룹 키를 갱신하는 주기를 입력한다. 키를 갱신하는 동안 연결이 끊기거나 불안정해질 수 있다.
추천 값 : 0 또는 259200
필자 추천 : 1800(기본 값): WPA 인증 및 보안의 기초가 그룹 키를 통해 이루어진다. (2019.01.09개정)

WPS

보안성이 떨어지니 끈다.

Professional

고급 설정은 개인적인 경험을 다수 반영하여 출처 게시글과는 매우 다름에 유의(2019.01.09 고급 설정 전면 수정)

2.4Ghz

2.4Ghz는 신호 거리가 길고 속도가 느린 게 특징이다.

Roaming assistant : 신호가 약해지면 연결을 끊는다. 여러 개의 라우터를 사용할 때 신호가 약한 방에서 다른 라우터로 자동으로 연결되지 않을 때에 자동으로 다른 라우터로 연결되도록 하려면 사용한다.

Bluetooth Coexistence : 최근 추가된 옵션으로 보인다. 블루투스와 와이파이 모두 2.4Ghz로 작동하기 때문에 서로 혼신의 가능성이 있는데, 이걸 줄여주는 옵션이다. 주변 블루투스 연결이 끊기면 활성화 한다.

_Enable_을 선택하면 주변 블루투스 장비와 협상하여 스펙트럼을 공유한다.
_Preemptive_를 선택하면 블루투스 장치에 현재 라우터에서 사용하는 채널을 점유 중이라고 알린다. Pre-emptive모드에서는 TX-Burst모드를 지원하지 않는다. 이 기능은 블루투스 장치가 cooperate모드를 지원해야 한다.

추천 값 : Disable ; 주변 블루투스 장치가 끊기지 않으면 끈다. Pre-emptive를 우선 시도하고, 개선되지 않으면 coexistence를 켠다. 그래도 개선되지 않는다면 끈다.

Enable IGMP Snooping : 멀티캐스트 트래픽을 감시하고 IGMP를 지원한다. 라우터가 멀티캐스트 트래픽 데이터를 받으면 라우터에 연결된 모든 클라이언트에 멀티캐스트 트래픽을 보낸다. 여기서 IGMP Snooping을 통해 멀티캐스트 트래픽을 받을 클라이언트를 선택한다. 출처 글에서는 스트리밍이나 미러링 할 때에 활성화하라고 하지만 필자는 비활성화를 추천한다. 멀티캐스트는 특정 IP대역에 송출된 데이터를 말하는데 흔히 생각하는 스트리밍(동영상, 음악 스트리밍)이나 미러링(화면 미러링)은 멀티캐스트 IP대역에 송출하는 것이 아니다. 참고 : 위키피디아(멀티캐스트는 보통 IP 멀티캐스트 형태로 구현), 스윗가든리서치 그룹(블로그) (이미지 참고)
추천 값 : Disable

Preamble Type : CRC블럭의 타입을 설정한다. CRC블럭은 무선으로 송 수신한 데이터의 무결성을 체크한다. Long을 선택하면 호환성과 커버리지가 증가하고, Short를 선택하면 성능이 증가한다.
추천 값 : Long ; 2.4Ghz는 높은 성능을 위한 주파수가 아니므로 안정적인 연결이 가능한 Long을 선택한다.

AMPDU RTS : 통신 오류 조절을 개선한다.
추천 값 : Enable ; 2.4Ghz는 더 넓은 커버리지(신호가 약한 곳)에서 사용하기 위한 주파주이므로 활성화한다.

Enable TX Bursting : TX Bursting을 사용한다. b/g장치에서 더 높은 성능을 낸다.
추천 값 : Disable ; 요즘 2.4Ghz장비는 N모드를 사용한다. b/g 장치는 장치가 느리기 때문에 b/g를 위한 특별한 기능으로 리소스를 사용할 필요 없다. 껐을 때에 게임 딜레이가 감소한다는 후기가 많다.

Enable WMM APSD : 모바일 장치의 전력관리에 도움이 된다.
추천 값 : Enable

Reducing USB 3.0 Interferance : 2.4Ghz에서 더 넓은 커버리지와 성능을 낸다.
추천 값 : Disable ; USB 3.0장치를 사용하면 비활성화. 높은 성능은 5Ghz에서 필요하므로 USB 3.0위주로 설정한다.

Optimize AMPDU aggregation : AMPDU가 많으면 오류 핸들링 능력이 상승한다. 성능이 감소한다. 간섭이 많은 지역에서 사용한다.
추천 값 : Disable ; 2.4Ghz는 과포화 상태이다. 오류 핸들링을 위한 AMPDU 패킷은 많을 수록 좋다.

Optimize ack suppression : 에러를 확인할 수 있는 패킷을 줄인다. 와이파이 클라이언트의 에러 검출 결과를 기다리지 않고 다음 데이터를 전송한다. 에러가 조금이라도 있다면 Disable
추천 값 : Disable ; 위와 같은 이유. 과포화 상태이므로 혼선이 많다. 오류 검출 패킷은 많을수록 좋다.

Turbo QAM : 지원하는 클라이언트에서 높은 성능을 보여준다.
추천 값 : Enable

Airtime Fairness : 신호가 약한 장치를 희생하고 성능을 높인다.
추천 값 : Enable ; 신호가 약한 곳에서 고성능을 필요로 할 때에는 Disable

Explicit Beamforming : 빔포밍을 지원하는 장치에서 빔포밍을 사용한다.
추천 값 : Enable ; 애플 기기는 호환 문제가 있다고 하지만 그래도 더 좋은 성능을 보여준다.
Macbook Pro 15 (2016), iPad Pro 9.7 1세대, iPhone 6s Plus에서 호환 문제는 없었다.

Universal Beamforming : 빔포밍을 지원하지 않는 장치에서 빔포밍을 사용한다.
추천 값 : Enable ; 애플 기기는 호환 문제가 있다고 하지만 그래도 더 좋은 성능을 보여준다.

Tx power adjustment : 출력 크기이다. 최대치로 둔다.
추천 값 : 최댓값; 필자는 발열문제도 있고, 호기심에 출력제한을 없앤 펌웨어를 올려서 규제에 맞게 낮춰서 사용한다.

5GHz

5Ghz는 신호 거리가 짧고 속도가 빠르다.

Roaming assistant : 신호가 약해지면 연결을 끊는다. 여러 개의 라우터를 사용할 때 신호가 약한 방에서 다른 라우터로 자동으로 연결되지 않을 때에 자동으로 다른 라우터로 연결되도록 하려면 사용한다.

또는 5Ghz와 2.4Ghz의 SSID가 같아서 멀어지면 자동으로 2.4Ghz로 전환되게 하고 싶어도 사용한다.

Enable IGMP Snooping : 멀티캐스트 트래픽을 감시하고 IGMP를 지원한다. 라우터가 멀티캐스트 트래픽 데이터를 받으면 라우터에 연결된 모든 클라이언트에 멀티캐스트 트래픽을 보낸다. 여기서 IGMP Snooping을 통해 멀티캐스트 트래픽을 받을 클라이언트를 선택한다. 출처 글에서는 스트리밍이나 미러링 할 때에 활성화하라고 하지만 필자는 비활성화를 추천한다. 멀티캐스트는 특정 IP대역에 송출된 데이터를 말하는데 흔히 생각하는 스트리밍(동영상, 음악 스트리밍)이나 미러링(화면 미러링)은 멀티캐스트 IP대역에 송출하는 것이 아니다. 참고 : 위키피디아(멀티캐스트는 보통 IP 멀티캐스트 형태로 구현), 스윗가든리서치 그룹(블로그) (이미지 참고)
추천 값 : Disable

Beacon Interval : 라우터가 있다는 신호를 보내는 주기를 선택한다.
추천 값 : 1000(최대) ; 성능 개선이 있다. 호환성 문제가 있다면 기본값인 100을 사용한다. 필자는 다른 공유기와 전환하는 데에 문제가 있어서 애매한 값인 800을 사용한다.

AMPDU RTS : 통신 오류 조절을 개선한다.
추천 값 : Disable ; 5Ghz는 더 높은 성능을 위한 연결이므로 비활성화한다.

Enable TX Bursting : TX Bursting을 사용한다. b/g장치에서 더 높은 성능을 낸다.
추천 값 : Disable ; 5Ghz에는 왜 있는지 모르겠으나 성능 차이는 없는 것 같다.

Enable WMM APSD : 모바일 장치의 전력관리에 도움이 된다.
추천 값 : Enable

Optimize AMPDU aggregation : 오류 핸들링 능력이 상승한다. 성능이 감소한다. 간섭이 많은 지역에서 사용한다.
추천 값 : Enable ; 채널을 수동으로 잡아줬으니 간섭은 많지 않을 것이다.

Optimize ack suppression : 에러를 확인할 수 있는 신호를 줄인다. 와이파이 클라이언트의 에러 검출 결과를 기다리지 않고 다음 데이터를 전송한다. 에러가 조금이라도 있다면 Disable
추천 값 : Enable ; Roaming Assistant로 신호가 강한 곳에서만 사용하도록 한다면 사용해보자.

Airtime Fairness : 신호가 약한 장치를 희생하고 성능을 높인다.
추천 값 : Enable ; 신호가 약한 곳에서 고 성능을 필요로 할 때에는 Disable

Explicit Beamforming : 빔포밍을 지원하는 장치에서 빔포밍을 사용한다.
추천 값 : Enable ; 애플 기기는 호환 문제가 있다고 하지만 그래도 더 좋은 성능을 보여준다.
Macbook Pro 15 (2016), iPad Pro 9.7 1세대, iPhone 6s Plus에서 호환 문제는 없었다.

Universal Beamforming : 빔포밍을 지원하지 않는 장치에서 빔포밍을 사용한다.
추천 값 : Enable ; 애플 기기는 호환 문제가 있다고 하지만 그래도 더 좋은 성능을 보여준다.

Tx power adjustment : 출력 크기이다. 최대치로 둔다.

추천 값 : 최댓값; 필자는 발열문제도 있고, 호기심에 출력제한을 없앤 펌웨어를 올려서 규제에 맞게 낮춰서 사용한다.

유선

Switch Control

Enable Jumbo Frame : 더 큰 프레임을 보낸다. 점보프레임을 지원하지 않는 장치에서는 오히려 성능이 감소할 수 있다.
추천 값 : Disable

NAT Acceleration : 하드웨어 가속을 켠다. 끄면 Traffic Monitor가 정확해진다.
추천 값 : Auto

Spanning-Tree Protocol : 라우터 하위 컴퓨터의 구조를 파악하는 신호를 보내고 컨트롤한다.
라우터 아래에 있는 스위치가 있는 구조라면 데이터의 루프를 피하고, 최단 루트를 선택하는 데에 도움을 준다.
참고자료 : netmanias, snbforums
추천 값 : Disable ; 출처 포스트에서는 하위에 Switch가 있으면 활성화하라고 하지만 필자가 보기에는 루프구조만 아니면 필요 없다.

ASUS(에이수스) 라우터 TM-AC1900 에 RT-AC68U 펌웨어 설치하기

2018. 1. 25. 17:46

서론

저는 원래 ipTIME공유기만 사용했습니다. 인터넷도 안정적이고 AS가 간편했기 때문인데요.
원래 사용하던 공유기가 고장나서 쇼핑을 하던 중에, 지인으로부터 ASUS 리퍼비시 공유기를 싸게 구입할 수 있다는 걸 알게 되었습니다.
그것이 바로 T-mobile용 라우터. 하드웨어 자체는 ASUS RT-AC68U와 같다고 하여 ASUS에 대한 믿음과 기대로 구입했습니다.

원래는 T-mobile 정식 펌웨어를 사용하려고 했습니다.어차피 AC68U와도 펌웨어도 비슷할 것이고, Hardware NAT을 지원하지 않는 커스텀 펌웨어는 기가인터넷 환경에서 오히려 역효과를 가져올 것이라는 판단 때문입니다.

하지만 몇몇 문제가 있었습니다.
그 중 하나가 Port Forwarding. 전에 사용하던 공유기는 Port Forwarding 갯수에 제한이 없었는데, ASUS는 32개로 제한되어 있었습니다.
64개여도 참고 쓸만 한데, 32개라니... NAS를 외부에서 접속하려면 반드시 Port Forwarding을 해야 하는데, 이용하는 서비스(서버)가 많으면 더 많은 Port Forwarding을 해야 합니다.

커스텀 펌웨어는 128개까지로 늘어납니다.

<Port Forwarding 제한이 128개로 늘어납니다>

또 다른 이유는 업데이트입니다. 살 때도 RT-AC68U에 비해 업데이트가 느리다는 것을 알고 있었는데, UPnP를 켜도 NAS에서 UPnP라우터로 인식하지 못해서 포트별로 수작업으로 Port Forwarding에 등록 해줘야 했습니다. 게다가 NAS에 서비스를 추가할 때마다 Port Forwarding을 해줘야 했죠. 그래서 다른 펌웨어가 필요해졌습니다.

여기에 라우터의 펌웨어를 바꾸도로 불을 지피는 게 있었으니, 정식 펌웨어를 기반으로 하는 Merlin 펌웨어는 Hardware NAT을 지원한다는 것!

그래서 큰 맘 먹고 ASUS 펌웨어를 올려봤습니다.

펌웨어 변경을 시작하기 전에

  • 이 글은 최근 T-mobile용 라우터를 구입하여 최신 펌웨어인 3.0.0.4.376_3181이 설치된 라우터에 ASUS 펌웨어를 설치하는 글이다.

    3181버전(아마도 이전 몇개 펌웨어를 포함해서)은 리셋버튼을 누르고 전원을 켠다고 CFE miniWeb Server페이지에 접속되지 않는다.
    다만 필자가 보기엔 앞으로도 CFE miniWeb Server에 접속하는 방법이 바뀔 뿐, 못들어가게 막진 않을 것이다.

  • <RT-AC68U라고 나온다>

    리퍼비시를 구입했더니 SSH접속만 했을 뿐인데 RT-AC68U라고 나온다. 이전에 사용하던 사람이 RT-AC68U펌웨어를 올려놓고 사용했던 것 같다. 그리고 리퍼비시 중에는 이러한 라우터가 꽤 많을 것으로 보인다.

  • 라우터 초기화 및 ASUS펌웨어 설치에 필요한 파일 다운로드

    무작정 따라하기 쉽게 라우터를 초기화 한다. 라우터 설정 페이지에 초기화가 있다.
    오프라인으로 작업해야 하니 모든 파일은 미리 다운로드 한다.

    파일 다운로드 하기 : 10MB까지만 첨부가 가능해서 다운로드 링크를 올립니다.
    앞으로의 작업에서 라우터 전원 케이블과 컴퓨터에 연결하는 LAN케이블 외의 케이블은 모두 라우터에서 제거한다.

  • 출처 : http//blog.naver.com/inviewfinder/220914723102
    펌웨어 설치는 기본적으로 위 블로그를 따라간다.

SSH를 지원하는 펌웨어로 다운그레이드

라우터의 펌웨어를 변경하려면 ASUS프로그램이 RT-AC68U로 인식할 수 있어야 한다. 그러기 위해 부트로더를 변경해야 한다.

1. NVRAM 초기화

라우터 끄기.
옆면의 WPS버튼을 누른 상태로 공유기 켜기.
전원 LED가 깜빡거리면 WPS버튼에서 손 떼기.
전원과 LAN LED가 켜질 때까지 기다리기.

2. CFE 모드 진입

웹 브라우저 주소창에 192.168.29.1를 미리 입력하기.
라우터 끄기.
Reset, WPS, Wifi Off 버튼을 모두 누른 채로 라우터 켜기.
10초 정도 후에 WPS, Wifi Off 버튼에서 손 떼기. (Reset버튼에서 손이 떨어지지 않게 주의!)
192.168.29.1에 접속하기.(Reset버튼을 누른 상태여야 합니다)

저는 이 단계에서 고생을 많이 했습니다. 백신을 끄고 하니 그제서야 인식이 되었습니다.
혹시 잘 안되는 분은 백신이나 기타 네트워크 감시 프로그램을 끄고 해보시면 될겁니다.

CFE miniWeb Server에서 Browse 버튼 누르기.(Reset버튼을 누른 상태여야 합니다)
파일 선택 팝업창에서 첨부파일\ASUS\Work\AC1900안에 있는 .trx파일 선택하기.(Reset버튼을 누른 상태여야 합니다)
업로드 누르기.(Reset버튼을 누른 상태여야 합니다)

웹브라우저가 웹 탐색을 시작하면 Reset버튼에서 손을 뗀다.

Reset에서 손을 떼야 업로드 성공 메시지가 출력됩니다.(Reset을 누르고 있으면 펌웨어 업로드가 끝나지 않고 실패 합니다.)

SSH 활성화

라우터 설정 페이지 접속.
Administration(관리) 클릭.
System(시스템) 클릭.
SSH Enable(SSH 활성화) YES에 체크

Apply(적용)

CFE 부트로더 변경 준비

출처 블로그에서는 고정 IP를 할당하지만 그럴 필요는 없다. 지금 라우터는 부팅이 완료된 상태인데, 부팅이 완료된 상태에서는 DHCP서버가 실행되기 때문에 공유기와 통신하는데 문제가 없다.

1. Putty 실행

첨부파일 \ASUS\putty.exe 실행

Host Name에 12.168.29.1 입력 Port는 22, Connection type은 SSH이고, 기본으로 입력되어 있다.
Open을 클릭하여 SSH서버에 접속한다.
몇 가지 인증과 보안에 관한 경고창이 뜨는데, 모두 Yes를 클릭한다.

서버에 연결되면 검은 창에 login as: 가 나타난다.
계정은 admin이고 비밀번호는 password이다 : 비밀번호는 보이지 않으니 창에 변화가 없어도 그냥 입력하면 된다.

이렇게 뜨면 로그인 성공

2. WinSCP 실행

첨부파일 \ASUS\WinSCP-5.11.3-Portable\WinSCP.exe 실행

File protocol : SCP : putty는 프로토콜을 바꿀 필요가 없었지만 WinSCP는 반드시 바꿔줘야 한다.
Host name : 192.168.29.1
User name : admin
Password : password

위 정보를 모두 입력하고 Login 클릭
여기서 뜨는 보안 경고 창에서도 Yes 클릭

3. 설명을 편하게 하기 위해 Interface 변경

기본 모드를 이용해도 문제 없지만, Drag & Drop이 안된다.

Options
Preferences...

Environment -> Interface
Commander 선택
OK

WinSCP 다시 실행하고 라우터에 로그인
왼쪽 Pane(창, 영역)에 첨부파일\ASUS\Work가 보이도록 Navigate(이동)한다.

CFE 부트로더 변경

라우터에서 기존의 부트로더를 꺼낸다. 기존의 부트로더에서 라우터의 고유 데이터를 새로운 부트로더에 복사한다. 그리고 새 부트로더를 라우터에 저장한다.

1. 부트로더 백업

라우터에 접속한 Putty에 다음 명령 입력

cat /dev/mtd0 > original_cfe.bin

잠시 후 에러메시지 없이 admin@ (none) : /tmp/home/root#이 뜨면 성공

WinSCP에서 오른쪽 Pane에 있는 original_cfe.bin을 왼쪽 Pane으로 드래그한다.

2. 새 부트로더 수정

Windows Explorer(탐색기)로 첨부파일\ASUS\Work\AC68U로 이동
rt-ac68u_1.0.2.0_us.bin을 첨부파일\ASUS\Work로 복사
rt-ac68u_1.0.2.0_us.bin의 이름을 new_cfe.bin으로 이름바꾸기

첨부파일\ASUS\Work폴더로 이동하고 아래 파일이 모두 있는지 확인

cfe.exe
new_cfe.bin
original_cfe.bin

  • cfe.exe 실행

검은 창이 나타났다가 new\_cfe.bin.bak파일이 생기는지 확인

3. 새 부트로더 라우터로 복사

new_cfe.binmtd-write 파일을 라우터에 복사
왼쪽 Pane에서 new_cfe.binmtd-write를 드래그해서 오른쪽 Pane에 드랍한다.

4. 라우터에 업로드 한 파일 확인

putty에서 ls -l입력

mtd-write
original_cfe.bin
new_cfe.bin

이 출력돼야 함

grep mac ./original_cfe.bin ./new_cfe.bin

아래 사진과 같이 하얀 부분의 값이 같아야 합니다.

<경고창이 없어야 합니다. 순서를 헷갈리면서 오류가 있는 스크린샷만 남았습니다.>

5. 라우터의 부트로더에 새 부트로더 설치

putty에서 chmod u+x mtd-write 입력
오류 없이 다음 줄에 #이 나와야 합니다.

./mtd-write -i new_cfe.bin -d boot
오류 없이 다음 줄에 #이 나와야 합니다.

reboot
라우터가 다시 시작 되면서 위의 사진처럼 서버가 닫혔다는 오류가 나타납니다.

출처 블로그에서는 버전 확인 방법을 알려줬지만, NVRAM 리셋까지 해야 변경된 버전이 적용되기 때문에 생략합니다.

ASUS 펌웨어 설치

이제 펌웨어 설치만 하면 정식 펌웨어이든, RT-AC68U를 지원하는 커스텀 펌웨어든 뭐든 설치할 수 있다.

1. NVRAM 초기화

라우터를 끈다.
옆면의 WPS버튼을 누른 상태로 공유기를 켠다.
전원 LED가 깜빡거리면 WPS버튼에서 손을 뗀다.
전원과 LAN LED가 켜질 때까지 기다린다.

2. ASUS 펌웨어 설치

미리 ASUS 펌웨어 복구 프로그램을 실행하고 RT-AC68U 펌웨어를 선택해둔다.

라우터를 끄고 Reset 버튼을 누른 상태로 전원을 켠다.
전원 LED가 느리게 깜빡거리면 Rescue모드로 진입 된 것이지만, 20초 이상 Reset버튼을 누르고 있는 것을 추천한다.

ASUS 펌웨어 복구 프로그램에서 Upload를 클릭한다.
저는 ASUS 라우터를 두개를 샀는데, 하나는 펌웨어 업로드가 쉽게 되었던 반면 다른 하나는 펌웨어 업로드가 쉽게 되지 않았습니다.

네트워크 감시 프로그램을 끈다
Rescue 모드에 진입할 때 전원 LED가 깜빡거리면 Reset 버튼을 바로 뗀다
IP를 고정한다

저는 반대로 192.168.1.8로도 안되었던 것이 라우터를 부팅하고 DHCP 서버로부터 할당받았던 IP로 고정해주니 잘 되었습니다.

MTD5 파티션 수정하기!

(롤백 방지 및 최신 펌웨어 설치)(2019.01.09 추가)
꽤 오래 전에 나온 팁인데 어째서 이제야 발견했는지 모르겠다..ㅠㅠ

putty와 같은 SSH 툴을 이용하여 라우터에 접속하여 아래를 한 줄씩 입력한다.

cat /dev/mtd5 > /jffs/mtd5_backup.bin
mkdir /tmp/asus_jffs

mount -t jffs2 /dev/mtdblock5 /tmp/asus_jffs
rm -rf /tmp/asus_jffs/*
sync && umount /tmp/asus_jffs

ln -s /sbin/rc mtd-erase
./mtd-erase -d asus
rm -rf /jffs/.sys/RT-AC68U

nvram unset fw_check && nvram commit && reboot

최신 또는 커스텀 펌웨어 설치

  1. 라우터에 모든 케이블을 연결하고 부팅한다.
  2. 설정 페이지에 접속한다. : 192.168.29.1
  3. Administraion(관리)
  4. Firmware Upgrade(Firmware Upgrade)
  5. ASUS 정식 최신 펌웨어는 자동 업데이트를 이용한다.
  6. Merlin 및 기타 커스텀 펌웨어는 펌웨어 수동 찾기를 이용해서 업데이트 한다.

Merlin 커스텀 펌웨어는 2018년 1월 25일 기준 최신 버전이 첨부파일에 포함되어 있다.

끝!

모두들 수고하셨습니다!

서부에 언급한 것과 같이 ASUS 퍼포먼스 최적화와 관련된 글을 찾았습니다.
며칠 내에 다음 편에 최적화 글이 게시될 것입니다.

Google API 키(Google Application Client ID) 발급 받기

2017. 11. 3. 23:41

Google Application Client ID

구글은 구글에서 제공하는 서비스들에 대해 API(Application Programming Interface)를 지원합니다.
그리고 구글 API를 이용하려는 사용자는 구글에서 API 키를 발급받아야 합니다.
이는 사용자의 관리와 서버 트래픽 조절을 위한 조치입니다.

Google Application Clien ID 만들기

1. 사이트 접속

Google Developer Console(구글 개발자 콘솔) 페이지에 접속합니다.

2. 프로젝트 만들기

모든 본인이 사용할 API에 하나의 프로젝트를 사용해도 됩니다. 하지만 추후 관리에 용이하도록 프로젝트를 용도에 따라 구분하여 만들기를 추천합니다.

저는 프로젝트 이름을 plexdrive로 했습니다.

3. 원하는 서비스의 API 활성화

필요한 구글 서비스의 API를 직접 활성화 해야 합니다.

화면 좌측 메뉴에서 라이브러리를 클릭합니다. 원하는 API를 검색하거나 스크롤 하여 찾습니다. '사용 설정' 버튼을 클릭합니다

저는 Google Drive API를 활성화 하려고 합니다.위 사진에서 '관리' 버튼이 있는 곳에 '사용 설정' 버튼이 나타납니다.

4. API 키 만들기

마지막으로 Client ID를 만듭니다. 여기서 발급받은 키로 Google API에 접속하게 됩니다.

  1. 화면 좌측 메뉴에서 사용자 인증 정보 클릭

  2. 사용자 인증 정보 만들기

  3. OAuth 클라이언트 ID 선택

  4. 애플리케이션 유형 선택(해당 사항이 없으면 '기타'를 클릭합니다)

  5. 아래와 같은 OAuth 동의 화면에 필수 정보를 작성하고 동의합니다.

5. Client ID 발급 완료

이제 Google Application Client ID 발급이 완료되었습니다.

사용자 인증 정보 화면에서 언제든지 Client ID와 Client Secret을 확인할 수 있습니다.

앱실행속도 테스트(Galaxy S7 edge vs Nexus 6P vs Moto X Pure)

2016. 3. 6. 00:26

단순한앱실행 테스트입니다. 모두 부팅직후 앱실행 테스트를 한것입니다.

타이머를 실행하고 앱실행이 끝나면 다른 앱을 켜는 방식인데, Galaxy S7의 경우는 타이머가 초기화되서 3번이나 다시 했다고 합니다. 이런 시도를 하는 동안 갤럭시는 뜨거워졌고, 점점 더 느려졌다고 합니다.-쓰로틀링

비교영상에서도 Galaxy S7는 아마존 앱을 다시 로드해옵니다.

영상에서 Moto X Pure의 경우는 게임로프트사의 게임을 다시 로드합니다.

Nexus 6P는 처음엔 갤럭시와 5초 차이였지만, 다음엔 2초 차이로 격차를 좁혀 램 관리에 있어 상위에 있는 것을 알 수 있습니다.

애플은 게임의 로딩이 빠르고, 2GB의 램을 가지고도 타이머가 초기화되거나 다시 로드하는 일이 없어서 OS의 차이를 보여주고 있습니다.

구글 순정 안드로이드는 안드로이드 제품과 비교하여 상위를 보여주고 있지만, 램관리와 앱실행 부분에선 iOS가 확실히 뛰어난 것을 보여주고 있습니다. 가상머신의 한계이고, 이를 극복하기 위한 여러가지 솔루션을 만들었음에도 불구하고 삼성이 타이젠OS를 만들려 하는 이유가 아닐까 싶습니다.

컴퓨터 모바일간의 자유로운 파일이동 PushBullet

2016. 2. 18. 16:47

우리나라에선 Windows를 이용할 수 밖에 없는 환경이다.
거기에 게임을 하려면 고사양 PC는 필수.

Mac을 쓰다가 윈도우를 사용해보면 아이폰과 맥의 핸드오프가 절실해진다.
핸드오프만큼은 아니지만, 단순하고 편리한 공유 기능으로 무장한 Pushbullet을 소개해보려고 한다.

Pushbullet는 텍스트 전송과 파일 전송이 쉽고, 안드로이드 iOS, Windows 대표적인 OS는 모두 지원한다. Mac의 경우는 Safari확장기능과 PushPal(유료)라는 3rd party 앱을 사용하면 된다. 크롬과 파이어폭스, 오페라브라우저도 지원한다.

다른 컴퓨터간 파일공유 서비스와와 달리 PushBullet은 자체서버를 이용한다.

PC가 꺼져있어도 PC에 전송할 수 있다. 유료계정을 이용하면 대용량 파일(최대 1GB)도 전송이 가능하다.(무료 25MB)

한 계정에 묶여있는 디바이스중에 선택해서 텍스트(파일)을 전송할 수 있고, 다른 사용자에게도 텍스트(파일)을 전송할 수 있다.

다운로드 : www.pushbullet.com

브라우저 확장기능을 이용하면 현재 접속중인 사이트 주소를 원클릭으로 다른 디바이스에 보낼 수 있다. 브라우저 확장기능은 파일전송은 불가능한데, 맥용 애플리케이션은 없기 때문에 파일전송을 해야 한다면 다른 서비스를 이용하거나 PushPal(유료)를 사용하여야 한다.

특히 안드로이드 버전의 경우 알림, 문자를 컴퓨터를 통해 전송할 수 있다. PC와 안드로이드 간의 파일전송도 가능하다.

iOS의 보안 특성상 아이폰 애플리케이션은 알림전송, 문자전송, 파일전송은 사용할 수 없다.

(알림전송은 애플워치, 문자전송은 맥, 파일전송은 아이튠즈를...)

아래 사진은 PushBullet계정에 안드로이드를 연결했을때의 장면이다.

왼쪽 메뉴에 SMS메뉴가 나타났다. 설정에서 파일공유기능을 켜면 안드로이드의 파일을 가져올 수 있다.

사파리의 확장기능. 현재 접속중인 사이트가 자동으로 나타난다. ActiveX가 필요해지면 전송버튼만으로 PC에서 이용할 수 있다.

아이폰용 PushBullet. 애플리케이션이 SMS와 알림, 다른 애플리케이션의 파일에 접근할 수 없기 때문에, 사진과 텍스트만 전송된다.

구글, 내년부터 플래시광고 중단

2016. 2. 18. 15:42

기존의 HTML4는 멀티미디어 기능에 약해서 플래시 플러그인을 사용했습니다.

플래시는 2000년대 초반엔 멀티미디어에 널리 활용되었지만, 모바일 기기가 나오고 계속된 플래시의 취약점 공격이 계속 증가했는데요. 그 시점에서 HTML5가 멀티미디어 기능을 가지고 나타나면서 플래시 플레이어의 입지가 크게 감소합니다.

지금은 플래시를 만들었던 어도비에서도 HTML5기반 미디어 제작 툴 사용을 유도할 정도입니다. 어도비의 플래시 제작툴을 켜면 HTML5기반 제작 툴을 소개해주고 있습니다.

애플의 모바일 기기와 안드로이드 모바일 기기는 이미 플래시를 지원하지 않으며, 맥OS는 따로 설치하지 않으면 플래시를 이용할 수 없습니다. 

이러한 추세에 맞춰 구글의 광고플랫폼인 애드워즈는 올해 안에 플래시 광고를 받지 않고 내년부터는 기존의 플래시 광고도 사용하지 못할 것이라고 밝혔습니다.

 

 

 

+ Recent posts