]> glassweightruler.freedombox.rocks Git - waydroid.git/blob - scripts/run-container.sh
anbox: Setup drivers incase they are not loaded
[waydroid.git] / scripts / run-container.sh
1 #!/bin/bash
2 cd /home/anbox
3
4 if [ ! -e /dev/anbox-hwbinder ] || [ ! -e /dev/ashmem ]; then
5 modprobe binder_linux devices="anbox-binder,anbox-hwbinder,anbox-vndbinder"
6 modprobe ashmem_linux
7 mkdir /dev/binderfs
8 mount -t binder binder /dev/binderfs
9 ln -s /dev/binderfs/* /dev/
10 fi
11 if [ ! -e /dev/anbox-hwbinder ] || [ ! -e /dev/ashmem ]; then
12 echo "ERROR: Binder and ashmem nodes not found!"
13 exit
14 fi
15
16 # just in case, stop Anbox 7
17 stop anbox-container || true
18
19 # start cgroup-lite, else container may fail to start.
20 start cgroup-lite
21 umount -l /sys/fs/cgroup/schedtune
22
23 # start sensors hal
24 start anbox-sensors
25
26 # start anbox-net, that sets up lxc bridge
27 /home/anbox/anbox-net.sh start
28
29 # stop nfcd to not conflict with anbox
30 stop nfcd
31
32 # umount rootfs if it was mounted
33 umount -l rootfs || true
34
35 mkdir -p /home/anbox/rootfs
36 mkdir -p /home/anbox/data
37 mount anbox_arm64_system.img rootfs
38 mount -o remount,ro rootfs
39 mount anbox_arm64_vendor.img rootfs/vendor
40 mount -o remount,ro rootfs/vendor
41 mount -o bind anbox.prop rootfs/vendor/anbox.prop
42
43 if mountpoint -q -- /odm; then
44 mount -o bind /odm rootfs/odm_extra
45 else
46 if [ -d /vendor/odm ]; then
47 mount -o bind /vendor/odm rootfs/odm_extra
48 fi
49 fi
50
51 # TODO: Move this to installer script
52 SKU=`getprop ro.boot.product.hardware.sku`
53 mount -o remount,rw rootfs/vendor
54 cp -p /vendor/etc/permissions/android.hardware.nfc.* rootfs/vendor/etc/permissions/
55 cp -p /vendor/etc/permissions/android.hardware.consumerir.xml rootfs/vendor/etc/permissions/
56 cp -p /odm/etc/permissions/android.hardware.nfc.* rootfs/vendor/etc/permissions/
57 cp -p /odm/etc/permissions/android.hardware.consumerir.xml rootfs/vendor/etc/permissions/
58 if [ ! -z $SKU ]; then
59 cp -p /odm/etc/permissions/sku_${SKU}/android.hardware.nfc.* rootfs/vendor/etc/permissions/
60 cp -p /odm/etc/permissions/sku_${SKU}/android.hardware.consumerir.xml rootfs/vendor/etc/permissions/
61 fi
62 if [ -f /vendor/lib/libladder.so ] && [ ! -f rootfs/vendor/lib/libladder.so ]; then
63 cd rootfs/vendor/lib
64 wget https://github.com/GS290-dev/gigaset_gs290_dump/raw/full_k63v2_64_bsp-user-10-QP1A.190711.020-1597810494-release-keys/vendor/lib/libladder.so
65 cd ../../..
66 fi
67 if [ -f /vendor/lib64/libladder.so ] && [ ! -f rootfs/vendor/lib64/libladder.so ]; then
68 cd rootfs/vendor/lib64
69 wget https://github.com/GS290-dev/gigaset_gs290_dump/raw/full_k63v2_64_bsp-user-10-QP1A.190711.020-1597810494-release-keys/vendor/lib64/libladder.so
70 cd ../../..
71 fi
72 mount -o remount,ro rootfs/vendor
73
74 # Anbox binder permissions
75 chmod 666 /dev/anbox-*binder
76 chmod 777 /dev/ashmem
77
78 # Wayland socket permissions
79 chmod 777 -R /run/user/32011
80
81 # Set sw_sync permissions
82 chmod 777 /dev/sw_sync
83 chmod 777 /sys/kernel/debug/sync/sw_sync
84
85 # Media nodes permissions
86 chmod 777 /dev/Vcodec
87 chmod 777 /dev/MTK_SMI
88 chmod 777 /dev/mdp_sync
89 chmod 777 /dev/mtk_cmdq
90 chmod 777 /dev/video32
91 chmod 777 /dev/video33
92
93 # Graphics nodes permissions
94 chmod 777 -R /dev/dri/*
95 chmod 777 -R /dev/graphics/*
96 chmod 777 -R /dev/fb*
97
98 lxc-start -n anbox -F -- /init