Prerequisites#
- magisk -> lhroot
- Termux
- Termux:X11
Optional -> Termux:Widget
Setup#
Termux#
Server Setup#
# Base Setup
pkg update -y && pkg upgrade -y
pkg install root-repo x11-repo tur-repo
pkg update -y
# Install Required packages
apt install -y tsu pulseaudio mesa-zink virglrenderer-mesa-zink xwayland termux-x11-nightly
# Optional Packages
apt install -y fish openssh
# Remove motd
touch .hushlogin
# GUI Setup
termux-setup-storage
sed '/allow-external-apps/s/^# //' -i ~/.termux/termux.properties
termux-reload-settings
# Audio Setup
printf '\nload-module module-sles-source\nload-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1\n' >> $PREFIX/etc/pulse/default.pa
# Start Audio Server
pulseaudio -D
# Termux:Widget shortcuts
mkdir .shortcuts
echo '#!/bin/sh
export CHROOT_DIR=/data/arch
killall -9 termux-x11 Xwayland pulseaudio virgl_test_server
termux-wake-lock; termux-toast "Starting X11"
am start --user 0 -n com.termux.x11/com.termux.x11.MainActivity
sudo busybox mount --bind $PREFIX/tmp $CHROOT_DIR/tmp
XDG_RUNTIME_DIR=${TMPDIR} termux-x11 :0 -ac &
sleep 3
pulseaudio -D
MESA_NO_ERROR=1 MESA_GL_VERSION_OVERRIDE=4.3COMPAT MESA_GLES_VERSION_OVERRIDE=3.2 GALLIUM_DRIVER=zink ZINK_DESCRIPTORS=lazy virgl_test_server --use-egl-surfaceless --use-gles &
su -c "(source bootlinux_env $CHROOT_DIR && $busybox chroot $CHROOT_DIR /usr/bin/env su -l poxi -c\
\"export XDG_RUNTIME_DIR=/tmp DISPLAY=:0 PULSE_SERVER=tcp:127.0.0.1:4713 && dbus-launch --exit-with-session startplasma-x11 &\")"' > ~/.shortcuts/LaunchXFCE_lhroot
echo '#!/bin/sh
export CHROOT_DIR=/data/arch
killall -9 termux-x11 Xwayland pulseaudio virgl_test_server
termux-wake-unlock; termux-toast "Stopping X11, chroot, etc."
sudo busybox umount $CHROOT_DIR/tmp
sudo killlinux $CHROOT_DIR' > ~/.shortcuts/KillChroot
echo '#!/bin/sh
termux-wake-lock; sshd &
echo "Connect using device IP, 8022 port"' > ~/.shortcuts/StartSSHDClient Setup#
# Adjust /etc/pacman.conf
# Reinit Arch Repos
pacman-key --init && pacman-key --populate && pacman -Sy archlinux-keyring --noconfirm
# Remove unnecessary packages
pacman -Rcns linux-aarch64
# Install necessary packages
pacman -S --noconfirm base-devel git wget vim mesa mesa-vdpau mesa-utils vulkan-mesa-layers libva-mesa-driver opencl-rusticl-mesa
# Install optional packages
pacman -S --noconfirm fish xfce4 pavucontrol pulseaudio pulseaudio-jack pulseaudio-alsa librewolf-bin box64
# Enable sudo for wheel
# Add standard user
useradd -m -G wheel -s /bin/fish poxi
# Set user password
passwd
# Switch to default user
su - poxi
# Fix fakeroot
git clone https://aur.archlinux.org/fakeroot-tcp.git && cd fakeroot-tcp && makepkg -si --noconfirm || cd src/fakeroot-1.32.1/ && sudo make install && cd ../.. && makepkg -si --noconfirm || yes | sudo pacman -U fakeroot-tcp-1.32.1-1-aarch64.pkg.tar.xz --overwrite="*"
# Install yay
git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si --noconfirm
# Fix SystemD
mv /usr/bin/systemctl /usr/bin/systemctl.old && curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl3.py > /usr/bin/systemctl &&chmod +x /usr/bin/systemctl
# Clean Build
cd ~/ && rm -rf fakeroot-tcp yay