Skip to content

Latest commit

 

History

History
238 lines (187 loc) · 6.29 KB

ubuntu_chroot.md

File metadata and controls

238 lines (187 loc) · 6.29 KB

Caution

READ CAREFULLY! When using Chroot environments to exit completely close the Termux application even from the background apps or if necessary force close it. Otherwise, in case you do some command like "rm -rf chrootFolder" the device will go crazy and you will have to force reboot it.

📚 Index

CHROOT (🟠 UBUNTU)





Note

All the process is described in this video

🏁 First steps

  1. First you need to have your device rooted.
  2. You need to flash Busybox with Magisk.
  3. Then you need to install the following packages in Termux:
pkg update
pkg install x11-repo
pkg install root-repo
pkg install termux-x11-nightly
pkg update
pkg install tsu
pkg install pulseaudio


💻🟠 Setting Ubuntu chroot

This steps are from Ivon's blog but I modified a little bit some lines. These are the post used:

  1. Enter Android shell with root privileges:
su
  1. Create a directory at /data/local/tmp for chroot environment
mkdir /data/local/tmp/chrootubuntu
cd /data/local/tmp/chrootubuntu
  1. Download Ubuntu 22.0.4 LTS rootfs:
curl https://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04-base-arm64.tar.gz --output ubuntu.tar.gz

  1. Unzip the downloaded file and create some folders to mount the sdcard
tar xpvf ubuntu.tar.gz --numeric-owner

mkdir sdcard
mkdir dev/shm
  1. Create a start script:
cd ../
vi start.sh

Copy and paste the following:

#!/bin/sh

# The path of Ubuntu rootfs
UBUNTUPATH="/data/local/tmp/chrootubuntu"

# Fix setuid issue
busybox mount -o remount,dev,suid /data

busybox mount --bind /dev $UBUNTUPATH/dev
busybox mount --bind /sys $UBUNTUPATH/sys
busybox mount --bind /proc $UBUNTUPATH/proc
busybox mount -t devpts devpts $UBUNTUPATH/dev/pts

# /dev/shm for Electron apps
busybox mount -t tmpfs -o size=256M tmpfs $UBUNTUPATH/dev/shm

# Mount sdcard
busybox mount --bind /sdcard $UBUNTUPATH/sdcard

# chroot into Ubuntu
busybox chroot $UBUNTUPATH /bin/su - root
  1. Make the script executable and run it:
chmod +x start.sh
sh start.sh
  1. The prompt will change to root@localhost. If you need to return to Termux just write exit. Let's execute some fixes:
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "127.0.0.1 localhost" > /etc/hosts

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 update
apt upgrade

apt install nano vim net-tools sudo git
  1. Setup timezone:
ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime
  1. Create a new user called droidmaster (or the name you prefer)
groupadd storage
groupadd wheel
useradd -m -g users -G wheel,audio,video,storage,aid_inet -s /bin/bash droidmaster
passwd droidmaster
  1. Add the created user to sudoers file to have superuser privileges:
nano /etc/sudoers

Add this line:

droidmaster ALL=(ALL:ALL) ALL
  1. Switch to the created user:
sudo apt install locales
sudo locale-gen en_US.UTF-8
  1. Install Desktop Environment:
  • XFCE4
sudo apt install xubuntu-desktop
  • KDE Plasma
sudo apt install kubuntu-desktop

Note

This step is for Ubuntu only

  1. Disable Snapd (it can't be used on Termux):
apt-get autopurge snapd

cat <<EOF | sudo tee /etc/apt/preferences.d/nosnap.pref
# To prevent repository packages from triggering the installation of Snap,
# this file forbids snapd from being installed by APT.
# For more information: https://linuxmint-user-guide.readthedocs.io/en/latest/snap.html
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF
  1. Exit chroot and modify the start.sh script created on step 5:
nano /data/local/tmp/start.sh

Change the last line busybox chroot $UBUNTUPATH /bin/su - root to this line:

busybox chroot $UBUNTUPATH /bin/su - user -c "export DISPLAY=:0 PULSE_SERVER=tcp:127.0.0.1:4713 && dbus-launch --exit-with-session startxfce4"

If you installed other Desktop Environment you need to change the startxfce4 part. For example for KDE Plasma it should be startplasma-x11.

  1. Let's run the Desktop Environment. Exit chroot environment and copy the following commands on Termux (you can close everything an reopen Termux to be sure you are outside chroot).
XDG_RUNTIME_DIR=${TMPDIR} termux-x11 :0 -ac &
sudo busybox mount --bind $PREFIX/tmp /data/local/tmp/chrootubuntu/tmp

sh /data/local/tmp/start.sh

Now you are inside chroot. Execute this:

sudo chmod -R 777 /tmp
export DISPLAY=:0 PULSE_SERVER=tcp:127.0.0.1:4713
dbus-launch --exit-with-session startxfce4 &
  1. Open Termux X11 and check that you can use the desktop environment.


⬇️ Download Ubuntu Chroot

  • Download Ubuntu 22.04 rootfs:
curl https://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04-base-arm64.tar.gz --output ubuntu.tar.gz


🎨 Customizations (Nerdfonts, XFCE4 terminal color palettes, etc)

  • XFCE4 color palettes:

  • Installing NerdFonts on chroot env (Debian, Ubuntu) from this post:

sudo apt install wget unzip -y
wget -P ~/.local/share/fonts https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/JetBrainsMono.zip \
&& cd ~/.local/share/fonts \
&& unzip JetBrainsMono.zip \
&& rm JetBrainsMono.zip \
&& fc-cache -fv