- Kernel with this configs:
CONFIG_FHANDLE=y CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y CONFIG_PAGE_COUNTER=y CONFIG_MEMCG=y CONFIG_MEMCG_SWAP=y CONFIG_MEMCG_SWAP_ENABLED=y CONFIG_CGROUP_PERF=y CONFIG_BLK_CGROUP=y CONFIG_CGROUP_WRITEBACK=y CONFIG_CHECKPOINT_RESTORE=y CONFIG_USER_NS=y CONFIG_DEVPTS_MULTIPLE_INSTANCES=y CONFIG_PROC_CHILDREN=y
. If you using ArrowOS 13 you can download already compiled kernel by me. - Root rights
- Termux
- Termux-x11
Open Termux, update packages and install x11-repo and root-repo
: pkg update && pkg install x11-repo root-repo
, then install xwayland, tsu and lxc: pkg install tsu lxc xwayland
. Go to unpacked termux-x11
folder and install termux-x11: dpkg -i <termux-x11>.deb
Download this script, run tsu
(give root rights to Termux app), then run sh mountcgroups.sh
Create LXC container (I using Ubuntu 22.04): lxc-create ubuntu -t download -- --no-validate
We need mount kgsl-3d0
, termux-x11 tmp
folder and share internet to host, /data/data/com.termux/files/usr/var/lib/lxc/ubuntu/config
and add this lines:
lxc.mount.entry = /dev/kgsl-3d0 dev/kgsl-3d0 none bind,optional,create=file
lxc.mount.entry = /data/data/com.termux/files/usr/tmp tmp none bind,realtime,optional
lxc.cgroup.devices.allow =
lxc.cgroup.devices.deny =
lxc.net.0.type = none
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:b8:16:74
Now, we can run container: lxc-start ubuntu -F
and you should show booting systemd. Then he asks login and password open second Termux session and attach your container: lxc-attach ubuntu --clear-env
, then run /usr/bin/passwd
and type new password. Back to first session and type login root
and your password which your set.
Make sure what internet working: ping 8.8.8.8
, you should show pings, but if you try apt update
repo wont update. Run vi /etc/resolv.conf
and write nameserver 8.8.8.8
instead of exist, then quit with write and save file. Go to /etc/systemd/resolved.conf
and type DNS 8.8.8.8
, then quit with write and save file, then run systemctl restart systemd-resolved
. Now, internet should fully works.
Open second session and run termux-x11: Xvfb :0 -ac & && DISPLAY=:0 termux-x11 &
. Then go to first session, install any graphical program, run export DISPLAY=:0
and start graphical program, in termux-x11 app you should see open program. You can compile Turnip+Zink and get hardware acceleration using this guide
- Termux-x11 may have problems with X server socket, if you have problems open issue and let me know.
- If you try mount /sdcard read-write working only in root user
- $HOME and locales dumped in root
- Sound work (instruction)