在Termux chroot Ubuntu 22.04环境中使用vscode和zotero
前言:
之前使用Termux都是使用proot-distro的文件系统,但是proot的权限有限制,比如htop无法查看cpu使用情况,arp等指令无法使用等问题。既然平板都已经root了,为何不搭建一个更高权限的环境呢。
平台:xiaomi pad 5 pro(5G)
注意:需要Root
一、准备工作
1、Android 12安裝Busybox
- 安装这个新版本Magisk模块管理器:FoxMagisk Module Manager
- 从里面搜寻“Builtn Busybox”,安装Magisk模块,重开机。
2、配置openssh
为了方便后续安装,建议使用pc端ssh连接termux进行操作。
安装openssh
pkg update
pkg install openssh -y
设置密码
passwd
启动sshd
sshd
注意termux终端的sshd默认使用8022端口,另外ssh连接termux时无视用户名
到此,就可以在pc端完成后面的操作了
二、安装Ubuntu chroot环境
Linux Deploy默认是把文件系统存放成映像文件挂载,但这里我们直接把Ubuntu的文件系统解压缩到适当的位置。
启用Termux,安装tsu和pulseaudio:
pkg install tsu pulseaudio
切换到su,选择这个目录比较不会有权限问题。 首先添加存储文件系统的目录 :
/data/local/tmp
su mkdir /data/local/tmp/chrootubuntu cd /data/local/tmp/chrootubuntu
下载最新Ubuntu 22.04 base文件系统。 你可以到Ubuntu官网查看每日建构的最新版本。
wget https://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04-base-arm64.tar.gz
解压缩,再新增一个当作挂载点的sdcard目录
tar xpvf ubuntu-base-22.04-base-arm64.tar.gz --numeric-owner mkdir sdcard
用vi在新增启动chroot的脚本,填入以下内容。
/data/local/tmp/start.sh
busybox mount --bind /dev /data/local/tmp/chrootubuntu/dev busybox mount --bind /sys /data/local/tmp/chrootubuntu/sys busybox mount --bind /proc /data/local/tmp/chrootubuntu/proc busybox mount -t devpts devpts /data/local/tmp/chrootubuntu/dev/pts mkdir /data/local/tmp/chrootubuntu/dev/shm busybox mount -t tmpfs -o size=256M tmpfs data/local/tmp/chrootubuntu/dev/shm # 將手機內部儲存空間掛載到chroot的/sdcard目錄 busybox mount --bind /sdcard /data/local/tmp/chrootubuntu/sdcard # 進入chroot busybox chroot /data/local/tmp/chrootubuntu /bin/su - root # 退出chroot後自動取消掛載 busybox umount /data/local/tmp/chrootubuntu/dev/shm busybox umount /data/local/tmp/chrootubuntu/dev/pts busybox umount /data/local/tmp/chrootubuntu/dev busybox umount /data/local/tmp/chrootubuntu/proc busybox umount /data/local/tmp/chrootubuntu/sys busybox umount /data/local/tmp/chrootubuntu/sdcard
赋予执行权限
chmod +x start.sh
进入chroot,这样就可以开始安装VNC server和SSH等服务了。 此脚本在输入之后会自动取消挂载目录。 如果退出后chroot行程没有中止,那么就强制停止Termux。
sh start.sh
如果想打开termux进入chroot ubuntu,vim编辑 .bashrc
pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
cd /data/local/tmp
su -c ./start.sh
三、安装常用软件和桌面环境
在下载软件包前,先修正DNS和添加本地名:
# 使用Google的DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "127.0.0.1 localhost" > /etc/hosts
然后解决“Download is performed unsandboxed as root”警告,并让root能访问Android的网络:
groupadd -g 3003 aid_inet
groupadd -g 3004 aid_net_raw
groupadd -g 1003 aid_graphics
usermod -g 3003 -G 3003,3004 -a _apt
usermod -G 3003 -a root
更新APT存储库并安装常用工具 :
apt update
apt upgrade
apt install vim
安装XFCE4(选择2):
apt install xfce4 xfce4-goodies
update-alternatives --config x-terminal-emulator
安装VNC server:
apt install tigervnc-standalone-server tigervnc-xorg-extension
设定6位数字密码 :
vncpasswd
用vim编辑,设定 VNC 启动脚本 :~/.vnc/xstartup
vim ~/.vnc/xstartup
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADRESS
# 設定PulseAudio音效
export PULSE_SERVER=127.0.0.1 && pulseaudio --start --disable-shm=1 --exit-idle-time=-1
# 執行XFCE4
exec startxfce4
赋予执行权限
chmod +x ~/.vnc/xstartup
执行VNC server(注意屏幕上显示的端口号),再使用AVNC新增进行联机。 此外也可以用电脑的VNC Viewer进行区域连线。localhost:5901
vncserver :1 -localhost no -geometry 2560x1600
为了方便调用,可以在chroot ubuntu的.bashrc中添加
alias vnc='vncserver :1 -localhost no -geometry 2560x1600'
后续使用vnc命令即可开启vncserver
关闭vncserver
vncserver -kill :1
四、安装浏览器
目前如果使用apt安装firefox-esr的话,ubuntu会将安装指向snap,但是chroot环境中的snap有些问题无法使用,所以需要从Mozilla官方软件库安装,在此之前需要先安装
sudo apt install software-properties-common
才能使用add-apt-repository
命令
sudo add-apt-repository ppa:mozillateam/ppa
sudo apt-get update
sudo apt-get install firefox-esr
五、安装vscode
vscode官方下载地址为Visual Studio Code - Code Editing. Redefined
选择.deb ARM64版本进行下载,可以将下载链接复制到termux中进行下载,下面的下载链接只是示范,具体可换成自己想要安装的版本
cd Downloads/
wget https://az764295.vo.msecnd.net/stable/d045a5eda657f4d7b676dedbfa7aab8207f8a075/code_1.72.2-1665612990_arm64.deb
安装vscode
dpkg -i code_1.72.2-1665612990_arm64.deb
六、安装zotero
在Index of /aarch64/ (archlinuxcn.org)中选择zotero-6.x.xxx-aarch64.pkg.tar.zst,复制下载链接,使用wget完成下载
cd Downloads/
wget https://repo.archlinuxcn.org/aarch64/zotero-6.0.15-1-aarch64.pkg.tar.zst
安装工具:
apt install zstd alien
安装zotero
zstd -d zotero-6.0.15-1-aarch64.pkg.tar.zst
alien -vv zotero-6.0.15-1-aarch64.pkg.tar
注意:这里需要等待数分钟
在命令执行结束后,会在Download文件下生成一个zotero的.deb文件,使用dpkg完成安装
dpkg -i zotero_6.0.15-2_all.deb
参考资料
用手机Termux建立chroot Ubuntu 22.04环境 | Ivon的博客 (ivonblog.com)**
通过Termux和VNC实现以手机为服务器的桌面办公_phaste的博客-CSDN博客_termux vnc
How to Fix ‘add-apt-repository command not found’ on Ubuntu / Debian (phoenixnap.com)