본문 바로가기

Others

안드로이드폰으로 리눅스 서버 만들기

지난 번에 VirtualBox로 Ubuntu 서버를 띄우고, 이후에 ipTIME 공유기로 개인 서버를 만들었다.

이후에 며칠동안 PC를 켜놓고 다녔는데 아무래도 부담스러워서 방법이 없을까 하다가 집에 남는 스마트폰을 활용하기로 했다.

 

집에 남아 있던 A7(2016)을 활용했다.

 

 

1. 루팅

 

기본적으로 USB 디버깅, OEM 잠금해제를 활성화 해야한다.

OEM 잠금해제를 안 할 경우 아래 메시지와 함께 무한부팅에 들어갈 수 있다.

> custom binary blocked by frp lock

 

설정 > 휴대전화 정보> 소프트웨어 정보 진입 후 [빌드번호] 항목을 여러번 눌러주면 [개발자 옵션]이 활성화된다.

이후 아래 옵션을 활성화 해 주자

 

폰마다 루팅 방법이 조금씩 다른데, 나는 운이 좋게도 아래 링크를 찾아서 쉽게 성공했다.

→ 갤럭시 A7 루팅 방법(https://kgezzang.tistory.com/870)

루팅 성공 후 앱 보관함에 들어가보면 SuperSU 어플이 설치되어 있다.

 

 

2. 리눅스 설치(Linux Deploy)

 

마켓에서 Linux Deploy 어플을 다운받는다. 그냥 받아도 되지만 특정 버전이 필요할 경우 다음 링크에서 apk파일을 다운받을 수 있다.

→ 개발자 깃허브(https://github.com/meefik/linuxdeploy/releases)

 

어플을 실행시키면 아래 도움말이 나오고 BusyBox 앱 설치 후 실행해서 설치(/system/xbin) 버튼을 눌러준다.

 

이후 다시 Linux Deploy 어플을 실행시켜서 몇 가지 설정을 바꿔준다.

[속성: Ubuntu]는 우측 메뉴로 들어가고, [설정] 메뉴는 좌측 ≡ 버튼을 눌러 들어간다.

 

아래 설정값 정도만 적당히 수정해 주면 된다.

ENV폴더 값은 [/data/user/0/ru.meefik...] 으로 되어있을수도 있는데,

찾아보니 일반적으로 [data/data/]와 [/data/user/0/]은 한다.

PATH 값은 BusyBox location(/system/xbin) 으로 설정 해 준다.

이 메뉴는 좌측 ≡ 버튼을 눌러 들어간다

 

이후 Linux Deploy 우측 상단 메뉴를 눌러 설치해준다.

설치 후 PC SSH 툴로 접속해본다.

접속 IP는 스마트폰 설정 > 연결 > Wi-Fi > 고급 진입 후 맨 밑에 192.168.. 이런식으로 적혀있다.

> ssh android@192.168.0.51
android@192.168.0.51's password:

 

접속 후 su 명령을 통해 루트권한을 획득하려 하면 아래 메시지가 표시된다.

$ su
sudo: PERM_ROOT: setresuid(0, -1, -1): Permission denied
sudo: unable to initialize policy plugin

찾아보니 갤럭시폰들이 보안문제(?)로 권한획득을 못하는 것 같다.

별별 설정을 다 해봐도 안돼서 root계정으로 접속하도록 세팅 했다...

나중에 해결되면 추가해야겠다.

→ 기존 롬을 밀고 커스텀 롬을 설치하니 해결되었다. su나 sudo같은 명령도 정상적으로 동작한다.

 

3. Root계정 활성화

 

ADB(Android Debug Bridge)를 사용하면 안드로이드 기기에 접근할 수 있다. 물론 디버깅 활성화는 필수로 되어있어야 한다.

아래 링크에서 안드로이드 SDK를 받을 수 있는데 한국어를 선택하면 다운이 안되니(2020.03.30 기준) 우측 상단 Language를 English로 바꿔서 다운로드 하자.

→ SDK 플랫폼 도구(https://developer.android.com/studio/releases/platform-tools)

 

시스템 환경 변수 > Path에 [ D:\{SDK 설치 경로}\platform-tools ] 추가 후 아래 명령을 순서대로 실행한다.

 

※ 스마트폰을 usb로 연결해놨다면 아래 내용은 무시하고 cmd 창에서 adb shell을 실행해 주자


> adb tcpip 5555
* daemon not running; starting now at tcp:5037
* daemon started successfully
error: no devices/emulators found

> adb connect 192.168.0.51
connected to 192.168.0.51:5555

> adb devices
List of devices attached
192.168.0.51:5555        device


> adb shell
a7abcdefgh:/ $

 

연결된 device가 여러개라서 아래와 같은 메시지가 출력된다면 아래 명령으로 device를 지정해서 접속한다.

> adb devices
List of devices attached
0000000abcdefghi        device
192.168.0.51:5555       device

> adb shell
error: more than one device/emulator

> adb -s 192.168.0.51:5555 shell
a7abcdefgh:/ $

 

Linux Deploy 내부 리눅스로 접속하기 위해 아래 명령을 실행한다.

$ su
# sh /data/data/ru.meefik.linuxdeploy/files/bin/linuxdeploy shell

...
root@localhost:/#

 

무사히 접속되었다. 이후 아래 명령을 통해 비밀번호 변경 후 ssh로 접속해서 확인한다.

root@localhost:/# passwd root
...
passwd: password updated successfully

root@localhost:/# exit
a7abcdefgh:/ # exit
a7abcdefgh:/ $ exit

> ssh root@192.168.0.51
root@192.168.0.51's password:

Welcome to Ubuntu 18.04 LTS (GNU/Linux 3.10.61)
Ubuntu 18.04 LTS [running via Linux Deploy]
...
root@localhost:~#

 

 

4. Always On Display / 화면 보호기

 

스마트폰의 경우 화면이 꺼지면 ping 명령을 받지 않는 경우가 있다고 한다.

실제로 ssh 접속 후 화면을 끄면 타이핑할때마다 끊김이 있었다.

Always On Display 어플을 다운받거나 스마트폰 설정에서 화면 보호기를 세팅 해준다.

 

 

5. (Optional) ipTIME DDNS / 포트포워드 설정

 

 

위와 같이 세팅 후 ssh로 접속하면 된다.

> ssh root@mydomain.iptime.org
...
Are you sure you want to continue connecting (yes/no)? yes

Welcome to Ubuntu 18.04 LTS (GNU/Linux 3.10.61)
Ubuntu 18.04 LTS [running via Linux Deploy]
root@localhost:~#

 

'Others' 카테고리의 다른 글

OpenVAS 환경 구성  (0) 2020.06.17
AWS EC2 & RDS  (0) 2020.05.17
Ubuntu Apache 웹 서버 띄우기  (0) 2020.03.29
ipTIME 공유기로 개인 서버 만들기  (0) 2020.03.15
VirtualBox + Ubuntu + MySQL 설치 하기  (0) 2020.03.14