1+ #! /bin/sh
2+
3+ MODDIR=${0%/* }
4+ PKG_TERMUX=/data/data/com.termux
5+
6+ NET_STATE=" "
7+ NET_FUNC=" "
8+ GPU_STATE=" "
9+ AUD_STATE=" "
10+ DAEMON_STATE=" "
11+
12+ LXC_DIR=" @PREFIXDIR@"
13+ LXC_TMPDIR=$LXC_DIR /tmp
14+ LXC_NET=$LXC_DIR /libexec/lxc/lxc-net
15+ LXC_NET_BUILTIN=$LXC_DIR /libexec/lxc/lxc-net-builtin
16+ LXC_DNSMASQ=$LXC_DIR /bin/dnsmasq
17+
18+ NET_FUNC=" "
19+ GPU_FUNC=" "
20+ GPU_FUNC_DIR=/storage/emulated/0/lxc
21+
22+ # Init desc
23+ sed -i " s|description=.*|description={}|g" $MODDIR /module.prop
24+
25+ # Setup lxc-tmp
26+ if ! mountpoint -q $LXC_TMPDIR ; then
27+ mkdir -p $LXC_TMPDIR
28+ mount -t tmpfs tmpfs $LXC_TMPDIR
29+ else
30+ continue
31+ fi
32+
33+ # Setup Cgroup
34+ if mountpoint -q /sys/fs/cgroup; then
35+ if mountpoint -q /sys/fs/cgroup/unified > /dev/null 2>&1 ; then
36+ umount /sys/fs/cgroup/unified
37+ fi
38+ umount /sys/fs/cgroup
39+ mount -t tmpfs tmpfs /sys/fs/cgroup
40+ mkdir -p /sys/fs/cgroup/unified
41+ mount -t cgroup2 cgroup2 -o rw,nosuid,nodev,noexec,relatime /sys/fs/cgroup/unified
42+ else
43+ mount -t tmpfs tmpfs /sys/fs/cgroup
44+ mkdir -p /sys/fs/cgroup/unified
45+ mount -t cgroup2 cgroup2 -o rw,nosuid,nodev,noexec,relatime /sys/fs/cgroup/unified
46+ fi
47+
48+ for subsys in cpu cpuacct memory freezer devices blkio pids cpuset systemd; do
49+ if ! mountpoint -q /sys/fs/cgroup/$subsys > /dev/null 2>&1 ; then
50+ mkdir -p /sys/fs/cgroup/$subsys
51+
52+ if [ $subsys == " systemd" ]; then
53+ mount -t cgroup -o none,name=$subsys cgroup /sys/fs/cgroup/$subsys
54+ else
55+ mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,$subsys cgroup /sys/fs/cgroup/$subsys
56+ fi
57+
58+ if [ $? -eq 0 ]; then
59+ echo " $subsys ok"
60+ else
61+ echo " $subsys failed"
62+ fi
63+ else
64+ echo " $subsys mounted"
65+ fi
66+ done
67+
68+ # Start lxc-net
69+ if [ -e $LXC_DNSMASQ ]; then
70+ $LXC_NET start
71+ NET_FUNC=" full"
72+ else
73+ $LXC_NET_BUILTIN start
74+ NET_FUNC=" IPv6 disabled, Hotspot conflict."
75+ fi
76+
77+ if [ -e $LXC_TMPDIR /lxc/network_up ]; then
78+ NET_STATE=" lxc-net ✅ ($NET_FUNC )"
79+ else
80+ NET_STATE=" lxc-net ❎"
81+ fi
82+
83+ # Start lxc-gpu
84+ if [ -e $GPU_FUNC_DIR /gpu ]; then
85+ GPU_FUNC=$( cat $GPU_FUNC_DIR /gpu)
86+ if [ " $GPU_FUNC " = " termux virgl" ]; then
87+ GPU_STATE=" lxc-gpu ✅ ($GPU_FUNC )"
88+ cat > $GPU_FUNC_DIR /gpu.conf << EOF
89+ # This file is generated by LXC-daemon, to use this
90+ # config, you can add "lxc.include = $GPU_FUNC_DIR /gpu.conf"
91+ # in $LXC_DIR /lib/lxc/<name>/config.
92+ # need to run "systemctl mask tmp.mount" in container.
93+ lxc.mount.entry = $PKG_TERMUX /files/usr/tmp tmp tmpfs bind,rw 0 0
94+ EOF
95+ else
96+ GPU_STATE=" lxc-gpu ✅ (Unsupported $GPU_FUNC )"
97+ fi
98+ else
99+ GPU_STATE=" lxc-gpu ❎ (not loaded)"
100+ fi
101+
102+ # Start lxc-audio
103+ AUD_STATE=" lxc-audio ❎"
104+
105+ DAEMON_STATE=" $NET_STATE , $GPU_STATE , $AUD_STATE "
106+
107+ sed -i " s|description={}|description=$DAEMON_STATE |g" $MODDIR /module.prop
0 commit comments