Linux Deploy를 사용해 안드로이드에 리눅스를 설치하기

    보통은 개인용 ARM 웹서버를 구축할 때 라즈베리파이가 가장 먼저 떠오릅니다. 그러나 최근에는 라즈베리파이의 가격이 상당히 높아져 간단한 웹서버로 활용하기에는 부담이 크게 느껴지는 것 같습니다. 하지만, 안드로이드 휴대폰에 리눅스를 설치하여 웹서버로 활용하면 저렴하면서도 남는 휴대폰의 성능을 활용할 수 있어 매우 유용합니다.

    안드로이드 휴대폰은 일반적으로 ARM 아키텍처를 사용하며, 최근 많은 휴대폰 모델이 강력한 하드웨어를 갖추고 있어 안드로이드 휴대폰이 간단한 웹서버로서의 역할을 수행하기에 성능이 충분합니다. (필자는 이 워드프레스 블로그를 안드로이드 휴대폰에서 구동하고 있음)

    집에 잘 사용하지 않는 안드로이드 휴대폰이 하나쯤은 있을 것이다. 이번 글에서는 이 휴대폰에 Linux Deploy를 설치해 서버로 활용하는 방법에 대해 설명한다.

    준비

    • Android 휴대폰 (루트 권한 필요)
    • SSH Client를 구동할 장치
    • SSH Client

    대부분의 안드로이드 휴대폰은 루팅이 되어 있지 않을 것이다. 루팅하는 방법에 대해서는 다른 포스팅을 참고하기 바란다.

    준비하기

    Play Store 또는 Github에서 Linux Deploy 앱을 설치하고 실행하면 아래와 같은 화면이 표시될 것이다.

    Linux Deploy의 메인 화면

    그리고는, Busybox를 설치해야 한다. 같은 이름의 다른 Busybox도 있지만 Linux deploy 앱에 링크된 Busybox를 설치하도록 하자. 필자는 이미 Busybox가 설치된 상태라 여러 정보가 표기되지만 초기에는 표기되지 않을 것이다.

    Busybox의 메인 화면

    오른쪽 상단 매뉴 -> 설정으로 들어가 설치 경로를 /system/xbin으로 설정하고 애플릿 설치에 체크해주도록 하자.

    모두 설정했다면 다시 초기 페이지로 돌아와 설치 버튼을 눌러 설치해준다.

    Busybox의 설정 화면

    Linux Deploy 설정

    이제 Linux Deploy앱으로 돌아와 오른쪽 하단 설정 버튼을 눌러줍니다.

    Linux Deploy의 설정 화면
    • 배포 : Ubuntu (다른 리눅스를 설치할 경우 변경)
    • 아키텍처 : arm64
    • 배포판 : bionic (글 쓰는 시점의 가장 최신의 Ubuntu 버전이다. 더 최신 버전이 있다면 최신 버전을 선택하자.)
    • 이미지 크기 : 사용할 수 있는 최대 크기로 설정하자. (나중에 용량 부족해지면 이미지 크기 늘리기 어렵다.)
    • 사용자 이름 : 모조권 root로 설정한다 (다른 계정은 설치 후에 만들어라)
    • 사용자 비밀번호 : Linux 계정 비밀번호를 설정한다. 초기에는 ssh 비밀번호로 사용해야 하기 때문에 복잡하게 설정해주자.
    • SSH : 무조건 활성화한다.

    다시 초기매뉴로 돌아와 이번에는 왼쪽 사이드바에서 설정으로 들어온다.

    • PATH 값 : Busybox를 설치한 /system/xbin로 설정한다
    • ENV 업데이트를 진행한다.

    자 이제 모든 준비가 끝났다. Linux를 설치만 남았다.

    Linux 설치하기

    Linux Deploy 앱에서 오른쪽 상단 매뉴 -> 설치를 선택하면 자동으로 설치가 진행된다.
    화면에 로그가 엄청나게 많이 지나가지만 우리가 봐야 할 것은 에러가 나는지 밖에 없다.

    설치 과정은 약 15분 정도 소요될 수 있습니다. (네트워크 상태 및 휴대폰 성능에 따라 다름)

    설치가 모두 완료되면 시작 버튼을 눌러서 Linux 를 실행해준다.

    Linux에 SSH 로 연결하기

    SSH Client 정하기

    사용할 SSH Client를 정했다면, SSH Client를 설치하고, 실행하자.

    SSH Client로 서버에 접속하기

    필자는 termius 기준으로 서버에 접속하는 방법에 대해 설명한다.

    termius의 새 ssh호스트를 추가하는 화면
    Linux Deploy의 상단 매뉴 이미지
    • Address : 안드로이드 폰의 IP 주소를 작성한다. (Linux Deploy의 상단 매뉴에서 확인 가능하다. 필자의 경우 192.168.35.5)
    • Username : Linux Deploy 설정에 작성했던 사용자 이름을 입력한다
    • Password : Linux Deploy 설정에 작성했던 비밀번호를 입력한다.

    이외에는 따로 설정할것이 없다.

    termius 말고 다른 SSH client 를 사용하더라도 전체적으로 옵션이 비슷할 것이다. 자신이 사용하는 ssh 클라이언트를 기준으로 설정을 진행하자.

    Linux Deploy로 설치한 리눅스에 ssh로 접속한 모습

    이 사진과 같이 연결만 되면 Linux 설치는 끝이다.

    Ubuntu 업데이트

    지금 이 글에서 설치한 Ubuntu는 bionic 배포판으로, 18.04 LTS 버전이다. 지금 사용하기에는 많이 오래된 버전이므로, 업데이트를 할 필요가 있다.

    준비

    ssh client를 통해 root 계정으로 접속합니다.

    /etc/apt/sources.list 파일을 vim 또는 nano로 열어 기존 내용을 모두 삭제하고, 다음과 같이 입력 후 저장합니다.

    deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe multiverse
    deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe multiverse
    deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted universe multiverse
    deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse

    shell 에 해당 명령을 입력하고 진행합니다.

    apt update && apt upgrade

    우분투 업데이터를 받기 위해 쉘에 해당 명령을 입력하고 진행합니다.

    apt install ubuntu-release-upgrader-core

    설치가 모두 완료되었다면 쉘에 해당 명령을 입력해 업데이트를 시작하세요.

    do-release-upgrade
    ssh에서 do-release-upgrade 명령 실행
    do-release-upgrade 명령 실행 과정`

    패키지 삭제/설치를 하겠냐 물어보면 y를 누르고 엔터치면 됩니다.

    do-release-upgrade 명령 실행 과정 2

    만약 /etc/pam.d/su 설정파일을 변경하겠냐고 물어보면 무조권 N치고 엔터쳐서 거부하세요. 새 config 파일로 교체하면 su명령이 작동하지 않습니다.

    do-release-upgrade 명령 실행 과정 3

    패키지를 삭제하겠냐고 물어보는 질문에도 Y, 엔터를 친다.

    do-release-upgrade 명령 실행 완료

    업데이트가 모두 완료되면 다음과 같은 메시지가 표시된다

    웹서버 설치

    sudo apt-get install nginx

    ssh 터미널에 해당 명령을 적어 Nginx를 설치한다.

    sudo service nginx start

    설치가 끝나면 해당 명령을 적어 Nginx Service를 시작시키자.

    웹 브라우저를 열어 휴대폰 IP주소를 입력하면 초기 사이트가 나타날 것이다.

    Nginx의 초기 페이지 화면

    /var/www/html/

    에 파일을 업로드하거나

    /etc/nginx/sites-available/default

    파일을 수정해 nginx 사이트를 구성할 수 있다.

    /etc/nginx/nginx.conf

    에서 nginx 설정 파일을 수정할 수 있다.

    자세한 nginx 설정은 다른 포스팅을 참고하기 바란다.

    집 외부에서 SSH, 웹 접속하기

    집 외부에서 (홈 네트워크 밖에서) SSH에 접근하거나 웹으로 접속하려면 포트포워딩 이라는 작업을 해줘야 한다.

    이 포트포워딩 작업은 공유기마다 방법이 다르다. 다른 포스팅을 참고하기 바란다.

    마치며,

    안전하게 SSH를 사용하기 위해 ssh 비밀번호 인증 대신 인증서 인증을 사용하거나, 2단계 인증을 사용하기 바란다. 관련 내용은 구글에 구글에 검색하면 한국어 자료가 많으니 찾아보기 바란다.

    이렇게 안드로이드 휴대폰에 리눅스를 설치하여 웹서버로 활용하는 방법을 알아보았습니다. 저렴한 비용으로 웹서버를 구축할 수 있으며, 남는 안드로이드 휴대폰에 Linux를 설치하는 순간 휴대폰의 가능성은 무한해집니다. 이 글에서는 웹서버를 주제로 두고 글을 작성했지만, 웹서버 이외에도 Linux에서 arm64 아키텍처로 돌아가는 대부분의 프로그램을 구동할 수 있습니다. 이러한 가능성을 살펴보고 독창적인 아이디어를 구현해 보세요!


    게시됨

    카테고리

    작성자

    Obtuse의 테크 블로그 더 알아보기

    이 블로그에 새 글이 나올 때 마다 이메일로 알림을 받아보는 건 어때요?


    ※구독 버튼을 클릭하면 obtuse.kr의 개인정보 처리방침의 광고성 정보 수신에 동의하는 것으로 간주합니다.

    댓글

    답글 남기기

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

    이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.