From ead0f6940830256ecbccaddff182bb5e1c318324 Mon Sep 17 00:00:00 2001 From: Erfan Abdi Date: Wed, 16 Jun 2021 20:48:37 +0430 Subject: [PATCH] anbox: Add multiarch support to installer --- lxc-configs/config | 2 +- scripts/install.sh | 47 ++++++++++++++++++++++++++++++++-------- scripts/run-container.sh | 4 ++-- scripts/vendor-fixup.sh | 2 +- 4 files changed, 42 insertions(+), 13 deletions(-) diff --git a/lxc-configs/config b/lxc-configs/config index 64703bc..69da84a 100644 --- a/lxc-configs/config +++ b/lxc-configs/config @@ -2,7 +2,7 @@ lxc.rootfs.path = /home/anbox/rootfs lxc.utsname = anbox -lxc.arch = aarch64 +lxc.arch = LXCARCH lxc.autodev = 0 # lxc.autodev.tmpfs.size = 25000000 lxc.aa_profile = unconfined diff --git a/scripts/install.sh b/scripts/install.sh index 952fa43..f7fa981 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -1,5 +1,33 @@ #!/bin/bash +SUPPORTED_ARCHS="x86_64 aarch64 armv8l" +UNAME_ARCH=`uname -m` + +for a in $SUPPORTED_ARCHS; do + if [ $UNAME_ARCH == $a ]; then + ARCH=$a + fi +done +if [ -z ${ARCH} ]; then + echo "ERROR: Your system with arch $UNAME_ARCH is not supported" + exit +fi +if [ $UNAME_ARCH == "aarch64" ]; then + ARCH="arm64" +fi +if [ $UNAME_ARCH == "armv8l" ]; then + ARCH="arm64" +fi +if [ $UNAME_ARCH == "armv7l" ]; then + ARCH="arm" +fi +if [ $UNAME_ARCH == "i386" ]; then + ARCH="x86" +fi +if [ $UNAME_ARCH == "i686" ]; then + ARCH="x86" +fi + echo "Generating device properties" rm -f generate-props.sh wget https://github.com/Anbox-halium/anbox-halium/raw/lineage-17.1/scripts/generate-props.sh @@ -23,18 +51,18 @@ apt update apt install -y lxc1 qtwayland5 qml-module-qtwayland-compositor apt install -y libgbinder sensorfw-qt5 libsensorfw-qt5-plugins || touch NO_SENSORS if [ ! -f NO_SENSORS ]; then - rm anbox-sensors_0.1.0_arm64.deb - wget https://github.com/Anbox-halium/anbox-sensors/releases/download/v0.1.0/anbox-sensors_0.1.0_arm64.deb - dpkg -i anbox-sensors_0.1.0_arm64.deb || touch NO_SENSORS + rm anbox-sensors_0.1.0_${ARCH}.deb + wget https://github.com/Anbox-halium/anbox-sensors/releases/download/v0.1.0/anbox-sensors_0.1.0_${ARCH}.deb + dpkg -i anbox-sensors_0.1.0_${ARCH}.deb || touch NO_SENSORS fi echo "Geting anbox images" -if [ -f anbox_arm64_system.img ]; then - mv anbox_arm64_system.img anbox_arm64_system.img.bak - mv anbox_arm64_vendor.img anbox_arm64_vendor.img.bak +if [ -f anbox_${ARCH}_system.img ]; then + mv anbox_${ARCH}_system.img anbox_${ARCH}_system.img.bak + mv anbox_${ARCH}_vendor.img anbox_${ARCH}_vendor.img.bak fi rm -f latest-raw-images.zip -wget https://build.lolinet.com/file/lineage/anbox_arm64/latest-raw-images.zip +wget https://build.lolinet.com/file/lineage/anbox_${ARCH}/latest-raw-images.zip unzip latest-raw-images.zip mkdir -p /home/anbox/rootfs mkdir -p /home/anbox/data @@ -85,13 +113,14 @@ fi rm -f vendor-fixup.sh wget https://github.com/Anbox-halium/anbox-halium/raw/lineage-17.1/scripts/vendor-fixup.sh chmod +x vendor-fixup.sh -./vendor-fixup.sh +./vendor-fixup.sh $ARCH echo "Geting latest lxc config" mkdir /var/lib/lxc/anbox cd /var/lib/lxc/anbox rm -f config wget https://github.com/Anbox-halium/anbox-halium/raw/lineage-17.1/lxc-configs/config +sed -i "s/LXCARCH/$UNAME_ARCH/" config if ! grep -q "module-native-protocol-unix auth-anonymous=1" /etc/pulse/touch-android9.pa; then echo "Pulseaudio config patching" @@ -113,7 +142,7 @@ cd /home/phablet echo "Installing anbox launcher" rm anbox.rudiimmer_1.0_all.click -wget https://build.lolinet.com/file/lineage/anbox_arm64/anbox.rudiimmer_1.0_all.click +wget https://build.lolinet.com/file/lineage/anbox_${ARCH}/anbox.rudiimmer_1.0_all.click pkcon install-local anbox.rudiimmer_1.0_all.click --allow-untrusted echo "Restarting Pulseaudio service" diff --git a/scripts/run-container.sh b/scripts/run-container.sh index 43345ee..05f1a08 100644 --- a/scripts/run-container.sh +++ b/scripts/run-container.sh @@ -32,9 +32,9 @@ stop nfcd # umount rootfs if it was mounted umount -l rootfs || true -mount anbox_arm64_system.img rootfs +mount anbox_*_system.img rootfs mount -o remount,ro rootfs -mount anbox_arm64_vendor.img rootfs/vendor +mount anbox_*_vendor.img rootfs/vendor mount -o remount,ro rootfs/vendor mount -o bind anbox.prop rootfs/vendor/anbox.prop diff --git a/scripts/vendor-fixup.sh b/scripts/vendor-fixup.sh index 042f183..c15661e 100644 --- a/scripts/vendor-fixup.sh +++ b/scripts/vendor-fixup.sh @@ -1,7 +1,7 @@ #!/bin/bash mkdir /home/anbox/tmp_vendor -mount /home/anbox/anbox_arm64_vendor.img /home/anbox/tmp_vendor +mount /home/anbox/anbox_${1}_vendor.img /home/anbox/tmp_vendor SKU=`getprop ro.boot.product.hardware.sku` cp -p /vendor/etc/permissions/android.hardware.nfc.* /home/anbox/tmp_vendor/etc/permissions/ -- 2.47.3