오래된 안드로이드 폰을 Linux 서버로 바꾸려는 시도는 여러 Linux 배포판을 시도하는 것으로 끝났습니다.
하지만 안드로이드 폰을 라즈베리 파이 같은 기기에 버금가는 홈 서버로 만들어 보는 건 어떨까요? 그래서 또 다른 아이디어가 떠올랐고, 이 프로젝트를 시도해 보기로 했습니다. 스마트폰에서 PC 게임을 실행해 본 적이 있으니 리눅스 컨테이너를 실행하는 건 그렇게 어렵지 않을 텐데 말이죠. 음, 꼭 그렇지만은 않습니다. 루트 권한이 없다는 제약 때문에 폰에서 실행할 수 있는 배포판이 몇 개뿐이었고, 결국 패키지 서비스를 실행하는 것보다 배포판 간 전환에 더 나은 환경을 구축할 수 있었습니다.
이 설정에 적합한 패키지를 선택하세요.
결국 저는 Temux + proot-distro를 설치하기로 했습니다.
이 프로젝트에서 가장 큰 어려움은 휴대폰을 루팅하지 않고도 안정적으로 작동하는 설정을 찾는 것이었습니다. 예전에는 휴대폰을 구매하자마자 바로 탈옥했었습니다. 하지만 최신 앱들이 주는 제약 때문에 루팅은 피하는 것이 최선이라고 생각했습니다.
안타깝게도 컨테이너를 직접 실행하는 방법에는 루팅된 머신이 필요하고, 경우에 따라서는 커스텀 커널 모듈까지 필요합니다. 이러한 제약 때문에 대안을 찾아야 했습니다. chroot를 통해 실행되는 가상 머신을 포함하여 루팅되지 않은 머신에서 가상 머신을 실행할 때도 비슷한 문제가 발생했습니다.
그래서 저는 안드로이드 프로젝트에서 자주 사용하는 강력한 터미널 에뮬레이터인 Termux를 활용한 대안을 찾았습니다. GitHub을 우연히 둘러보다가 proot-distro를 발견했는데, 이 실험에 딱 맞는 패키지처럼 보였습니다. 기본적으로 proot-distro는 proot 환경(chroot의 사용자 공간 버전)을 만들어서 원하는 대로 Linux 배포판을 조작할 수 있도록 합니다. 이 때문에 제가 여러 배포판을 옮겨 다니게 될 줄은 꿈에도 몰랐습니다.
Android에서 Linux 배포판 조작하기
proot-distro는 처음에는 잘 작동했습니다.
모든 준비가 완료되어 프로젝트를 다음 단계로 진행할 때가 되었습니다. Termux에서 `pkg install proot-distro` 명령을 실행한 후, 필요한 패키지가 모두 설치될 때까지 몇 분 정도 기다렸습니다. 그런 다음 `proot-distro install debian` 명령을 실행하여 스마트폰에 데비안 환경 설정을 시작했습니다. 설치가 완료된 후 `proot-distro login debian` 명령을 실행하여 데비안에 로그인했습니다. 예상대로 제 폰에는 유명한 데비안 운영체제가 실행되고 있었습니다.
sudo 권한으로 어떤 패키지도 실행할 수 없었기 때문에, 일반적인 `apt update` 및 `apt upgrade` 명령을 사용하여 패키지를 업데이트하는 것부터 시작했습니다. 다음으로 DokuWiki를 포함한 몇 가지 일반 패키지를 설치해 보았습니다. 하지만 대부분의 패키지가 즉시 실패했습니다. Docker도 설치해 보았는데, 몇 가지 오류가 발생했습니다. 이러한 실패에도 굴하지 않고 Podman에 집중했지만, 역시 실행되지 않았습니다. 지금 돌이켜보면, 컨테이너 런타임이 휴대폰에서 작동하도록 커널을 수정해야 했던 만큼, 이는 당연한 결과였습니다.
하지만 루트 앱을 실행할 수 없었습니다.
GitHub을 잠시 둘러보다가 proot-apps 저장소를 찾았습니다. 이름에서 이미 짐작하셨겠지만, LinuxServer의 창의적인 개발자들이 proot 환경에서 실행되도록 설계한 애플리케이션 모음입니다. 그래서 저는 이 애플리케이션 중 일부를 제 Debian 가상 머신에 설치하기 시작했습니다. 안타깝게도 Nextcloud처럼 일반적인 Docker 컨테이너용으로 설계된 애플리케이션들은 제 설정에서는 작동하지 않았습니다. 흥미롭게도, 오류 코드에 QEMU(혹은 QEMU가 없다는 뜻)가 언급되었는데, 이 애플리케이션에는 필요하지도 않은 기능입니다.
하지만 다른 배포판에서 패키지를 실행해 볼 수 있을 것 같았습니다. Fedora는 Podman을 더 잘 지원하기 때문에 다른 배포판에서 컨테이너 런타임을 실행해 볼 수 있을 것 같았지만, 역시 작동하지 않았습니다. 그런 다음 Arch Linux 설정에서 proot-apps를 실행해 보았지만, 다른 배포판에서는 전혀 실행되지 않았습니다. 가장 걱정스러웠던 것은 마지막 부분이었습니다…
Termux-Pentesting-Distro 저장소로 이동됨
하지만 그때쯤에는 저는 처음 프로젝트의 목적을 잃어버렸습니다.
데비안, 페도라, 아치 같은 배포판은 "작동"했지만, 패키지 문제 때문에 많은 애플리케이션을 설치할 수 없다는 것을 알게 되었습니다. 심지어 neofetch 같은 간단한 프로그램도 마찬가지였습니다. GitHub에서 Termux-Pentesting-Distro 저장소를 찾은 후 마지막으로 한 번 시도해 보기로 했습니다. 결과는 어땠을까요? 이 저장소는 다양하고 멋진 배포판을 지원할 뿐만 아니라 다양한 애플리케이션을 실행할 수 있었습니다. 윈도우 관리자나 데스크톱 환경은 실행할 수 없었지만, 휴대폰에 여러 배포판을 설치할 수 있었습니다.
마찬가지로, 새 배포판의 저장소에서 Emacs, Neovim, 그리고 다른 필수 Linux 애플리케이션들을 설치할 수 있었습니다. 문제는? 이쯤 되자 컨테이너를 실행한다는 원래 목표에서 완전히 벗어나 멋진 배포판들을 실험하는 데 완전히 집중하게 되었다는 것입니다. 변명하자면, Linux 배포판의 엄청난 수에 제 뇌는 흥분을 금할 수 없었습니다. 특히 완전히 새로운 이름을 가진 배포판들이 몇 개나 있었기 때문입니다. 게다가 모든 Linux 버전에는 Neofetch가 기본으로 포함되어 있었는데, 배포판을 바꾸는 것보다 제가 더 좋아하는 것이 있다면 바로 Neofetch의 멋진 위젯을 보는 것입니다.
지금은 제가 정리한 배포판들 간의 이상한 전환에 만족하고 있습니다. 특히 제 폰에서 기본 컨테이너를 실행할 방법을 찾지 못했기 때문입니다. 곧 조금 더 오래된 두 번째 폰을 루팅해서 다른 사람들처럼 Docker와 Podman 컨테이너로 다시 시도해 볼 계획입니다.
댓글이 닫혀있다.