Saya telah membeli tablet Android. Ini model Lenovo Yoga Tab Pro.


Ini spesifikasi yang cukup bagus untuk tablet dengan RAM 16GB.
Membeli ini bukan karena alasan khusus, ini adalah hadiah untuk diri saya sendiri, dan sesuai dengan filosofi membeli dulu baru pikirkan kemudian, saya langsung membelinya.
Setelah mencoba memainkan YouTube sebagai tujuan utama, saya memutuskan untuk mengaturnya sebagai mesin pengembangan dan mulai.
Linux development environment
Mulai dari Android 16, lingkungan pengembangan Linux ditambahkan sebagai fitur eksperimental. Karena Android sendiri menggunakan kernel Linux, itu mendukung terminal Linux di tingkat native Android, jadi saya memutuskan untuk menggunakannya.

Saya mengaktifkan "Run Linux terminal on Android" di layar pengaturan developer. Kemudian aplikasi terminal Linux ditambahkan, dan ketika menjalankan aplikasi tersebut, instalasi Linux dimulai.

Namun, terjadi kesalahan selama instalasi.
AI memberikan jawaban bahwa masalah ini disebabkan oleh Qualcomm.
Penyebab: Batasan perangkat keras Qualcomm Snapdragon
Lenovo Yoga Tab (termasuk Pro) adalah Qualcomm Snapdragon 8 Gen 3 perangkat. Pesan kesalahan Non-protected VMs are not supported on this device adalah masalah yang diketahui dengan tepat pada chipset ini.
Terminal Linux Android menjalankan Debian VM di atas AVF (Kerangka Virtualisasi Android), dan untuk ini diperlukan dua syarat: perangkat harus mendukung AVF, dan VM yang tidak dilindungi — artinya OS host harus dapat mengakses memori internal VM. Namun, Qualcomm Snapdragon hanya mendukung VM yang dilindungi yang dirancang untuk tujuan keamanan (Play Protect, dll.), dan ini tidak cocok untuk menjalankan lingkungan Linux.
Dengan demikian, menggunakan fitur yang disediakan oleh Android itu sendiri gagal di sini!
Termux + proot-distro + code-server
Ada metode yang bekerja di userspace tanpa menggunakan AVF sehingga juga mungkin di Snapdragon, tetapi karena tidak dapat mengakses kernel space, systemd tidak berfungsi, dan ada batasan bahwa akses ke perangkat juga tidak mungkin, tetapi ini dimungkinkan untuk tujuan menggunakan VSCode.
Pertama instal aplikasi termux dan termux-x11
https://github.com/termux/termux-app/releases
https://github.com/termux/termux-x11/releases/tag/nightly
Sekarang instal proot-distro dan alat pengembangan
# Memasang alat di 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
# Memasang kontainer ubuntu
proot-distro install ubuntu
proot-distro login ubuntu
# Sekarang shell ubuntu akan muncul
apt install -y xfce4 xfce4-terminal
apt install -y dbus dbus-x11
# Perbarui paket
apt update && apt upgrade -y
# Alat build dasar
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
# Periksa node
node -v
npm -v
# code-server (pasang ulang setelah instalasi 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 adalah biner inti level rendah, proot-distro adalah pembungkus kenyamanan yang dibuat di atasnya.
proot-distro (pembungkus skrip shell)
↓ dipanggil secara internal
proot (mesin sebenarnya)
↓ cara implementasi
ptrace system call intercept → meniru chroot
Jadi satu baris proot-distro login ubuntu secara internal diubah menjadi perintah proot kompleks seperti di bawah ini.
# Secara internal diubah menjadi perintah proot kompleks seperti ini
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
Sekarang mari atur 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
VSCode di Android Tab
Sekarang semuanya siap, ada 2 cara menggunakan vscode. Ada cara menjalankan vscode untuk ubuntu secara langsung melalui x11, dan ada cara menghubungkan dari browser android ke code server.
Cara membukanya dengan x11 sama seperti linux, tetapi tidak terlalu nyaman. Saya memilih cara menggunakan browser.
Prosedurnya adalah menjalankan code server melalui aplikasi termux
# termux shell
proot-distro login user
# ubuntu shell
code-server &
Sekarang saya menghubungkan melalui localhost:8080 di browser, dan menambahkannya ke home screen agar terlihat seperti aplikasi native.

Dengan semua ekstensi vscode terpasang, saya menutup dengan memasang plugin claude code dan mencoba mengembangkan.