추가 메뉴

태블릿에 termux, proot 설치해서 vscode로 개발환경 만들기
마추피추

Lv.1 마추피추 (211.♡.93.70)

2026년 5월 30일 AM 11:58

조회 685 공감 0

Android 태블릿을 질렀습니다. Lenovo Yoga Tab Pro 기종입니다.

태블릿 주제에 램이 16G나 되는 꽤나 좋은 사양입니다.

지르는데 무슨 특별한 이유가 있는게 아닌, 나에게 하는 선물이고, 선지름후고민 철학에 맞게 일단 지른겁니다.

주 목적인 유투브 재생해보고 난후, 개발머신으로 설정을 하기로 하고 시작했습다.

Linux development environment

안드로이드 16부터 시험기능으로 Linux development environment 이 추가되었습니다. Android 자체가 linux kernel 을 쓰는 거라, 그 linux terminal 을 android native 차원에서 지원하는 거라, 그걸 쓰기로 했습다.

개발자 설정화면에서 “Run Linux terminal on Android” 를 켰습니다. 그러면 Linux terminal app 이 추가되고, 그 앱을 실행하면 Linux 설치가 시작됩니다.

헌데, 설치중 에러 발생하네요.

AI가 이 문제에 대해 답해준 것은 컬컴때문이라고 한다.

원인: Qualcomm Snapdragon의 하드웨어 제한

Lenovo Yoga Tab (Pro 포함)은 Qualcomm Snapdragon 8 Gen 3 탑재 기기입니다. 에러 메시지 Non-protected VMs are not supported on this device는 정확히 이 칩셋의 알려진 문제입니다.

Android의 Linux Terminal은 AVF (Android Virtualisation Framework) 위에서 Debian VM을 실행하는데, 이를 위해선 두 가지 조건이 필요합니다: 기기가 AVF를 지원해야 하고, non-protected VM을 지원해야 합니다 — 즉 호스트 OS가 VM 내부 메모리에 접근할 수 있어야 합니다. 그런데 Qualcomm Snapdragon은 보안 목적(Play Protect 등)으로 설계된 protected VM만 지원하며, 이는 Linux 환경 실행에 적합하지 않습니다.

이렇게 Android 자체 제공 기능으로 하는 것은 여기서 실패!

Termux + proot-distro + code-server

AVF를 쓰지 않고 userspace에서 작동해 Snapdragon에서도 가능한 방법이 있고, 단 kernel space에 접근은 안되기에 systemd 는 안되고, device에 대한 접근도 안되는 제약은 있기는 한데, vscode 를 쓰는 용도로는 가능합니다.

먼저 termux와 termux-x11 앱 설치

https://github.com/termux/termux-app/releases

https://github.com/termux/termux-x11/releases/tag/nightly

이제 proot-distro 설치와 개발도구 설치

# Termux에서 도구 설치
pkg install x11-repo
pkg update
pkg install proot-distro
pkg install termux-x11-nightly
pkg install xwayland
pkg install tur-repo
pkg install code-server

ubuntu 컨테이너 설치

proot-distro install ubuntu
proot-distro login ubuntu

그럼 이제 ubuntu shell 이 뜬다

apt install -y xfce4 xfce4-terminal
apt install -y dbus dbus-x11

패키지 업데이트

apt update && apt upgrade -y

기본 빌드 도구

apt install -y
build-essential
gcc
g++
gdb
gdbserver
make
cmake
git
curl
wget
unzip
zip
pkg-config
ltrace
strace
binutils
file
xxd
netcat-openbsd
socat
patchelf
elfutils
tmux
htop
tree
jq
ripgrep
locales

Python

apt install -y
python3
python3-pip
python3-venv
python3-dev

Node.js LTS (nodesource)

curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
apt install -y nodejs

node 확인

node -v
npm -v

code-server (node 설치 후 다시)

curl -fsSL https://code-server.dev/install.sh | sh

locale

locale-gen en_US.UTF-8
echo 'export LANG=en_US.UTF-8' >> /.bashrc
echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
source ~/.bashrc

proot는 저수준 핵심 바이너리, proot-distro는 그 위에 만든 편의 래퍼입니다.

proot-distro (셸 스크립트 래퍼)
↓ 내부적으로 호출
proot (실제 엔진)
↓ 구현 방식
ptrace 시스템콜 인터셉트 → chroot 흉내

그래서 proot-distro login ubuntu 이 한줄은 내부적으로는 아래와 같이 이런 복잡한 proot 명령으로 변환됩니다.

# 내부적으로는 이런 복잡한 proot 명령으로 변환됨
proot
--rootfs=/.local/share/proot-distro/installed-rootfs/ubuntu
--bind=/dev --bind=/proc --bind=/sys
--bind=/sdcard
--change-id=0:0
--sysvipc
--link2symlink
-w /root
/usr/bin/env -i HOME=/root ... /bin/bash

이제 code server 설정합니다.

mkdir -p ~/.config/code-server
cat > ~/.config/code-server/config.yaml << 'EOF'
bind-addr: 127.0.0.1:8080
auth: password
password: mypassword
cert: false
EOF

Android Tab에서 VSCode

자 이제 준비가 되었고, vscode 사용하는 방법은 2가지가 있다. ubuntu 용 vscode 를 직접 x11 을 통해 실행하는 방법이 있고, android browser에서 code server 로 연결하는 방법이 있습니다.

x11로 띄우는 것이 리눅스와 동일한 방식이기는 한데, 그다지 편하지 않았다. 브라우저로 사용하는 방식을 택했습다.

절차는 termux app 을 통해 code server 실행

# termux shell
proot-distro login user

ubuntu shell

code-server &

이제 브라우저에서 localhost:8080 로 해서 접속하고, native app 처럼 보일 수 있게, 아예 home screen 에 추가했습다.

vscode extension 도 다 설치되어, claude code plugin 설치해서 개발하는 폼을 잡아본 것으로 마무리합니다.

댓글 (0)

  • 아직 댓글이 없습니다. 첫 댓글을 작성해보세요!

댓글을 작성하려면 이 필요합니다.