← Back to list

태블릿을 개발머신으로 — vscode, termux

Android 태블릿을 질렀다. Lenovo Yoga Tab Pro 기종이다.

Sungyong · 2026-05-30 02:10 · 0 claps · 7.2 min read
#android #vscode #termux
Open on Medium ↗

태블릿을 개발머신으로 — vscode, termux

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

[embed]Release Nightly Release 20260527 · termux/termux-x11 Termux X-server add-on. Contribute to termux/termux-x11 development by creating an account on GitHub.github.com

이제 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 설치해서 개발하는 폼을 잡아본다.

이렇게 해서 선지름에 대한 지름사유를 규명한다.


메타데이터
post_id
4595686b5d9e
slug
태블릿을-개발머신으로-vscode-termux-4595686b5d9e
url
https://medium.com/@sungyong/%ED%83%9C%EB%B8%94%EB%A6%BF%EC%9D%84-%EA%B0%9C%EB%B0%9C%EB%A8%B8%EC%8B%A0%EC%9C%BC%EB%A1%9C-vscode-termux-4595686b5d9e
canonical_url
https://medium.com/@sungyong/%ED%83%9C%EB%B8%94%EB%A6%BF%EC%9D%84-%EA%B0%9C%EB%B0%9C%EB%A8%B8%EC%8B%A0%EC%9C%BC%EB%A1%9C-vscode-termux-4595686b5d9e
author_url
https://medium.com/@sungyong
status
ok
fetched_at
2026-07-14 20:51:12