Skip to content

Instantly share code, notes, and snippets.

@lucasfernandodev
Created February 23, 2025 13:17
Show Gist options
  • Save lucasfernandodev/b194d22b54c24e82724eaa9e6a830151 to your computer and use it in GitHub Desktop.
Save lucasfernandodev/b194d22b54c24e82724eaa9e6a830151 to your computer and use it in GitHub Desktop.
Script to start chroot linux
#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
killall -9 virgl_test_server virgl_test_server_android
pkill -f com.termux.x11;
## Start Termux X11
am start --user 0 -n com.termux.x11/com.termux.x11.MainActivity >> $HOME/chroot.log 2>&1 &
su -c "setenforce 0";
su -c "chown $USER /data/local/tmp/debian/tmp"
export XDG_RUNTIME_DIR=/data/local/tmp/debian/tmp
export CLASSPATH=$(/system/bin/pm path com.termux.x11 | cut -d: -f2)
export XKB_CONFIG_ROOT=/data/local/tmp/debian/usr/share/X11/xkb;
/system/bin/app_process / com.termux.x11.CmdEntryPoint :0 >> $HOME/chroot.log 2>&1 &
sleep 2
# Start Pulse Audio of Termux
pulseaudio --start --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
# Start virgl server
#virgl_test_server_android >> $HOME/chroot.log 2>&1 &MESA_NO_ERROR=1 MESA_GL_VERSION_OVERRIDE=4.5COMPAT MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink ZINK_DESCRIPTORS=lazy virgl_test_server --use-egl-surfaceless --use-gles &
MESA_NO_ERROR=1 MESA_GL_VERSION_OVERRIDE=4.5COMPAT MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink ZINK_DESCRIPTORS=lazy virgl_test_server --use-egl-surfaceless --use-gles >> $HOME/chroot.log 2>&1 &
su -c "sh /data/local/tmp/start_debian.sh" >> $HOME/chroot.log 2>&1 &
echo 'Iniciando debian'
#script que deveria iniciar o supervisord e exportar as variaveis globais.
- As variaveis de ambiente devem setar o usuário;
- o supervisord deve iniciar os processos: barrier-client, sshd, xfce4.
#!/bin/sh
# The path of Ubuntu rootfs
UBUNTUPATH="/data/local/tmp/debian"
chmod -R 777 /data/data/com.termux/files/usr/tmp
busybox mount --bind /data/data/com.termux/files/usr/tmp $UBUNTUPATH/tmp
busybox mount --make-slave $UBUNTUPATH/tmp
# Fix setuid issue
busybox mount -o remount,dev,suid /data
busybox mount --rbind /dev $UBUNTUPATH/dev
#busybox mount -t devpts devpts $UBUNTUPATH/dev/pts
busybox mount --make-rslave $UBUNTUPATH/dev
busybox mount --rbind /sys $UBUNTUPATH/sys
busybox mount --make-rslave $UBUNTUPATH/sys
busybox mount --rbind /proc $UBUNTUPATH/proc
busybox mount --make-rslave $UBUNTUPATH/proc
# /dev/shm for Electron apps
mkdir -p /dev/shm
busybox mount -t tmpfs -o size=256M tmpfs $UBUNTUPATH/dev/shm
#busybox mount -t tmpfs -o size=256M tmpfs $UBUNTUPATH/run
busybox mount -t tmpfs -o size=256M tmpfs $UBUNTUPATH/run/user/6000
chmod 777 $UBUNTUPATH/dev/null
# Mount sdcard
#busybox mount --rbind /sdcard $UBUNTUPATH/sdcard
umount()
{
sync
sleep 1
busybox umount $UBUNTUPATH/dev/pts && echo "Desmontando /dev/pts"
busybox umount -l $UBUNTUPATH/dev/shm && echo 'Desmontando /dev/shm'
#busybox umount -l $UBUNTUPATH/dev/pts && echo 'Desmonstando /dev/etc'
sleep 3
busybox umount -l $UBUNTUPATH/dev && echo 'Desmontando /dev'
sleep 3
busybox umount -l $UBUNTUPATH/proc && echo 'Desmontando /proc'
busybox umount -l $UBUNTUPATH/sys && echo 'Desmontando /sys'
busybox umount -l $UBUNTUPATH/tmp && echo 'Desmontando /tmp'
#busybox umount -l $UBUNTUPATH/sdcard && echo 'Desmontando /sdcard'
}
on_chroot_exit()
{
pkill -f com.termux.x11;
am broadcast -a com.termux.x11.ACTION_STOP -p com.termux.x11 >/dev/null 2>&1 && echo 'Fechando aplicativo termux-x11';
umount;
echo 'Chroot finalizado com sucesso'
}
#chmod 777 $UBUNTUPATH/dev/null
#chmod 777 /dev/fuse || true
busybox chroot $UBUNTUPATH /bin/su - root -c "/usr/bin/initialize.sh" &
PID="$!"
sleep 5
while true; do
# Comando para pegar o PID do supervisord, ignorando o próprio comando pgrep
PIDS=$(su -c 'pgrep -af supervisord | grep -v "pgrep" | awk "{print $1}"')
# Verifica se PIDS contém um número (PID)
if [ -n "$PIDS" ]; then
# echo "Processo supervisord encontrado com PID: $PIDS"
# Adicione aqui qualquer ação desejada, como matar o processo:
# sudo kill -9 $PIDS
sleep 2 # Aguarda 2 segundos antes de verificar novamente
else
echo "Nenhum processo supervisord encontrado. Saindo..."
break # Sai do loop quando o processo não for encontrado
fi
done
pkill -9 "$PID"
on_chroot_exit
# Umount everything after exiting the shell. Because the graphical environment will be installed later, they are commented. If you do not want to install a graphics environment, uncomment the following commands.
#busybox umount $UBUNTUPATH/dev/shm
#busybox umount $UBUNTUPATH/dev/pts
#busybox umount $UBUNTUPATH/dev
#busybox umount $UBUNTUPATH/proc
#busybox umount $UBUNTUPATH/sys
#busybox umount $UBUNTUPATH/sdcard
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment