diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml index b1b1f19..9b33df3 100644 --- a/.github/workflows/docker_build.yml +++ b/.github/workflows/docker_build.yml @@ -13,39 +13,79 @@ env: CI: true DOCKER_BUILDKIT: 1 +# The GitHub ARM runner is capable of running +# /data/data/com.termux/files/usr/bin/apt-get upgrade +# natively during the update process for both aarch64 +# and arm, demonstrating that it is compatible with +# 32-bit binaries and capable of completely +# replacing QEMU, but using it in the same workflow +# as the x86 runner appears to require two separate jobs. jobs: - main: - runs-on: ubuntu-latest + ARM: + runs-on: ubuntu-24.04-arm strategy: matrix: - CPU_ARCH: + ARCHITECTURE: - aarch64 - arm - - i686 - - x86_64 steps: - name: Clone repository uses: actions/checkout@v4 - - name: Setup binfmt_misc - if: (matrix.CPU_ARCH == 'aarch64') || (matrix.CPU_ARCH == 'arm') - run: docker run --rm --privileged aptman/qus -s -- -p aarch64 arm + - name: Set architecture variable + run: echo "ARCHITECTURE=${{ matrix.ARCHITECTURE }}" >> $GITHUB_ENV + + - name: Build image + run: ./generate.sh + + - name: Login to Docker Hub + if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'termux/termux-docker' + uses: docker/login-action@v3 + with: + username: grimler + password: ${{ secrets.GRIMLER_DOCKER_TOKEN }} + + - name: Push to Docker Hub + if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'termux/termux-docker' + run: docker push termux/termux-docker:${{ env.ARCHITECTURE }} - - name: Build images + - name: Export container as tar archive + if: always() run: | - case '${{ matrix.CPU_ARCH }}' in - arm) SYSTEM_TYPE=arm; PLATFORM_TAG="linux/arm/v7";; - aarch64) SYSTEM_TYPE=arm; PLATFORM_TAG="linux/arm64";; - i686) SYSTEM_TYPE=x86; PLATFORM_TAG="linux/386";; - *) SYSTEM_TYPE=x86; PLATFORM_TAG="linux/amd64";; - esac - docker buildx build -t \ - termux/termux-docker:${{ matrix.CPU_ARCH }} \ - --platform "$PLATFORM_TAG" \ - --build-arg BOOTSTRAP_ARCH=${{ matrix.CPU_ARCH }} \ - --build-arg SYSTEM_TYPE="${SYSTEM_TYPE}" \ - . + docker run \ + --name termux-docker-${{ env.ARCHITECTURE }} \ + termux/termux-docker:${{ env.ARCHITECTURE }} \ + uname -a + docker stop termux-docker-${{ env.ARCHITECTURE }} + docker export -o termux-docker-${{ env.ARCHITECTURE }}.tar \ + termux-docker-${{ env.ARCHITECTURE }} + sha256sum termux-docker-${{ env.ARCHITECTURE }}.tar + + - name: Store tar archive + if: always() + uses: actions/upload-artifact@v4 + with: + name: termux-docker-${{ env.ARCHITECTURE }}-${{ github.sha }} + path: termux-docker-${{ env.ARCHITECTURE }}.tar + + x86: + runs-on: ubuntu-latest + strategy: + matrix: + ARCHITECTURE: + - x86_64 + - i686 + steps: + + - name: Clone repository + uses: actions/checkout@v4 + + - name: Set architecture variable + run: echo "ARCHITECTURE=${{ matrix.ARCHITECTURE }}" >> $GITHUB_ENV + + - name: Build image + run: ./generate.sh - name: Login to Docker Hub if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'termux/termux-docker' @@ -57,9 +97,9 @@ jobs: - name: Push to Docker Hub if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'termux/termux-docker' run: | - docker push termux/termux-docker:${{ matrix.CPU_ARCH }} - if [ ${{ matrix.CPU_ARCH }} = i686 ]; then - docker tag termux/termux-docker:i686 termux/termux-docker:latest + docker push termux/termux-docker:${{ env.ARCHITECTURE }} + if [ ${{ env.ARCHITECTURE }} = i686 ]; then + docker tag termux/termux-docker:${{ env.ARCHITECTURE }} termux/termux-docker:latest docker push termux/termux-docker:latest fi @@ -67,18 +107,17 @@ jobs: if: always() run: | docker run \ - --privileged \ - --name termux-docker-${{ matrix.CPU_ARCH }} \ - termux/termux-docker:${{ matrix.CPU_ARCH }} \ + --name termux-docker-${{ env.ARCHITECTURE }} \ + termux/termux-docker:${{ env.ARCHITECTURE }} \ uname -a - docker stop termux-docker-${{ matrix.CPU_ARCH }} - docker export -o termux-docker-${{ matrix.CPU_ARCH }}.tar \ - termux-docker-${{ matrix.CPU_ARCH }} - sha256sum termux-docker-${{ matrix.CPU_ARCH }}.tar + docker stop termux-docker-${{ env.ARCHITECTURE }} + docker export -o termux-docker-${{ env.ARCHITECTURE }}.tar \ + termux-docker-${{ env.ARCHITECTURE }} + sha256sum termux-docker-${{ env.ARCHITECTURE }}.tar - name: Store tar archive if: always() uses: actions/upload-artifact@v4 with: - name: termux-docker-${{ matrix.CPU_ARCH }}-${{ github.sha }} - path: termux-docker-${{ matrix.CPU_ARCH }}.tar + name: termux-docker-${{ env.ARCHITECTURE }}-${{ github.sha }} + path: termux-docker-${{ env.ARCHITECTURE }}.tar diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d5a2fa9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +termux-docker-rootfs diff --git a/Dockerfile b/Dockerfile index 54e92f3..43cf9c6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,91 +1,50 @@ -############################################################################## -# Bootstrap Termux environment. -FROM scratch AS bootstrap - -ARG BOOTSTRAP_VERSION=2023.02.19-r1%2Bapt-android-7 -ARG BOOTSTRAP_ARCH=i686 -ARG SYSTEM_TYPE=x86 - -# Docker uses /bin/sh by default, but we don't have it currently. -SHELL ["/system/bin/sh", "-c"] -ENV PATH /system/bin - -# Copy libc, linker and few utilities. -COPY /system/$SYSTEM_TYPE /system - -# Copy entrypoint script. -COPY /entrypoint.sh /entrypoint.sh -COPY /entrypoint_root.sh /entrypoint_root.sh - -# Extract bootstrap archive and create symlinks. -ADD https://github.com/termux/termux-packages/releases/download/bootstrap-$BOOTSTRAP_VERSION/bootstrap-$BOOTSTRAP_ARCH.zip /bootstrap.zip -RUN busybox mkdir -p /data/data/com.termux/files && \ - cd /data/data/com.termux/files && \ - busybox mkdir ../cache ./usr ./home && \ - busybox unzip -d usr /bootstrap.zip && \ - busybox rm /bootstrap.zip && \ - cd ./usr && \ - busybox cat SYMLINKS.txt | while read -r line; do \ - dest=$(echo "$line" | busybox awk -F '←' '{ print $1 }'); \ - link=$(echo "$line" | busybox awk -F '←' '{ print $2 }'); \ - busybox ln -s "$dest" "$link"; \ - done && \ - busybox rm SYMLINKS.txt && \ - busybox ln -s /data/data/com.termux/files/usr /usr && \ - busybox ln -s /data/data/com.termux/files/usr/bin /bin && \ - busybox ln -s /data/data/com.termux/files/usr/tmp /tmp - -# Link some utilities to busybox. -# Some utilities in $PREFIX are actually a wrapper of the same binary -# from /system/bin. See termux-tools/build.sh#L29. -RUN for tool in df mount ping ping6 su top umount; do \ - busybox ln -s /system/bin/busybox /system/bin/$tool; \ - done - -# Set ownership and file access modes: -# * User content is owned by 1000:1000. -# * Termux file modes are set only for user. -# * Rest is owned by root and has 755/644 modes. -RUN busybox chown -Rh 0:0 /system && \ - busybox chown -Rh 1000:1000 /data/data/com.termux && \ - busybox ln -s /system/etc/passwd /etc/passwd && \ - busybox ln -s /system/etc/group /etc/group && \ - busybox find /system -type d -exec busybox chmod 755 "{}" \; && \ - busybox find /system -type f -executable -exec busybox chmod 755 "{}" \; && \ - busybox find /system -type f ! -executable -exec busybox chmod 644 "{}" \; && \ - busybox find /data -type d -exec busybox chmod 755 "{}" \; && \ - busybox find /data/data/com.termux/files -type f -o -type d -exec busybox chmod g-rwx,o-rwx "{}" \; && \ - cd /data/data/com.termux/files/usr && \ - busybox find ./bin ./lib/apt ./libexec -type f -exec busybox chmod 700 "{}" \; - -# Install updates and cleanup when not building for arm. -ENV PATH /data/data/com.termux/files/usr/bin -RUN if [ ${SYSTEM_TYPE} = 'arm' ]; then exit; else \ - /system/bin/mksh -T /dev/ptmx -c "/system/bin/dnsmasq -u root -g root --pid-file /dnsmasq.pid" && sleep 1 && \ - su - system -c "/data/data/com.termux/files/usr/bin/apt update" && \ - su - system -c "/data/data/com.termux/files/usr/bin/apt upgrade -o Dpkg::Options::=--force-confnew -yq" && \ - rm -rf /data/data/com.termux/files/usr/var/lib/apt/* && \ - rm -rf /data/data/com.termux/files/usr/var/log/apt/* && \ - rm -rf /data/data/com.termux/cache/apt/* ;\ - fi - -############################################################################## -# Create final image. FROM scratch -ENV ANDROID_DATA /data -ENV ANDROID_ROOT /system -ENV HOME /data/data/com.termux/files/home -ENV LANG en_US.UTF-8 -ENV PATH /data/data/com.termux/files/usr/bin -ENV PREFIX /data/data/com.termux/files/usr -ENV TMPDIR /data/data/com.termux/files/usr/tmp -ENV TZ UTC - -COPY --from=bootstrap / / - -WORKDIR /data/data/com.termux/files/home -SHELL ["/data/data/com.termux/files/usr/bin/sh", "-c"] - +ARG ROOTFS +ARG TERMUX_APP_PACKAGE +ARG TERMUX_BASE_DIR +ARG TERMUX_PREFIX + +# Install generated rootfs containing bionic libc, +# toybox, mksh, iputils, dnsmasq, and termux bootstrap +COPY --chown=1000:1000 ${ROOTFS} / + +# Docker uses /bin/sh by default, but we don't have it. +# This ENV PATH line selects /system/bin/sh. +# The final ENV PATH line later below then selects +# $TERMUX_PREFIX/bin/sh -> bash without having +# to add an additional SHELL line. +ENV PATH=/system/bin +SHELL ["sh", "-c"] + +# Install updates and cleanup +# Start dnsmasq to resolve hostnames, and, +# for some reason the -c argument of toybox-su is not working, +# so this odd-looking script forces the update process +# to work using the -s argument of toybox-su instead, which is working. +RUN sh -T /dev/ptmx -c "$TERMUX_PREFIX/bin/dnsmasq -u root -g root --pid-file=/dnsmasq.pid" && \ + sleep 1 && \ + echo '#!/system/bin/sh' > /update.sh && \ + echo "PATH=$TERMUX_PREFIX/bin" >> /update.sh && \ + echo 'pkg update' >> /update.sh && \ + echo 'apt-get upgrade -o Dpkg::Options::=--force-confnew -y' >> /update.sh && \ + chmod +x /update.sh && \ + su system -s /update.sh && \ + rm -f /update.sh && \ + rm -rf ${TERMUX_PREFIX}/var/lib/apt/* && \ + rm -rf ${TERMUX_PREFIX}/var/log/apt/* && \ + rm -rf /data/data/${TERMUX_APP_PACKAGE}/cache/apt/* + +ENV ANDROID_DATA=/data +ENV ANDROID_ROOT=/system +ENV HOME=${TERMUX_BASE_DIR}/home +ENV LANG=en_US.UTF-8 +ENV PATH=${TERMUX_PREFIX}/bin +ENV PREFIX=${TERMUX_PREFIX} +ENV TMPDIR=${TERMUX_PREFIX}/tmp +ENV TZ=UTC +ENV TERM=xterm + +WORKDIR ${TERMUX_BASE_DIR}/home ENTRYPOINT ["/entrypoint.sh"] -CMD ["/data/data/com.termux/files/usr/bin/login"] +CMD ["login"] diff --git a/README.md b/README.md index 0f0b99f..2dc7ec3 100644 --- a/README.md +++ b/README.md @@ -49,9 +49,12 @@ command: docker run --rm --privileged aptman/qus -s -- -p aarch64 arm ``` -Note that AArch64 and ARM containers work properly only in privileged +Note that AArch64 and ARM containers sometimes work properly only in privileged mode. If you want your containers to have standard privileges, a custom -seccomp profile is required. +seccomp profile or a custom build of Docker might be required. The custom build +of Docker limits the customizations to purely what is necessary for +the `personality()` system call, leaving the security settings of all other system +calls untouched. Variant with privileged container: @@ -65,6 +68,23 @@ Variant with seccomp unconfined profile: docker run -it --security-opt seccomp:unconfined termux/termux-docker:aarch64 ``` +Variant with custom build of Docker: + +> [!NOTE] +> Example with Debian bookworm `armhf` host and the `docker.io` package. Assumes that [`deb-src` URIs](https://wiki.debian.org/Packaging/SourcePackage?action=show&redirect=SourcePackage#With_apt-get_source) and the [`devscripts` package](https://wiki.debian.org/Packaging#Suggested_tools_to_create_an_environment_for_packaging) are already installed, and that the current user is a member of the `docker` group. + +```.sh +sudo apt build-dep docker.io +apt source docker.io +cp /path/to/termux-docker/custom-docker-with-unrestricted-personality.patch docker.io-*/debian/patches/ +echo 'custom-docker-with-unrestricted-personality.patch' >> docker.io-*/debian/patches/series +cd docker.io-*/ +DEB_BUILD_OPTIONS=nocheck debuild -b -uc -us +rm ../golang* +sudo apt install ../*.deb +docker run -it termux/termux-docker:arm +``` + ### Non-interactive execution of commands You can run commands in non-interactive mode. Just append them to Docker @@ -99,20 +119,20 @@ docker run -it --entrypoint /entrypoint_root.sh termux/termux-docker:latest Docker: ```.sh -./build-all.sh +./generate.sh ``` Podman: ```.sh -./build-all.sh --podman +./generate.sh --podman ``` ## Known issues There a number of known issues which may not be resolved: -* ARM containers may require a custom seccomp profile to remove restrictions from +* ARM containers might require a custom seccomp profile or custom build of Docker to remove restrictions from the `personality()` system call. * When running certain multi threaded program in 32bit containers, the PIDs can diff --git a/build-all.sh b/build-all.sh deleted file mode 100755 index 085f4ab..0000000 --- a/build-all.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env bash - -set -e - -OCI="docker" -OCI_ARG="" -case $1 in - -p|--podman) OCI="podman" ; OCI_ARG="--format docker" ;; -esac - -if [ -n "${TERMUX_DOCKER_USE_SUDO-}" ]; then - SUDO="sudo" -else - SUDO="" -fi - -case "$(uname -m)" in - aarch64) SYSTEM_TYPE="arm"; ARCHITECTURES=("aarch64" "arm");; - armv7l|armv8l) SYSTEM_TYPE="arm"; ARCHITECTURES=("arm");; - i686) SYSTEM_TYPE="x86"; ARCHITECTURES=("i686");; - x86_64) SYSTEM_TYPE="x86"; ARCHITECTURES=("i686" "x86_64");; - *) - echo "'uname -m' returned unknown architecture" - exit 1 - ;; -esac - -for arch in "${ARCHITECTURES[@]}"; do - $SUDO $OCI build \ - ${OCI_ARG} \ - -t 'termux/termux-docker:'"$arch" \ - -f Dockerfile \ - --build-arg BOOTSTRAP_ARCH="$arch" \ - --build-arg SYSTEM_TYPE="$SYSTEM_TYPE" \ - . - if [ "${1-}" = "publish" ]; then - $SUDO $OCI push 'termux/termux-docker:'"$arch" - fi -done - -if [ "$SYSTEM_TYPE" = "x86" ]; then - $SUDO $OCI tag termux/termux-docker:i686 termux/termux-docker:latest - if [ "${1-}" = "publish" ]; then - $SUDO $OCI push 'termux/termux-docker:latest' - fi -fi diff --git a/custom-docker-with-unrestricted-personality.patch b/custom-docker-with-unrestricted-personality.patch new file mode 100644 index 0000000..790fd91 --- /dev/null +++ b/custom-docker-with-unrestricted-personality.patch @@ -0,0 +1,320 @@ +This removes all restrictions from the personality() system call from within Docker, and +is only necessary on some specific devices, including some ARM devices but not all ARM devices, +and only when the --privileged and --security-opt arguments are either not working or not desired, +which sometimes happens. This patch is designed for the docker.io package version 20.10.24 in +Debian bookworm: https://packages.debian.org/bookworm/docker.io, but also works when rebased on other +versions of Docker. + +--- a/engine/oci/fixtures/default-old-format.json ++++ b/engine/oci/fixtures/default-old-format.json +@@ -824,38 +824,7 @@ + { + "name": "personality", + "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 0, +- "valueTwo": 0, +- "op": "SCMP_CMP_EQ" +- } +- ] +- }, +- { +- "name": "personality", +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 8, +- "valueTwo": 0, +- "op": "SCMP_CMP_EQ" +- } +- ] +- }, +- { +- "name": "personality", +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 4294967295, +- "valueTwo": 0, +- "op": "SCMP_CMP_EQ" +- } +- ] ++ "args": [] + }, + { + "name": "pipe", +--- a/engine/oci/fixtures/default.json ++++ b/engine/oci/fixtures/default.json +@@ -403,82 +403,7 @@ + "personality" + ], + "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 0, +- "valueTwo": 0, +- "op": "SCMP_CMP_EQ" +- } +- ], +- "comment": "", +- "includes": {}, +- "excludes": {} +- }, +- { +- "names": [ +- "personality" +- ], +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 8, +- "valueTwo": 0, +- "op": "SCMP_CMP_EQ" +- } +- ], +- "comment": "", +- "includes": {}, +- "excludes": {} +- }, +- { +- "names": [ +- "personality" +- ], +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 131072, +- "valueTwo": 0, +- "op": "SCMP_CMP_EQ" +- } +- ], +- "comment": "", +- "includes": {}, +- "excludes": {} +- }, +- { +- "names": [ +- "personality" +- ], +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 131080, +- "valueTwo": 0, +- "op": "SCMP_CMP_EQ" +- } +- ], +- "comment": "", +- "includes": {}, +- "excludes": {} +- }, +- { +- "names": [ +- "personality" +- ], +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 4294967295, +- "valueTwo": 0, +- "op": "SCMP_CMP_EQ" +- } +- ], ++ "args": [], + "comment": "", + "includes": {}, + "excludes": {} +--- a/engine/profiles/seccomp/default.json ++++ b/engine/profiles/seccomp/default.json +@@ -422,77 +422,7 @@ + "personality" + ], + "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 0, +- "op": "SCMP_CMP_EQ" +- } +- ], +- "comment": "", +- "includes": {}, +- "excludes": {} +- }, +- { +- "names": [ +- "personality" +- ], +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 8, +- "op": "SCMP_CMP_EQ" +- } +- ], +- "comment": "", +- "includes": {}, +- "excludes": {} +- }, +- { +- "names": [ +- "personality" +- ], +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 131072, +- "op": "SCMP_CMP_EQ" +- } +- ], +- "comment": "", +- "includes": {}, +- "excludes": {} +- }, +- { +- "names": [ +- "personality" +- ], +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 131080, +- "op": "SCMP_CMP_EQ" +- } +- ], +- "comment": "", +- "includes": {}, +- "excludes": {} +- }, +- { +- "names": [ +- "personality" +- ], +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 4294967295, +- "op": "SCMP_CMP_EQ" +- } +- ], ++ "args": [], + "comment": "", + "includes": {}, + "excludes": {} +--- a/engine/profiles/seccomp/default_linux.go ++++ b/engine/profiles/seccomp/default_linux.go +@@ -424,57 +424,7 @@ func DefaultProfile() *Seccomp { + { + Names: []string{"personality"}, + Action: specs.ActAllow, +- Args: []*specs.LinuxSeccompArg{ +- { +- Index: 0, +- Value: 0x0, +- Op: specs.OpEqualTo, +- }, +- }, +- }, +- { +- Names: []string{"personality"}, +- Action: specs.ActAllow, +- Args: []*specs.LinuxSeccompArg{ +- { +- Index: 0, +- Value: 0x0008, +- Op: specs.OpEqualTo, +- }, +- }, +- }, +- { +- Names: []string{"personality"}, +- Action: specs.ActAllow, +- Args: []*specs.LinuxSeccompArg{ +- { +- Index: 0, +- Value: 0x20000, +- Op: specs.OpEqualTo, +- }, +- }, +- }, +- { +- Names: []string{"personality"}, +- Action: specs.ActAllow, +- Args: []*specs.LinuxSeccompArg{ +- { +- Index: 0, +- Value: 0x20008, +- Op: specs.OpEqualTo, +- }, +- }, +- }, +- { +- Names: []string{"personality"}, +- Action: specs.ActAllow, +- Args: []*specs.LinuxSeccompArg{ +- { +- Index: 0, +- Value: 0xffffffff, +- Op: specs.OpEqualTo, +- }, +- }, ++ Args: []*specs.LinuxSeccompArg{}, + }, + { + Names: []string{ +--- a/engine/profiles/seccomp/fixtures/default-old-format.json ++++ b/engine/profiles/seccomp/fixtures/default-old-format.json +@@ -824,38 +824,7 @@ + { + "name": "personality", + "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 0, +- "valueTwo": 0, +- "op": "SCMP_CMP_EQ" +- } +- ] +- }, +- { +- "name": "personality", +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 8, +- "valueTwo": 0, +- "op": "SCMP_CMP_EQ" +- } +- ] +- }, +- { +- "name": "personality", +- "action": "SCMP_ACT_ALLOW", +- "args": [ +- { +- "index": 0, +- "value": 4294967295, +- "valueTwo": 0, +- "op": "SCMP_CMP_EQ" +- } +- ] ++ "args": [] + }, + { + "name": "pipe", + diff --git a/entrypoint.sh b/entrypoint.sh index 1dde2a5..b0f7521 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,27 +1,23 @@ #!/system/bin/sh +if [ $# -lt 1 ]; then + set -- login +fi + if [ "$(id -u)" = "0" ]; then - if [ -z "$(/system/bin/busybox pidof dnsmasq)" ]; then - /system/bin/mksh -T /dev/ptmx -c "/system/bin/dnsmasq -u root -g root --pid-file /dnsmasq.pid" >/dev/null 2>&1 + if [ -z "$(pidof dnsmasq)" ]; then + /system/bin/sh -T /dev/ptmx -c "dnsmasq -u root -g root --pid-file=/dnsmasq.pid" >/dev/null 2>&1 sleep 1 - if [ -z "$(/system/bin/busybox pidof dnsmasq)" ]; then + if [ -z "$(pidof dnsmasq)" ]; then echo "[!] Failed to start dnsmasq, host name resolution may fail." >&2 fi fi else echo "[!] Container is running as non-root, unable to start dnsmasq. DNS will be unavailable." >&2 - if [ $# -ge 1 ]; then - exec "$@" - else - exec /data/data/com.termux/files/usr/bin/login - fi -fi - -if [ $# -lt 1 ]; then - set -- /data/data/com.termux/files/usr/bin/login + exec "$@" fi -exec /system/bin/su -s /data/data/com.termux/files/usr/bin/env system -- \ +exec /system/bin/su -s ${PREFIX}/bin/env system -- \ -i \ ANDROID_DATA="$ANDROID_DATA" \ ANDROID_ROOT="$ANDROID_ROOT" \ @@ -30,5 +26,6 @@ exec /system/bin/su -s /data/data/com.termux/files/usr/bin/env system -- \ PATH="$PATH" \ PREFIX="$PREFIX" \ TMPDIR="$TMPDIR" \ - TZ=UTC \ + TZ="$TZ" \ + TERM="$TERM" \ "$@" diff --git a/entrypoint_root.sh b/entrypoint_root.sh index 1b20f5b..97d0ee8 100755 --- a/entrypoint_root.sh +++ b/entrypoint_root.sh @@ -1,20 +1,20 @@ #!/system/bin/sh +if [ $# -lt 1 ]; then + set -- login +fi + if [ "$(id -u)" != "0" ]; then echo "Failure: /entrypoint_root.sh must be started as root." >&2 exit 1 fi -if [ -z "$(/system/bin/busybox pidof dnsmasq)" ]; then - /system/bin/mksh -T /dev/ptmx -c "/system/bin/dnsmasq -u root -g root --pid-file /dnsmasq.pid" >/dev/null 2>&1 +if [ -z "$(pidof dnsmasq)" ]; then + /system/bin/sh -T /dev/ptmx -c "dnsmasq -u root -g root --pid-file=/dnsmasq.pid" >/dev/null 2>&1 sleep 1 - if [ -z "$(/system/bin/busybox pidof dnsmasq)" ]; then + if [ -z "$(pidof dnsmasq)" ]; then echo "[!] Failed to start dnsmasq, host name resolution may fail." >&2 fi fi -if [ $# -ge 1 ]; then - exec "$@" -else - exec /data/data/com.termux/files/usr/bin/login -fi +exec "$@" diff --git a/generate.sh b/generate.sh new file mode 100755 index 0000000..9713352 --- /dev/null +++ b/generate.sh @@ -0,0 +1,321 @@ +#!/usr/bin/env bash + +set -e + +cd "$(dirname "$(realpath "$0")")" + +OCI="docker" +OCI_ARG="" +case $1 in + -p|--podman) OCI="podman" ; OCI_ARG="--format docker" ;; +esac + +if [ -n "${TERMUX_DOCKER_USE_SUDO-}" ]; then + SUDO="sudo" +else + SUDO="" +fi + +if [ -z "${ARCHITECTURE}" ]; then + case "$(uname -m)" in + aarch64) ARCHITECTURE="aarch64" ;; + armv7l|armv8l) ARCHITECTURE="arm" ;; + x86_64) ARCHITECTURE="x86_64" ;; + i686) ARCHITECTURE="i686" ;; + *) + echo "'uname -m' returned unknown architecture" + exit 1 + ;; + esac +fi + +BOOTSTRAP_VERSION=2023.02.19-r1%2Bapt-android-7 +BOOTSTRAP_SRCURL=https://github.com/termux/termux-packages/releases/download/bootstrap-${BOOTSTRAP_VERSION}/bootstrap-${ARCHITECTURE}.zip +declare -A REPO_BASE_URLS=( + ["main"]="https://packages-cf.termux.dev/apt/termux-main/dists/stable/main" + ["root"]="https://packages-cf.termux.dev/apt/termux-root/dists/root/stable" +) +TERMUX_APP_PACKAGE="com.termux" +TERMUX_BASE_DIR="/data/data/${TERMUX_APP_PACKAGE}/files" +TERMUX_PREFIX="${TERMUX_BASE_DIR}/usr" +ROOTFS="$(pwd)/termux-docker-rootfs" +TMPDIR="$(mktemp -d "/tmp/termux-docker-tmp.XXXXXXXX")" +PKGDIR="${TMPDIR}/packages-${ARCHITECTURE}" +unset PACKAGE_METADATA +unset PACKAGE_URLS +declare -A PACKAGE_METADATA +declare -A PACKAGE_URLS + +# Check for some important utilities that may not be available for +# some reason. +for cmd in ar awk curl grep gzip find sed tar xargs xz zip; do + if [ -z "$(command -v $cmd)" ]; then + echo "[!] Utility '$cmd' is not available in PATH." + exit 1 + fi +done + +# read_package_list_deb and pull_package are based on their implementations +# in https://github.com/termux/termux-packages/blob/master/scripts/generate-bootstraps.sh + +# Download package lists from remote repository. +# Actually, there 2 lists can be downloaded: one architecture-independent and +# one for architecture specified as '$1' argument. That depends on repository. +# If repository has been created using "aptly", then architecture-independent +# list is not available. +read_package_list_deb() { + local architecture + for architecture in all "$1"; do + for repository in "${!REPO_BASE_URLS[@]}"; do + REPO_BASE_URL="${REPO_BASE_URLS[${repository}]}" + if [ ! -e "${TMPDIR}/${repository}-packages.${architecture}" ]; then + echo "[*] Downloading ${repository} package list for architecture '${architecture}'..." + if ! curl --fail --location \ + --output "${TMPDIR}/${repository}-packages.${architecture}" \ + "${REPO_BASE_URL}/binary-${architecture}/Packages"; then + if [ "$architecture" = "all" ]; then + echo "[!] Skipping architecture-independent package list as not available..." + continue + fi + fi + echo >> "${TMPDIR}/${repository}-packages.${architecture}" + fi + + echo "[*] Reading ${repository} package list for '${architecture}'..." + while read -r -d $'\xFF' package; do + if [ -n "$package" ]; then + local package_name + package_name=$(echo "$package" | grep -i "^Package:" | awk '{ print $2 }') + package_url="$(dirname "$(dirname "$(dirname "${REPO_BASE_URL}")")")"/"$(echo "${package}" | \ + grep -i "^Filename:" | awk '{ print $2 }')" + + if [ -z "${PACKAGE_METADATA["$package_name"]}" ]; then + PACKAGE_METADATA["$package_name"]="$package" + PACKAGE_URLS["$package_name"]="$package_url" + else + local prev_package_ver cur_package_ver + cur_package_ver=$(echo "$package" | grep -i "^Version:" | awk '{ print $2 }') + prev_package_ver=$(echo "${PACKAGE_METADATA["$package_name"]}" | grep -i "^Version:" | awk '{ print $2 }') + + # If package has multiple versions, make sure that our metadata + # contains the latest one. + if [ "$(echo -e "${prev_package_ver}\n${cur_package_ver}" | sort -rV | head -n1)" = "${cur_package_ver}" ]; then + PACKAGE_METADATA["$package_name"]="$package" + PACKAGE_URLS["$package_name"]="$package_url" + fi + fi + fi + done < <(sed -e "s/^$/\xFF/g" "${TMPDIR}/${repository}-packages.${architecture}") + done + done +} + +# Download specified package, its dependencies and then extract *.deb files to +# the root. +pull_package() { + local package_name=$1 + local package_url="${PACKAGE_URLS[${package_name}]}" + local package_tmpdir="${PKGDIR}/${package_name}" + mkdir -p "$package_tmpdir" + + local package_dependencies + package_dependencies=$( + while read -r token; do + echo "$token" | cut -d'|' -f1 | sed -E 's@\(.*\)@@' + done < <(echo "${PACKAGE_METADATA[${package_name}]}" | grep -i "^Depends:" | sed -E 's@^[Dd]epends:@@' | tr ',' '\n') + ) + + # Recursively handle dependencies. + if [ -n "$package_dependencies" ]; then + local dep + for dep in $package_dependencies; do + if [ ! -e "${PKGDIR}/${dep}" ]; then + pull_package "$dep" + fi + done + unset dep + fi + + if [ ! -e "$package_tmpdir/package.deb" ]; then + echo "[*] Downloading '$package_name'..." + curl --fail --location --output "$package_tmpdir/package.deb" "$package_url" + + echo "[*] Extracting '$package_name'..." + (cd "$package_tmpdir" + ar x package.deb + + # data.tar may have extension different from .xz + if [ -f "./data.tar.xz" ]; then + data_archive="data.tar.xz" + elif [ -f "./data.tar.gz" ]; then + data_archive="data.tar.gz" + else + echo "No data.tar.* found in '$package_name'." + exit 1 + fi + + # Do same for control.tar. + if [ -f "./control.tar.xz" ]; then + control_archive="control.tar.xz" + elif [ -f "./control.tar.gz" ]; then + control_archive="control.tar.gz" + else + echo "No control.tar.* found in '$package_name'." + exit 1 + fi + + # Extract files. + tar xf "$data_archive" -C "$ROOTFS" + + # Register extracted files. + tar tf "$data_archive" | sed -E -e 's@^\./@/@' -e 's@^/$@/.@' -e 's@^([^./])@/\1@' > "${ROOTFS}${TERMUX_PREFIX}/var/lib/dpkg/info/${package_name}.list" + + # Generate checksums (md5). + tar xf "$data_archive" + find data -type f -print0 | xargs -0 -r md5sum | sed 's@^\.$@@g' > "${ROOTFS}${TERMUX_PREFIX}/var/lib/dpkg/info/${package_name}.md5sums" + + # Extract metadata. + tar xf "$control_archive" + { + cat control + echo "Status: install ok installed" + echo + } >> "${ROOTFS}${TERMUX_PREFIX}/var/lib/dpkg/status" + + # Additional data: conffiles & scripts + for file in conffiles postinst postrm preinst prerm; do + if [ -f "${PWD}/${file}" ]; then + cp "$file" "${ROOTFS}${TERMUX_PREFIX}/var/lib/dpkg/info/${package_name}.${file}" + fi + done + ) + fi +} + +# temporary +extract_deb() { + local package_name=$1 + local package_tmpdir="${PKGDIR}/${package_name}" + mkdir -p "$package_tmpdir" + cp "$package_name" "$package_tmpdir/package.deb" + echo "[*] Extracting '$package_name'..." + (cd "$package_tmpdir" + ar x package.deb + + # data.tar may have extension different from .xz + if [ -f "./data.tar.xz" ]; then + data_archive="data.tar.xz" + elif [ -f "./data.tar.gz" ]; then + data_archive="data.tar.gz" + else + echo "No data.tar.* found in '$package_name'." + exit 1 + fi + + # Do same for control.tar. + if [ -f "./control.tar.xz" ]; then + control_archive="control.tar.xz" + elif [ -f "./control.tar.gz" ]; then + control_archive="control.tar.gz" + else + echo "No control.tar.* found in '$package_name'." + exit 1 + fi + + # Extract files. + tar xf "$data_archive" -C "$ROOTFS" + ) +} + +echo "[*] Regenerating rootfs..." +rm -rf "${ROOTFS}" +mkdir -p "${ROOTFS}" + +echo "[*] Downloading bootstrap..." +curl --fail --location --output "${TMPDIR}/bootstrap.zip" "${BOOTSTRAP_SRCURL}" +mkdir -p "${ROOTFS}${TERMUX_PREFIX}" +mkdir -p "${ROOTFS}${TERMUX_BASE_DIR}/home" +mkdir -p "${ROOTFS}/data/data/${TERMUX_APP_PACKAGE}/cache" + +echo "[*] Extracting bootstrap..." +unzip -q -d "${ROOTFS}${TERMUX_PREFIX}" "${TMPDIR}/bootstrap.zip" +pushd "${ROOTFS}${TERMUX_PREFIX}/" +cat "${ROOTFS}${TERMUX_PREFIX}/SYMLINKS.txt" | while read -r line; do + dest=$(echo "$line" | awk -F '←' '{ print $1 }'); + link=$(echo "$line" | awk -F '←' '{ print $2 }'); + ln -s "$dest" "$link"; +done +popd +rm "${ROOTFS}${TERMUX_PREFIX}/SYMLINKS.txt" + +read_package_list_deb "${ARCHITECTURE}" +# for package in toybox-host mksh-host iputils-host dnsmasq; do +for package in dnsmasq; do + pull_package ${package} +done + +# temporary +for package in temporary-package-storage/*${ARCHITECTURE}.deb; do + extract_deb ${package} +done + +echo "[*] Linking /system to bionic-host directory..." +pushd "${ROOTFS}" +ln -s data/data/${TERMUX_APP_PACKAGE}/files/usr/opt/bionic-host system +popd + +echo "[*] Creating /system/etc/group..." +cat << 'EOF' > "${ROOTFS}/system/etc/group" +root:x:0: +system:!:1000:system +EOF + +echo "[*] Creating /system/etc/hosts..." +cat << 'EOF' > "${ROOTFS}/system/etc/hosts" +127.0.0.1 localhost +::1 ip6-localhost +EOF + +echo "[*] Creating /system/etc/passwd..." +cat << EOF > "${ROOTFS}/system/etc/passwd" +root:x:0:0:root:/:/system/bin/sh +system:x:1000:1000:system:${TERMUX_BASE_DIR}/home:${TERMUX_PREFIX}/bin/login +EOF + +echo "[*] Copying entrypoint.sh..." +cp entrypoint.sh "${ROOTFS}/" + +echo "[*] Copying entrypoint_root.sh..." +cp entrypoint_root.sh "${ROOTFS}/" + +echo "[*] Setting permissions..." +find -L "${ROOTFS}/data" -type d -exec chmod 755 "{}" \; +find -L "${ROOTFS}${TERMUX_BASE_DIR}" \ + -type f -o -type d -exec chmod g-rwx,o-rwx "{}" \; +find -L "${ROOTFS}${TERMUX_PREFIX}/bin" \ + "${ROOTFS}${TERMUX_PREFIX}/libexec" \ + "${ROOTFS}${TERMUX_PREFIX}/lib/apt" \ + -type f -exec chmod 700 "{}" \; +find -L "${ROOTFS}/system" -type f -executable -exec chmod 755 "{}" \; +find -L "${ROOTFS}/system" -type f ! -executable -exec chmod 644 "{}" \; + +echo "[*] Rootfs generation complete. Building Docker image..." +$SUDO $OCI build \ + ${OCI_ARG} \ + -t termux/termux-docker:"${ARCHITECTURE}" \ + --build-arg ROOTFS="$(basename ${ROOTFS})" \ + --build-arg TERMUX_APP_PACKAGE="${TERMUX_APP_PACKAGE}" \ + --build-arg TERMUX_BASE_DIR="${TERMUX_BASE_DIR}" \ + --build-arg TERMUX_PREFIX="${TERMUX_PREFIX}" \ + . + +if [ "${1-}" = "publish" ]; then + $SUDO $OCI push termux/termux-docker:"${ARCHITECTURE}" +fi + +if [ "${ARCHITECTURE}" = "i686" ]; then + $SUDO $OCI tag termux/termux-docker:"${ARCHITECTURE}" termux/termux-docker:latest + if [ "${1-}" = "publish" ]; then + $SUDO $OCI push termux/termux-docker:latest + fi +fi diff --git a/system/arm/bin/busybox b/system/arm/bin/busybox deleted file mode 100755 index 0fda79b..0000000 Binary files a/system/arm/bin/busybox and /dev/null differ diff --git a/system/arm/bin/dnsmasq b/system/arm/bin/dnsmasq deleted file mode 100755 index 0759a74..0000000 Binary files a/system/arm/bin/dnsmasq and /dev/null differ diff --git a/system/arm/bin/linker b/system/arm/bin/linker deleted file mode 100755 index b96f20a..0000000 Binary files a/system/arm/bin/linker and /dev/null differ diff --git a/system/arm/bin/linker64 b/system/arm/bin/linker64 deleted file mode 100755 index 2045039..0000000 Binary files a/system/arm/bin/linker64 and /dev/null differ diff --git a/system/arm/bin/mksh b/system/arm/bin/mksh deleted file mode 100755 index be881bb..0000000 Binary files a/system/arm/bin/mksh and /dev/null differ diff --git a/system/arm/bin/sh b/system/arm/bin/sh deleted file mode 120000 index c3fa810..0000000 --- a/system/arm/bin/sh +++ /dev/null @@ -1 +0,0 @@ -busybox \ No newline at end of file diff --git a/system/arm/etc/group b/system/arm/etc/group deleted file mode 100644 index 7296ccb..0000000 --- a/system/arm/etc/group +++ /dev/null @@ -1,2 +0,0 @@ -root:x:0: -system:!:1000:system diff --git a/system/arm/etc/hosts b/system/arm/etc/hosts deleted file mode 100644 index 0c4db27..0000000 --- a/system/arm/etc/hosts +++ /dev/null @@ -1,2 +0,0 @@ -127.0.0.1 localhost -::1 ip6-localhost diff --git a/system/arm/etc/ld.config.28.txt b/system/arm/etc/ld.config.28.txt deleted file mode 100644 index 6f9caee..0000000 --- a/system/arm/etc/ld.config.28.txt +++ /dev/null @@ -1,348 +0,0 @@ -# Copyright (C) 2017 The Android Open Source Project -# -# Bionic loader config file. -# - -# Don't change the order here. The first pattern that matches with the -# absolute path of an executable is selected. -dir.system = /system/bin/ -dir.system = /system/xbin/ -dir.system = /system/product/bin/ - -dir.vendor = /odm/bin/ -dir.vendor = /vendor/bin/ -dir.vendor = /data/nativetest/odm -dir.vendor = /data/nativetest64/odm -dir.vendor = /data/benchmarktest/odm -dir.vendor = /data/benchmarktest64/odm -dir.vendor = /data/nativetest/vendor -dir.vendor = /data/nativetest64/vendor -dir.vendor = /data/benchmarktest/vendor -dir.vendor = /data/benchmarktest64/vendor - -dir.system = /data/nativetest -dir.system = /data/nativetest64 -dir.system = /data/benchmarktest -dir.system = /data/benchmarktest64 - -dir.postinstall = /postinstall - -[system] -additional.namespaces = sphal,vndk,rs - -############################################################################### -# "default" namespace -# -# Framework-side code runs in this namespace. Libs from /vendor partition -# can't be loaded in this namespace. -############################################################################### -namespace.default.isolated = true - -namespace.default.search.paths = /system/${LIB} -namespace.default.search.paths += /system/product/${LIB} - -# We can't have entire /system/${LIB} as permitted paths because doing so -# makes it possible to load libs in /system/${LIB}/vndk* directories by -# their absolute paths (e.g. dlopen("/system/lib/vndk/libbase.so");). -# VNDK libs are built with previous versions of Android and thus must not be -# loaded into this namespace where libs built with the current version of -# Android are loaded. Mixing the two types of libs in the same namespace can -# cause unexpected problem. -namespace.default.permitted.paths = /system/${LIB}/drm -namespace.default.permitted.paths += /system/${LIB}/extractors -namespace.default.permitted.paths += /system/${LIB}/hw -namespace.default.permitted.paths += /system/product/${LIB} -# These are where odex files are located. libart has to be able to dlopen the files -namespace.default.permitted.paths += /system/framework -namespace.default.permitted.paths += /system/app -namespace.default.permitted.paths += /system/priv-app -namespace.default.permitted.paths += /vendor/framework -namespace.default.permitted.paths += /vendor/app -namespace.default.permitted.paths += /vendor/priv-app -namespace.default.permitted.paths += /odm/framework -namespace.default.permitted.paths += /odm/app -namespace.default.permitted.paths += /odm/priv-app -namespace.default.permitted.paths += /oem/app -namespace.default.permitted.paths += /system/product/framework -namespace.default.permitted.paths += /system/product/app -namespace.default.permitted.paths += /system/product/priv-app -namespace.default.permitted.paths += /data -namespace.default.permitted.paths += /mnt/expand - -namespace.default.asan.search.paths = /data/asan/system/${LIB} -namespace.default.asan.search.paths += /system/${LIB} -namespace.default.asan.search.paths += /data/asan/product/${LIB} -namespace.default.asan.search.paths += /product/${LIB} - -namespace.default.asan.permitted.paths = /data -namespace.default.asan.permitted.paths += /system/${LIB}/drm -namespace.default.asan.permitted.paths += /system/${LIB}/extractors -namespace.default.asan.permitted.paths += /system/${LIB}/hw -namespace.default.asan.permitted.paths += /system/framework -namespace.default.asan.permitted.paths += /system/app -namespace.default.asan.permitted.paths += /system/priv-app -namespace.default.asan.permitted.paths += /vendor/framework -namespace.default.asan.permitted.paths += /vendor/app -namespace.default.asan.permitted.paths += /vendor/priv-app -namespace.default.asan.permitted.paths += /odm/framework -namespace.default.asan.permitted.paths += /odm/app -namespace.default.asan.permitted.paths += /odm/priv-app -namespace.default.asan.permitted.paths += /oem/app -namespace.default.asan.permitted.paths += /system/product/${LIB} -namespace.default.asan.permitted.paths += /system/product/framework -namespace.default.asan.permitted.paths += /system/product/app -namespace.default.asan.permitted.paths += /system/product/priv-app -namespace.default.asan.permitted.paths += /mnt/expand - -############################################################################### -# "sphal" namespace -# -# SP-HAL(Sameprocess-HAL)s are the only vendor libraries that are allowed to be -# loaded inside system processes. libEGL_.so, libGLESv2_.so, -# android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs. -# -# This namespace is exclusivly for SP-HALs. When the framework tries to dynami- -# cally load SP-HALs, android_dlopen_ext() is used to explicitly specifying -# that they should be searched and loaded from this namespace. -# -# Note that there is no link from the default namespace to this namespace. -############################################################################### -namespace.sphal.isolated = true -namespace.sphal.visible = true - -namespace.sphal.search.paths = /odm/${LIB} -namespace.sphal.search.paths += /vendor/${LIB} - -namespace.sphal.permitted.paths = /odm/${LIB} -namespace.sphal.permitted.paths += /vendor/${LIB} - -namespace.sphal.asan.search.paths = /data/asan/odm/${LIB} -namespace.sphal.asan.search.paths += /odm/${LIB} -namespace.sphal.asan.search.paths += /data/asan/vendor/${LIB} -namespace.sphal.asan.search.paths += /vendor/${LIB} - -namespace.sphal.asan.permitted.paths = /data/asan/odm/${LIB} -namespace.sphal.asan.permitted.paths += /odm/${LIB} -namespace.sphal.asan.permitted.paths += /data/asan/vendor/${LIB} -namespace.sphal.asan.permitted.paths += /vendor/${LIB} - -# Once in this namespace, access to libraries in /system/lib is restricted. Only -# libs listed here can be used. -namespace.sphal.links = default,vndk,rs - -namespace.sphal.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libclang_rt.asan-aarch64-android.so:libclang_rt.asan-arm-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so -namespace.sphal.link.default.shared_libs += libclang_rt.asan-aarch64-android.so:libclang_rt.ubsan_standalone-aarch64-android.so:libclang_rt.tsan-aarch64-android.so:libclang_rt.asan-arm-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.tsan-arm-android.so - -namespace.sphal.link.vndk.shared_libs = android.hardware.graphics.common@1.0.so:android.hardware.graphics.common@1.1.so:android.hardware.graphics.mapper@2.0.so:android.hardware.graphics.mapper@2.1.so:android.hardware.renderscript@1.0.so:android.hidl.memory.token@1.0.so:android.hidl.memory@1.0.so:android.hidl.memory@1.0-impl.so:libRSCpuRef.so:libRSDriver.so:libRS_internal.so:libbase.so:libbcinfo.so:libc++.so:libcutils.so:libhardware.so:libhidlbase.so:libhidlmemory.so:libhidltransport.so:libhwbinder.so:libhwbinder_noltopgo.so:libion.so:liblzma.so:libunwindstack.so:libutils.so:libutilscallstack.so:libz.so - -# Renderscript gets separate namespace -namespace.sphal.link.rs.shared_libs = libRS_internal.so - -############################################################################### -# "rs" namespace -# -# This namespace is exclusively for Renderscript internal libraries. -# This namespace has slightly looser restriction than the vndk namespace because -# of the genuine characteristics of Renderscript; /data is in the permitted path -# to load the compiled *.so file and libmediandk.so can be used here. -############################################################################### -namespace.rs.isolated = true -namespace.rs.visible = true - -namespace.rs.search.paths = /odm/${LIB}/vndk-sp -namespace.rs.search.paths += /vendor/${LIB}/vndk-sp -namespace.rs.search.paths += /system/${LIB}/vndk-sp-28 -namespace.rs.search.paths += /odm/${LIB} -namespace.rs.search.paths += /vendor/${LIB} - -namespace.rs.permitted.paths = /odm/${LIB} -namespace.rs.permitted.paths += /vendor/${LIB} -namespace.rs.permitted.paths += /data - -namespace.rs.asan.search.paths = /data/asan/odm/${LIB}/vndk-sp -namespace.rs.asan.search.paths += /odm/${LIB}/vndk-sp -namespace.rs.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp -namespace.rs.asan.search.paths += /vendor/${LIB}/vndk-sp -namespace.rs.asan.search.paths += /data/asan/system/${LIB}/vndk-sp-28 -namespace.rs.asan.search.paths += /system/${LIB}/vndk-sp-28 -namespace.rs.asan.search.paths += /data/asan/odm/${LIB} -namespace.rs.asan.search.paths += /odm/${LIB} -namespace.rs.asan.search.paths += /data/asan/vendor/${LIB} -namespace.rs.asan.search.paths += /vendor/${LIB} - -namespace.rs.asan.permitted.paths = /data/asan/odm/${LIB} -namespace.rs.asan.permitted.paths += /odm/${LIB} -namespace.rs.asan.permitted.paths += /data/asan/vendor/${LIB} -namespace.rs.asan.permitted.paths += /vendor/${LIB} -namespace.rs.asan.permitted.paths += /data - -namespace.rs.links = default,vndk - -namespace.rs.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libclang_rt.asan-aarch64-android.so:libclang_rt.asan-arm-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so -namespace.rs.link.default.shared_libs += libclang_rt.asan-aarch64-android.so:libclang_rt.ubsan_standalone-aarch64-android.so:libclang_rt.tsan-aarch64-android.so:libclang_rt.asan-arm-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.tsan-arm-android.so -# Private LLNDK libs (e.g. libft2.so) are exceptionally allowed to this -# namespace because RS framework libs are using them. -namespace.rs.link.default.shared_libs += libft2.so - -namespace.rs.link.vndk.shared_libs = android.hardware.graphics.common@1.0.so:android.hardware.graphics.common@1.1.so:android.hardware.graphics.mapper@2.0.so:android.hardware.graphics.mapper@2.1.so:android.hardware.renderscript@1.0.so:android.hidl.memory.token@1.0.so:android.hidl.memory@1.0.so:android.hidl.memory@1.0-impl.so:libRSCpuRef.so:libRSDriver.so:libRS_internal.so:libbase.so:libbcinfo.so:libc++.so:libcutils.so:libhardware.so:libhidlbase.so:libhidlmemory.so:libhidltransport.so:libhwbinder.so:libhwbinder_noltopgo.so:libion.so:liblzma.so:libunwindstack.so:libutils.so:libutilscallstack.so:libz.so - -############################################################################### -# "vndk" namespace -# -# This namespace is exclusively for vndk-sp libs. -############################################################################### -namespace.vndk.isolated = true -namespace.vndk.visible = true - -namespace.vndk.search.paths = /odm/${LIB}/vndk-sp -namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp -namespace.vndk.search.paths += /system/${LIB}/vndk-sp-28 - -namespace.vndk.permitted.paths = /odm/${LIB}/hw -namespace.vndk.permitted.paths += /odm/${LIB}/egl -namespace.vndk.permitted.paths += /vendor/${LIB}/hw -namespace.vndk.permitted.paths += /vendor/${LIB}/egl -# This is exceptionally required since android.hidl.memory@1.0-impl.so is here -namespace.vndk.permitted.paths += /system/${LIB}/vndk-sp-28/hw - -namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk-sp -namespace.vndk.asan.search.paths += /odm/${LIB}/vndk-sp -namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp -namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp -namespace.vndk.asan.search.paths += /data/asan/system/${LIB}/vndk-sp-28 -namespace.vndk.asan.search.paths += /system/${LIB}/vndk-sp-28 - -namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw -namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw -namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl -namespace.vndk.asan.permitted.paths += /odm/${LIB}/egl -namespace.vndk.asan.permitted.paths += /data/asan/vendor/${LIB}/hw -namespace.vndk.asan.permitted.paths += /vendor/${LIB}/hw -namespace.vndk.asan.permitted.paths += /data/asan/vendor/${LIB}/egl -namespace.vndk.asan.permitted.paths += /vendor/${LIB}/egl - -namespace.vndk.asan.permitted.paths += /data/asan/system/${LIB}/vndk-sp-28/hw -namespace.vndk.asan.permitted.paths += /system/${LIB}/vndk-sp-28/hw - -# The "vndk" namespace links to "default" namespace for LLNDK libs and links to -# "sphal" namespace for vendor libs. The ordering matters. The "default" -# namespace has higher priority than the "sphal" namespace. -namespace.vndk.links = default,sphal - -# When these NDK libs are required inside this namespace, then it is redirected -# to the default namespace. This is possible since their ABI is stable across -# Android releases. -namespace.vndk.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libclang_rt.asan-aarch64-android.so:libclang_rt.asan-arm-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so -namespace.vndk.link.default.shared_libs += libclang_rt.asan-aarch64-android.so:libclang_rt.ubsan_standalone-aarch64-android.so:libclang_rt.tsan-aarch64-android.so:libclang_rt.asan-arm-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.tsan-arm-android.so - -# Allow VNDK-SP extensions to use vendor libraries -namespace.vndk.link.sphal.allow_all_shared_libs = true - -############################################################################### -# Namespace config for vendor processes. In O, no restriction is enforced for -# them. However, in O-MR1, access to /system/${LIB} will not be allowed to -# the default namespace. 'system' namespace will be added to give limited -# (LL-NDK only) access. -############################################################################### -[vendor] -additional.namespaces = system,vndk - -############################################################################### -# "default" namespace -# -# This is the default linker namespace for a vendor process (a process started -# from /vendor/bin/*). The main executable and the libs under /vendor/lib[64] -# are loaded directly into this namespace. However, other libs under the system -# partition (VNDK and LLNDK libraries) are not loaded here but from the -# separate namespace 'system'. The delegation to the system namespace is done -# via the 'namespace.default.link.system.shared_libs' property below. -############################################################################### -namespace.default.isolated = true -namespace.default.visible = true - -namespace.default.search.paths = /odm/${LIB} -namespace.default.search.paths += /vendor/${LIB} - -namespace.default.permitted.paths = /odm -namespace.default.permitted.paths += /vendor - -namespace.default.asan.search.paths = /data/asan/odm/${LIB} -namespace.default.asan.search.paths += /odm/${LIB} -namespace.default.asan.search.paths += /data/asan/vendor/${LIB} -namespace.default.asan.search.paths += /vendor/${LIB} - -namespace.default.asan.permitted.paths = /data/asan/odm -namespace.default.asan.permitted.paths += /odm -namespace.default.asan.permitted.paths += /data/asan/vendor -namespace.default.asan.permitted.paths += /vendor - -namespace.default.links = system,vndk -namespace.default.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libclang_rt.asan-aarch64-android.so:libclang_rt.asan-arm-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so -namespace.default.link.vndk.shared_libs = android.hardware.graphics.common@1.0.so:android.hardware.graphics.common@1.1.so:android.hardware.graphics.mapper@2.0.so:android.hardware.graphics.mapper@2.1.so:android.hardware.renderscript@1.0.so:android.hidl.memory.token@1.0.so:android.hidl.memory@1.0.so:android.hidl.memory@1.0-impl.so:libRSCpuRef.so:libRSDriver.so:libRS_internal.so:libbase.so:libbcinfo.so:libc++.so:libcutils.so:libhardware.so:libhidlbase.so:libhidlmemory.so:libhidltransport.so:libhwbinder.so:libhwbinder_noltopgo.so:libion.so:liblzma.so:libunwindstack.so:libutils.so:libutilscallstack.so:libz.so -namespace.default.link.vndk.shared_libs += android.frameworks.displayservice@1.0.so:android.frameworks.schedulerservice@1.0.so:android.frameworks.sensorservice@1.0.so:android.frameworks.vr.composer@1.0.so:android.hardware.audio.common-util.so:android.hardware.audio.common@2.0.so:android.hardware.audio.common@2.0-util.so:android.hardware.audio.common@4.0.so:android.hardware.audio.common@4.0-util.so:android.hardware.audio.effect@2.0.so:android.hardware.audio.effect@4.0.so:android.hardware.audio@2.0.so:android.hardware.audio@4.0.so:android.hardware.authsecret@1.0.so:android.hardware.automotive.audiocontrol@1.0.so:android.hardware.automotive.evs@1.0.so:android.hardware.automotive.vehicle@2.0.so:android.hardware.biometrics.fingerprint@2.1.so:android.hardware.bluetooth.a2dp@1.0.so:android.hardware.bluetooth@1.0.so:android.hardware.boot@1.0.so:android.hardware.broadcastradio@1.0.so:android.hardware.broadcastradio@1.1.so:android.hardware.broadcastradio@2.0.so:android.hardware.camera.common@1.0.so:android.hardware.camera.device@1.0.so:android.hardware.camera.device@3.2.so:android.hardware.camera.device@3.3.so:android.hardware.camera.device@3.4.so:android.hardware.camera.metadata@3.2.so:android.hardware.camera.metadata@3.3.so:android.hardware.camera.provider@2.4.so:android.hardware.cas.native@1.0.so:android.hardware.cas@1.0.so:android.hardware.configstore-utils.so:android.hardware.configstore@1.0.so:android.hardware.configstore@1.1.so:android.hardware.confirmationui-support-lib.so:android.hardware.confirmationui@1.0.so:android.hardware.contexthub@1.0.so:android.hardware.drm@1.0.so:android.hardware.drm@1.1.so:android.hardware.dumpstate@1.0.so:android.hardware.gatekeeper@1.0.so:android.hardware.gnss@1.0.so:android.hardware.gnss@1.1.so:android.hardware.graphics.allocator@2.0.so:android.hardware.graphics.bufferqueue@1.0.so:android.hardware.graphics.composer@2.1.so:android.hardware.graphics.composer@2.2.so:android.hardware.health@1.0.so:android.hardware.health@2.0.so:android.hardware.ir@1.0.so:android.hardware.keymaster@3.0.so:android.hardware.keymaster@4.0.so:android.hardware.light@2.0.so:android.hardware.media.bufferpool@1.0.so:android.hardware.media.omx@1.0.so:android.hardware.media@1.0.so:android.hardware.memtrack@1.0.so:android.hardware.neuralnetworks@1.0.so:android.hardware.neuralnetworks@1.1.so:android.hardware.nfc@1.0.so:android.hardware.nfc@1.1.so:android.hardware.oemlock@1.0.so:android.hardware.power@1.0.so:android.hardware.power@1.1.so:android.hardware.power@1.2.so:android.hardware.radio.config@1.0.so:android.hardware.radio.deprecated@1.0.so:android.hardware.radio@1.0.so:android.hardware.radio@1.1.so:android.hardware.radio@1.2.so:android.hardware.secure_element@1.0.so:android.hardware.sensors@1.0.so:android.hardware.soundtrigger@2.0.so:android.hardware.soundtrigger@2.0-core.so:android.hardware.soundtrigger@2.1.so:android.hardware.tetheroffload.config@1.0.so:android.hardware.tetheroffload.control@1.0.so:android.hardware.thermal@1.0.so:android.hardware.thermal@1.1.so:android.hardware.tv.cec@1.0.so:android.hardware.tv.input@1.0.so:android.hardware.usb.gadget@1.0.so:android.hardware.usb@1.0.so:android.hardware.usb@1.1.so:android.hardware.vibrator@1.0.so:android.hardware.vibrator@1.1.so:android.hardware.vibrator@1.2.so:android.hardware.vr@1.0.so:android.hardware.weaver@1.0.so:android.hardware.wifi.hostapd@1.0.so:android.hardware.wifi.offload@1.0.so:android.hardware.wifi.supplicant@1.0.so:android.hardware.wifi.supplicant@1.1.so:android.hardware.wifi@1.0.so:android.hardware.wifi@1.1.so:android.hardware.wifi@1.2.so:android.hidl.allocator@1.0.so:android.hidl.memory.block@1.0.so:android.hidl.token@1.0.so:android.hidl.token@1.0-utils.so:android.system.net.netd@1.0.so:android.system.net.netd@1.1.so:android.system.wifi.keystore@1.0.so:libadf.so:libaudioroute.so:libaudioutils.so:libbinder.so:libcamera_metadata.so:libcap.so:libclang_rt.ubsan_standalone-aarch64-android.so:libclang_rt.ubsan_standalone-arm-android.so:libcn-cbor.so:libcrypto.so:libcrypto_utils.so:libcurl.so:libdiskconfig.so:libdumpstateutil.so:libevent.so:libexif.so:libexpat.so:libfmq.so:libgatekeeper.so:libhardware_legacy.so:libhidlallocatorutils.so:libhidlcache.so:libjpeg.so:libkeymaster_messages.so:libkeymaster_portable.so:libldacBT_abr.so:libldacBT_enc.so:liblz4.so:libmedia_helper.so:libmedia_omx.so:libmemtrack.so:libminijail.so:libmkbootimg_abi_check.so:libnetutils.so:libnl.so:libopus.so:libpagemap.so:libpcre2.so:libpiex.so:libpng.so:libpower.so:libprocinfo.so:libprotobuf-cpp-full.so:libprotobuf-cpp-lite.so:libpuresoftkeymasterdevice.so:libradio_metadata.so:libselinux.so:libsoftkeymasterdevice.so:libspeexresampler.so:libsqlite.so:libssl.so:libstagefright_amrnb_common.so:libstagefright_bufferqueue_helper.so:libstagefright_enc_common.so:libstagefright_flacdec.so:libstagefright_foundation.so:libstagefright_omx.so:libstagefright_omx_utils.so:libstagefright_soft_aacdec.so:libstagefright_soft_aacenc.so:libstagefright_soft_amrdec.so:libstagefright_soft_amrnbenc.so:libstagefright_soft_amrwbenc.so:libstagefright_soft_avcdec.so:libstagefright_soft_avcenc.so:libstagefright_soft_flacdec.so:libstagefright_soft_flacenc.so:libstagefright_soft_g711dec.so:libstagefright_soft_gsmdec.so:libstagefright_soft_hevcdec.so:libstagefright_soft_mp3dec.so:libstagefright_soft_mpeg2dec.so:libstagefright_soft_mpeg4dec.so:libstagefright_soft_mpeg4enc.so:libstagefright_soft_opusdec.so:libstagefright_soft_rawdec.so:libstagefright_soft_vorbisdec.so:libstagefright_soft_vpxdec.so:libstagefright_soft_vpxenc.so:libstagefright_xmlparser.so:libsuspend.so:libsysutils.so:libtinyalsa.so:libtinyxml2.so:libui.so:libusbhost.so:libvixl-arm.so:libvixl-arm64.so:libvorbisidec.so:libwifi-system-iface.so:libxml2.so:libyuv.so:libziparchive.so - -############################################################################### -# "vndk" namespace -# -# This namespace is where VNDK and VNDK-SP libraries are loaded for -# a vendor process. -############################################################################### -namespace.vndk.isolated = false - -namespace.vndk.search.paths = /odm/${LIB}/vndk -namespace.vndk.search.paths += /odm/${LIB}/vndk-sp -namespace.vndk.search.paths += /vendor/${LIB}/vndk -namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp -namespace.vndk.search.paths += /system/${LIB}/vndk-sp-28 -namespace.vndk.search.paths += /system/${LIB}/vndk-28 - -namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk -namespace.vndk.asan.search.paths += /odm/${LIB}/vndk -namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}/vndk-sp -namespace.vndk.asan.search.paths += /odm/${LIB}/vndk-sp -namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk -namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk -namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp -namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp -namespace.vndk.asan.search.paths += /data/asan/system/${LIB}/vndk-sp-28 -namespace.vndk.asan.search.paths += /system/${LIB}/vndk-sp-28 -namespace.vndk.asan.search.paths += /data/asan/system/${LIB}/vndk-28 -namespace.vndk.asan.search.paths += /system/${LIB}/vndk-28 - -# When these NDK libs are required inside this namespace, then it is redirected -# to the system namespace. This is possible since their ABI is stable across -# Android releases. -namespace.vndk.links = system,default -namespace.vndk.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libclang_rt.asan-aarch64-android.so:libclang_rt.asan-arm-android.so:libdl.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so -namespace.vndk.link.system.shared_libs += libclang_rt.asan-aarch64-android.so:libclang_rt.ubsan_standalone-aarch64-android.so:libclang_rt.tsan-aarch64-android.so:libclang_rt.asan-arm-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.tsan-arm-android.so - -namespace.vndk.link.default.allow_all_shared_libs = true - -############################################################################### -# "system" namespace -# -# This namespace is where system libs (VNDK and LLNDK libs) are loaded for -# a vendor process. -############################################################################### -namespace.system.isolated = false - -namespace.system.search.paths = /system/${LIB} -namespace.system.search.paths += /system/product/${LIB} - -namespace.system.asan.search.paths = /data/asan/system/${LIB} -namespace.system.asan.search.paths += /system/${LIB} -namespace.system.asan.search.paths += /data/asan/product/${LIB} -namespace.system.asan.search.paths += /product/${LIB} - -############################################################################### -# Namespace config for binaries under /postinstall. -# Only one default namespace is defined and it has no directories other than -# /system/lib in the search paths. This is because linker calls realpath on the -# search paths and this causes selinux denial if the paths (/vendor, /odm) are -# not allowed to the poinstall binaries. There is no reason to allow the -# binaries to access the paths. -############################################################################### -[postinstall] -namespace.default.isolated = false -namespace.default.search.paths = /system/${LIB} -namespace.default.search.paths += /system/product/${LIB} diff --git a/system/arm/etc/mkshrc b/system/arm/etc/mkshrc deleted file mode 100644 index c254a01..0000000 --- a/system/arm/etc/mkshrc +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (c) 2010, 2012, 2013, 2014 -# Thorsten Glaser -# This file is provided under the same terms as mksh. -#- -# Minimal /system/etc/mkshrc for Android -# -# Support: https://launchpad.net/mksh - -: ${HOSTNAME:=$(getprop ro.product.device)} -: ${HOSTNAME:=android} -: ${TMPDIR:=/data/local/tmp} -export HOSTNAME TMPDIR - -if (( USER_ID )); then PS1='$'; else PS1='#'; fi -PS4='[$EPOCHREALTIME] '; PS1='${| - local e=$? - - (( e )) && REPLY+="$e|" - - return $e -}$HOSTNAME:${PWD:-?} '"$PS1 " diff --git a/system/arm/etc/passwd b/system/arm/etc/passwd deleted file mode 100644 index cba8c63..0000000 --- a/system/arm/etc/passwd +++ /dev/null @@ -1,2 +0,0 @@ -root:x:0:0:root:/:/system/bin/sh -system:x:1000:1000:system:/data/data/com.termux/files/home:/data/data/com.termux/files/usr/bin/login diff --git a/system/arm/lib/ld-android.so b/system/arm/lib/ld-android.so deleted file mode 100644 index 4111481..0000000 Binary files a/system/arm/lib/ld-android.so and /dev/null differ diff --git a/system/arm/lib/libc++.so b/system/arm/lib/libc++.so deleted file mode 100644 index c404afb..0000000 Binary files a/system/arm/lib/libc++.so and /dev/null differ diff --git a/system/arm/lib/libc.so b/system/arm/lib/libc.so deleted file mode 100644 index 071f53f..0000000 Binary files a/system/arm/lib/libc.so and /dev/null differ diff --git a/system/arm/lib/libc_malloc_debug.so b/system/arm/lib/libc_malloc_debug.so deleted file mode 100644 index 6177f20..0000000 Binary files a/system/arm/lib/libc_malloc_debug.so and /dev/null differ diff --git a/system/arm/lib/libc_malloc_hooks.so b/system/arm/lib/libc_malloc_hooks.so deleted file mode 100644 index f183032..0000000 Binary files a/system/arm/lib/libc_malloc_hooks.so and /dev/null differ diff --git a/system/arm/lib/libcutils.so b/system/arm/lib/libcutils.so deleted file mode 100644 index 741414d..0000000 Binary files a/system/arm/lib/libcutils.so and /dev/null differ diff --git a/system/arm/lib/libdl.so b/system/arm/lib/libdl.so deleted file mode 100644 index 68b99d8..0000000 Binary files a/system/arm/lib/libdl.so and /dev/null differ diff --git a/system/arm/lib/libicuuc.so b/system/arm/lib/libicuuc.so deleted file mode 100644 index 61b354a..0000000 Binary files a/system/arm/lib/libicuuc.so and /dev/null differ diff --git a/system/arm/lib/liblog.so b/system/arm/lib/liblog.so deleted file mode 100644 index bd2c38a..0000000 Binary files a/system/arm/lib/liblog.so and /dev/null differ diff --git a/system/arm/lib/libm.so b/system/arm/lib/libm.so deleted file mode 100644 index 6152ab6..0000000 Binary files a/system/arm/lib/libm.so and /dev/null differ diff --git a/system/arm/lib/libnetd_client.so b/system/arm/lib/libnetd_client.so deleted file mode 100644 index 6cc6b75..0000000 Binary files a/system/arm/lib/libnetd_client.so and /dev/null differ diff --git a/system/arm/lib64/ld-android.so b/system/arm/lib64/ld-android.so deleted file mode 100644 index 2a2021e..0000000 Binary files a/system/arm/lib64/ld-android.so and /dev/null differ diff --git a/system/arm/lib64/libc++.so b/system/arm/lib64/libc++.so deleted file mode 100644 index 12ddc93..0000000 Binary files a/system/arm/lib64/libc++.so and /dev/null differ diff --git a/system/arm/lib64/libc.so b/system/arm/lib64/libc.so deleted file mode 100644 index 4fdcda4..0000000 Binary files a/system/arm/lib64/libc.so and /dev/null differ diff --git a/system/arm/lib64/libc_malloc_debug.so b/system/arm/lib64/libc_malloc_debug.so deleted file mode 100644 index fcb7310..0000000 Binary files a/system/arm/lib64/libc_malloc_debug.so and /dev/null differ diff --git a/system/arm/lib64/libc_malloc_hooks.so b/system/arm/lib64/libc_malloc_hooks.so deleted file mode 100644 index 7184e8c..0000000 Binary files a/system/arm/lib64/libc_malloc_hooks.so and /dev/null differ diff --git a/system/arm/lib64/libdl.so b/system/arm/lib64/libdl.so deleted file mode 100644 index 093484a..0000000 Binary files a/system/arm/lib64/libdl.so and /dev/null differ diff --git a/system/arm/lib64/libicuuc.so b/system/arm/lib64/libicuuc.so deleted file mode 100644 index 78d7243..0000000 Binary files a/system/arm/lib64/libicuuc.so and /dev/null differ diff --git a/system/arm/lib64/liblog.so b/system/arm/lib64/liblog.so deleted file mode 100644 index c73ae7a..0000000 Binary files a/system/arm/lib64/liblog.so and /dev/null differ diff --git a/system/arm/lib64/libm.so b/system/arm/lib64/libm.so deleted file mode 100644 index ef4ccc0..0000000 Binary files a/system/arm/lib64/libm.so and /dev/null differ diff --git a/system/arm/lib64/libnetd_client.so b/system/arm/lib64/libnetd_client.so deleted file mode 100644 index 8c0c944..0000000 Binary files a/system/arm/lib64/libnetd_client.so and /dev/null differ diff --git a/system/arm/usr/icu/icudt60l.dat b/system/arm/usr/icu/icudt60l.dat deleted file mode 100644 index 0d1232a..0000000 Binary files a/system/arm/usr/icu/icudt60l.dat and /dev/null differ diff --git a/system/arm/usr/share/zoneinfo/tzdata b/system/arm/usr/share/zoneinfo/tzdata deleted file mode 100644 index 5c17a8b..0000000 Binary files a/system/arm/usr/share/zoneinfo/tzdata and /dev/null differ diff --git a/system/arm/usr/share/zoneinfo/tzlookup.xml b/system/arm/usr/share/zoneinfo/tzlookup.xml deleted file mode 100644 index 43dfb98..0000000 --- a/system/arm/usr/share/zoneinfo/tzlookup.xml +++ /dev/null @@ -1,926 +0,0 @@ - - - - Europe/Andorra - - - Asia/Dubai - - - Asia/Kabul - - - America/Antigua - - - America/Anguilla - - - Europe/Tirane - - - Asia/Yerevan - - - Africa/Luanda - - - Antarctica/McMurdo - Antarctica/DumontDUrville - Antarctica/Casey - Antarctica/Davis - Antarctica/Mawson - Antarctica/Vostok - Antarctica/Syowa - Antarctica/Troll - Antarctica/Rothera - Antarctica/Palmer - - - America/Argentina/Buenos_Aires - America/Argentina/Cordoba - America/Argentina/Salta - America/Argentina/Jujuy - America/Argentina/Tucuman - America/Argentina/Catamarca - America/Argentina/La_Rioja - America/Argentina/San_Juan - America/Argentina/Mendoza - America/Argentina/San_Luis - America/Argentina/Rio_Gallegos - America/Argentina/Ushuaia - - - Pacific/Pago_Pago - - - Europe/Vienna - - - Australia/Sydney - Australia/Melbourne - Australia/Brisbane - Australia/Hobart - Australia/Currie - Australia/Lindeman - Antarctica/Macquarie - Australia/Lord_Howe - Australia/Adelaide - Australia/Broken_Hill - Australia/Darwin - Australia/Perth - Australia/Eucla - - - America/Aruba - - - Europe/Mariehamn - - - Asia/Baku - - - Europe/Sarajevo - - - America/Barbados - - - Asia/Dhaka - - - Europe/Brussels - - - Africa/Ouagadougou - - - Europe/Sofia - - - Asia/Bahrain - - - Africa/Bujumbura - - - Africa/Porto-Novo - - - America/St_Barthelemy - - - Atlantic/Bermuda - - - Asia/Brunei - - - America/La_Paz - - - America/Kralendijk - - - America/Noronha - America/Sao_Paulo - America/Belem - America/Fortaleza - America/Recife - America/Araguaina - America/Maceio - America/Bahia - America/Santarem - America/Manaus - America/Campo_Grande - America/Cuiaba - America/Porto_Velho - America/Boa_Vista - America/Eirunepe - America/Rio_Branco - - - America/Nassau - - - Asia/Thimphu - - - Africa/Gaborone - - - Europe/Minsk - - - America/Belize - - - America/St_Johns - America/Halifax - America/Glace_Bay - America/Moncton - America/Goose_Bay - America/Blanc-Sablon - America/Toronto - America/Nipigon - America/Thunder_Bay - America/Iqaluit - America/Pangnirtung - America/Atikokan - America/Winnipeg - America/Regina - America/Rankin_Inlet - America/Rainy_River - America/Swift_Current - America/Resolute - America/Edmonton - America/Cambridge_Bay - America/Yellowknife - America/Inuvik - America/Dawson_Creek - America/Creston - America/Fort_Nelson - America/Vancouver - America/Whitehorse - America/Dawson - - - Indian/Cocos - - - Africa/Lubumbashi - Africa/Kinshasa - - - Africa/Bangui - - - Africa/Brazzaville - - - Europe/Zurich - - - Africa/Abidjan - - - Pacific/Rarotonga - - - America/Punta_Arenas - America/Santiago - Pacific/Easter - - - Africa/Douala - - - Asia/Shanghai - Asia/Urumqi - - - America/Bogota - - - America/Costa_Rica - - - America/Havana - - - Atlantic/Cape_Verde - - - America/Curacao - - - Indian/Christmas - - - Asia/Nicosia - Asia/Famagusta - - - Europe/Prague - - - Europe/Berlin - Europe/Busingen - - - Africa/Djibouti - - - Europe/Copenhagen - - - America/Dominica - - - America/Santo_Domingo - - - Africa/Algiers - - - America/Guayaquil - Pacific/Galapagos - - - Europe/Tallinn - - - Africa/Cairo - - - Africa/El_Aaiun - - - Africa/Asmara - - - Europe/Madrid - Africa/Ceuta - Atlantic/Canary - - - Africa/Addis_Ababa - - - Europe/Helsinki - - - Pacific/Fiji - - - Atlantic/Stanley - - - Pacific/Pohnpei - Pacific/Kosrae - Pacific/Chuuk - - - Atlantic/Faroe - - - Europe/Paris - - - Africa/Libreville - - - Europe/London - - - America/Grenada - - - Asia/Tbilisi - - - America/Cayenne - - - Europe/Guernsey - - - Africa/Accra - - - Europe/Gibraltar - - - America/Danmarkshavn - America/Scoresbysund - America/Godthab - America/Thule - - - Africa/Banjul - - - Africa/Conakry - - - America/Guadeloupe - - - Africa/Malabo - - - Europe/Athens - - - Atlantic/South_Georgia - - - America/Guatemala - - - Pacific/Guam - - - Africa/Bissau - - - America/Guyana - - - Asia/Hong_Kong - - - America/Tegucigalpa - - - Europe/Zagreb - - - America/Port-au-Prince - - - Europe/Budapest - - - Asia/Jayapura - Asia/Makassar - Asia/Jakarta - Asia/Pontianak - - - Europe/Dublin - - - Asia/Jerusalem - - - Europe/Isle_of_Man - - - Asia/Kolkata - - - Indian/Chagos - - - Asia/Baghdad - - - Asia/Tehran - - - Atlantic/Reykjavik - - - Europe/Rome - - - Europe/Jersey - - - America/Jamaica - - - Asia/Amman - - - Asia/Tokyo - - - Africa/Nairobi - - - Asia/Bishkek - - - Asia/Phnom_Penh - - - Pacific/Kiritimati - Pacific/Enderbury - Pacific/Tarawa - - - Indian/Comoro - - - America/St_Kitts - - - Asia/Pyongyang - - - Asia/Seoul - - - Asia/Kuwait - - - America/Cayman - - - Asia/Almaty - Asia/Qyzylorda - Asia/Aqtau - Asia/Oral - Asia/Aqtobe - Asia/Atyrau - - - Asia/Vientiane - - - Asia/Beirut - - - America/St_Lucia - - - Europe/Vaduz - - - Asia/Colombo - - - Africa/Monrovia - - - Africa/Maseru - - - Europe/Vilnius - - - Europe/Luxembourg - - - Europe/Riga - - - Africa/Tripoli - - - Africa/Casablanca - - - Europe/Monaco - - - Europe/Chisinau - - - Europe/Podgorica - - - America/Marigot - - - Indian/Antananarivo - - - Pacific/Majuro - Pacific/Kwajalein - - - Europe/Skopje - - - Africa/Bamako - - - Asia/Yangon - - - Asia/Choibalsan - Asia/Ulaanbaatar - Asia/Hovd - - - Asia/Macau - - - Pacific/Saipan - - - America/Martinique - - - Africa/Nouakchott - - - America/Montserrat - - - Europe/Malta - - - Indian/Mauritius - - - Indian/Maldives - - - Africa/Blantyre - - - America/Mexico_City - America/Merida - America/Monterrey - America/Matamoros - America/Bahia_Banderas - America/Cancun - America/Chihuahua - America/Hermosillo - America/Mazatlan - America/Ojinaga - America/Tijuana - - - Asia/Kuala_Lumpur - Asia/Kuching - - - Africa/Maputo - - - Africa/Windhoek - - - Pacific/Noumea - - - Africa/Niamey - - - Pacific/Norfolk - - - Africa/Lagos - - - America/Managua - - - Europe/Amsterdam - - - Europe/Oslo - - - Asia/Kathmandu - - - Pacific/Nauru - - - Pacific/Niue - - - Pacific/Auckland - Pacific/Chatham - - - Asia/Muscat - - - America/Panama - - - America/Lima - - - Pacific/Gambier - Pacific/Marquesas - Pacific/Tahiti - - - Pacific/Port_Moresby - Pacific/Bougainville - - - Asia/Manila - - - Asia/Karachi - - - Europe/Warsaw - - - America/Miquelon - - - Pacific/Pitcairn - - - America/Puerto_Rico - - - Asia/Gaza - Asia/Hebron - - - Europe/Lisbon - Atlantic/Madeira - Atlantic/Azores - - - Pacific/Palau - - - America/Asuncion - - - Asia/Qatar - - - Indian/Reunion - - - Europe/Bucharest - - - Europe/Belgrade - - - Asia/Kamchatka - Asia/Anadyr - Asia/Magadan - Asia/Sakhalin - Asia/Srednekolymsk - Asia/Vladivostok - Asia/Ust-Nera - Asia/Yakutsk - Asia/Chita - Asia/Khandyga - Asia/Irkutsk - Asia/Krasnoyarsk - Asia/Novosibirsk - Asia/Barnaul - Asia/Novokuznetsk - Asia/Tomsk - Asia/Omsk - Asia/Yekaterinburg - Europe/Samara - Europe/Astrakhan - Europe/Ulyanovsk - Europe/Saratov - Europe/Moscow - Europe/Volgograd - Europe/Kirov - Europe/Simferopol - Europe/Kaliningrad - - - Africa/Kigali - - - Asia/Riyadh - - - Pacific/Guadalcanal - - - Indian/Mahe - - - Africa/Khartoum - - - Europe/Stockholm - - - Asia/Singapore - - - Atlantic/St_Helena - - - Europe/Ljubljana - - - Arctic/Longyearbyen - - - Europe/Bratislava - - - Africa/Freetown - - - Europe/San_Marino - - - Africa/Dakar - - - Africa/Mogadishu - - - America/Paramaribo - - - Africa/Juba - - - Africa/Sao_Tome - - - America/El_Salvador - - - America/Lower_Princes - - - Asia/Damascus - - - Africa/Mbabane - - - America/Grand_Turk - - - Africa/Ndjamena - - - Indian/Kerguelen - - - Africa/Lome - - - Asia/Bangkok - - - Asia/Dushanbe - - - Pacific/Fakaofo - - - Asia/Dili - - - Asia/Ashgabat - - - Africa/Tunis - - - Pacific/Tongatapu - - - Europe/Istanbul - - - America/Port_of_Spain - - - Pacific/Funafuti - - - Asia/Taipei - - - Africa/Dar_es_Salaam - - - Europe/Kiev - Europe/Uzhgorod - Europe/Zaporozhye - - - Africa/Kampala - - - Pacific/Wake - Pacific/Midway - - - America/New_York - America/Detroit - America/Kentucky/Louisville - America/Kentucky/Monticello - America/Indiana/Indianapolis - America/Indiana/Vincennes - America/Indiana/Winamac - America/Indiana/Marengo - America/Indiana/Petersburg - America/Indiana/Vevay - America/Chicago - America/Indiana/Knox - America/Menominee - America/North_Dakota/Center - America/North_Dakota/New_Salem - America/Indiana/Tell_City - America/North_Dakota/Beulah - America/Denver - America/Boise - America/Phoenix - America/Los_Angeles - America/Anchorage - America/Juneau - America/Yakutat - America/Nome - America/Metlakatla - America/Sitka - Pacific/Honolulu - America/Adak - - - America/Montevideo - - - Asia/Tashkent - Asia/Samarkand - - - Europe/Vatican - - - America/St_Vincent - - - America/Caracas - - - America/Tortola - - - America/St_Thomas - - - Asia/Ho_Chi_Minh - - - Pacific/Efate - - - Pacific/Wallis - - - Pacific/Apia - - - Asia/Aden - - - Indian/Mayotte - - - Africa/Johannesburg - - - Africa/Lusaka - - - Africa/Harare - - - diff --git a/system/x86/bin/busybox b/system/x86/bin/busybox deleted file mode 100755 index 6bc7737..0000000 Binary files a/system/x86/bin/busybox and /dev/null differ diff --git a/system/x86/bin/dnsmasq b/system/x86/bin/dnsmasq deleted file mode 100755 index a5d3cc5..0000000 Binary files a/system/x86/bin/dnsmasq and /dev/null differ diff --git a/system/x86/bin/linker b/system/x86/bin/linker deleted file mode 100755 index d834765..0000000 Binary files a/system/x86/bin/linker and /dev/null differ diff --git a/system/x86/bin/linker64 b/system/x86/bin/linker64 deleted file mode 100755 index 728ca6d..0000000 Binary files a/system/x86/bin/linker64 and /dev/null differ diff --git a/system/x86/bin/mksh b/system/x86/bin/mksh deleted file mode 100755 index 9bc591d..0000000 Binary files a/system/x86/bin/mksh and /dev/null differ diff --git a/system/x86/bin/sh b/system/x86/bin/sh deleted file mode 120000 index c3fa810..0000000 --- a/system/x86/bin/sh +++ /dev/null @@ -1 +0,0 @@ -busybox \ No newline at end of file diff --git a/system/x86/etc/group b/system/x86/etc/group deleted file mode 100644 index 7296ccb..0000000 --- a/system/x86/etc/group +++ /dev/null @@ -1,2 +0,0 @@ -root:x:0: -system:!:1000:system diff --git a/system/x86/etc/hosts b/system/x86/etc/hosts deleted file mode 100644 index 0c4db27..0000000 --- a/system/x86/etc/hosts +++ /dev/null @@ -1,2 +0,0 @@ -127.0.0.1 localhost -::1 ip6-localhost diff --git a/system/x86/etc/ld.config.28.txt b/system/x86/etc/ld.config.28.txt deleted file mode 100644 index 1da5840..0000000 --- a/system/x86/etc/ld.config.28.txt +++ /dev/null @@ -1,15 +0,0 @@ -# -# Bionic loader config file. -# - -dir.system = /system/bin/ -dir.system = /system/xbin/ - -[system] -namespace.default.isolated = false -namespace.default.search.paths = /system/${LIB} -namespace.default.permitted.paths = /system/${LIB} -namespace.default.permitted.paths += /data -namespace.default.asan.search.paths = /system/${LIB} -namespace.default.asan.permitted.paths = /system -namespace.default.asan.permitted.paths += /data diff --git a/system/x86/etc/mkshrc b/system/x86/etc/mkshrc deleted file mode 100644 index 778cf09..0000000 --- a/system/x86/etc/mkshrc +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (c) 2010, 2012, 2013, 2014 -# Thorsten Glaser -# This file is provided under the same terms as mksh. -#- -# Minimal /system/etc/mkshrc for Android -# -# Support: https://launchpad.net/mksh - -if (( USER_ID )); then PS1='$'; else PS1='#'; fi -PS4='[$EPOCHREALTIME] '; PS1='${| - local e=$? - - (( e )) && REPLY+="$e|" - - return $e -}$HOSTNAME:${PWD:-?} '"$PS1 " diff --git a/system/x86/etc/passwd b/system/x86/etc/passwd deleted file mode 100644 index cba8c63..0000000 --- a/system/x86/etc/passwd +++ /dev/null @@ -1,2 +0,0 @@ -root:x:0:0:root:/:/system/bin/sh -system:x:1000:1000:system:/data/data/com.termux/files/home:/data/data/com.termux/files/usr/bin/login diff --git a/system/x86/lib/ld-android.so b/system/x86/lib/ld-android.so deleted file mode 100644 index 1591aca..0000000 Binary files a/system/x86/lib/ld-android.so and /dev/null differ diff --git a/system/x86/lib/libc++.so b/system/x86/lib/libc++.so deleted file mode 100644 index eae6a13..0000000 Binary files a/system/x86/lib/libc++.so and /dev/null differ diff --git a/system/x86/lib/libc.so b/system/x86/lib/libc.so deleted file mode 100644 index 6431384..0000000 Binary files a/system/x86/lib/libc.so and /dev/null differ diff --git a/system/x86/lib/libc_malloc_debug.so b/system/x86/lib/libc_malloc_debug.so deleted file mode 100644 index 55e29de..0000000 Binary files a/system/x86/lib/libc_malloc_debug.so and /dev/null differ diff --git a/system/x86/lib/libc_malloc_hooks.so b/system/x86/lib/libc_malloc_hooks.so deleted file mode 100644 index a462811..0000000 Binary files a/system/x86/lib/libc_malloc_hooks.so and /dev/null differ diff --git a/system/x86/lib/libcutils.so b/system/x86/lib/libcutils.so deleted file mode 100644 index 32b955c..0000000 Binary files a/system/x86/lib/libcutils.so and /dev/null differ diff --git a/system/x86/lib/libdl.so b/system/x86/lib/libdl.so deleted file mode 100644 index 0972879..0000000 Binary files a/system/x86/lib/libdl.so and /dev/null differ diff --git a/system/x86/lib/libicuuc.so b/system/x86/lib/libicuuc.so deleted file mode 100644 index 99aaa1a..0000000 Binary files a/system/x86/lib/libicuuc.so and /dev/null differ diff --git a/system/x86/lib/liblog.so b/system/x86/lib/liblog.so deleted file mode 100644 index 3745c98..0000000 Binary files a/system/x86/lib/liblog.so and /dev/null differ diff --git a/system/x86/lib/libm.so b/system/x86/lib/libm.so deleted file mode 100644 index 3d5dcee..0000000 Binary files a/system/x86/lib/libm.so and /dev/null differ diff --git a/system/x86/lib/libnetd_client.so b/system/x86/lib/libnetd_client.so deleted file mode 100644 index 19f620a..0000000 Binary files a/system/x86/lib/libnetd_client.so and /dev/null differ diff --git a/system/x86/lib64/ld-android.so b/system/x86/lib64/ld-android.so deleted file mode 100644 index f0de289..0000000 Binary files a/system/x86/lib64/ld-android.so and /dev/null differ diff --git a/system/x86/lib64/libc++.so b/system/x86/lib64/libc++.so deleted file mode 100644 index 4318f18..0000000 Binary files a/system/x86/lib64/libc++.so and /dev/null differ diff --git a/system/x86/lib64/libc.so b/system/x86/lib64/libc.so deleted file mode 100644 index 90e3fea..0000000 Binary files a/system/x86/lib64/libc.so and /dev/null differ diff --git a/system/x86/lib64/libc_malloc_debug.so b/system/x86/lib64/libc_malloc_debug.so deleted file mode 100644 index f424b52..0000000 Binary files a/system/x86/lib64/libc_malloc_debug.so and /dev/null differ diff --git a/system/x86/lib64/libc_malloc_hooks.so b/system/x86/lib64/libc_malloc_hooks.so deleted file mode 100644 index 6b6aa98..0000000 Binary files a/system/x86/lib64/libc_malloc_hooks.so and /dev/null differ diff --git a/system/x86/lib64/libdl.so b/system/x86/lib64/libdl.so deleted file mode 100644 index 6894ba6..0000000 Binary files a/system/x86/lib64/libdl.so and /dev/null differ diff --git a/system/x86/lib64/libicuuc.so b/system/x86/lib64/libicuuc.so deleted file mode 100644 index 77a4592..0000000 Binary files a/system/x86/lib64/libicuuc.so and /dev/null differ diff --git a/system/x86/lib64/liblog.so b/system/x86/lib64/liblog.so deleted file mode 100644 index 746a7f1..0000000 Binary files a/system/x86/lib64/liblog.so and /dev/null differ diff --git a/system/x86/lib64/libm.so b/system/x86/lib64/libm.so deleted file mode 100644 index 4c6d8c5..0000000 Binary files a/system/x86/lib64/libm.so and /dev/null differ diff --git a/system/x86/lib64/libnetd_client.so b/system/x86/lib64/libnetd_client.so deleted file mode 100644 index 8bbcbc9..0000000 Binary files a/system/x86/lib64/libnetd_client.so and /dev/null differ diff --git a/system/x86/usr/icu/icudt60l.dat b/system/x86/usr/icu/icudt60l.dat deleted file mode 100644 index 0d1232a..0000000 Binary files a/system/x86/usr/icu/icudt60l.dat and /dev/null differ diff --git a/system/x86/usr/share/zoneinfo/tzdata b/system/x86/usr/share/zoneinfo/tzdata deleted file mode 100644 index 5c17a8b..0000000 Binary files a/system/x86/usr/share/zoneinfo/tzdata and /dev/null differ diff --git a/system/x86/usr/share/zoneinfo/tzlookup.xml b/system/x86/usr/share/zoneinfo/tzlookup.xml deleted file mode 100644 index 43dfb98..0000000 --- a/system/x86/usr/share/zoneinfo/tzlookup.xml +++ /dev/null @@ -1,926 +0,0 @@ - - - - Europe/Andorra - - - Asia/Dubai - - - Asia/Kabul - - - America/Antigua - - - America/Anguilla - - - Europe/Tirane - - - Asia/Yerevan - - - Africa/Luanda - - - Antarctica/McMurdo - Antarctica/DumontDUrville - Antarctica/Casey - Antarctica/Davis - Antarctica/Mawson - Antarctica/Vostok - Antarctica/Syowa - Antarctica/Troll - Antarctica/Rothera - Antarctica/Palmer - - - America/Argentina/Buenos_Aires - America/Argentina/Cordoba - America/Argentina/Salta - America/Argentina/Jujuy - America/Argentina/Tucuman - America/Argentina/Catamarca - America/Argentina/La_Rioja - America/Argentina/San_Juan - America/Argentina/Mendoza - America/Argentina/San_Luis - America/Argentina/Rio_Gallegos - America/Argentina/Ushuaia - - - Pacific/Pago_Pago - - - Europe/Vienna - - - Australia/Sydney - Australia/Melbourne - Australia/Brisbane - Australia/Hobart - Australia/Currie - Australia/Lindeman - Antarctica/Macquarie - Australia/Lord_Howe - Australia/Adelaide - Australia/Broken_Hill - Australia/Darwin - Australia/Perth - Australia/Eucla - - - America/Aruba - - - Europe/Mariehamn - - - Asia/Baku - - - Europe/Sarajevo - - - America/Barbados - - - Asia/Dhaka - - - Europe/Brussels - - - Africa/Ouagadougou - - - Europe/Sofia - - - Asia/Bahrain - - - Africa/Bujumbura - - - Africa/Porto-Novo - - - America/St_Barthelemy - - - Atlantic/Bermuda - - - Asia/Brunei - - - America/La_Paz - - - America/Kralendijk - - - America/Noronha - America/Sao_Paulo - America/Belem - America/Fortaleza - America/Recife - America/Araguaina - America/Maceio - America/Bahia - America/Santarem - America/Manaus - America/Campo_Grande - America/Cuiaba - America/Porto_Velho - America/Boa_Vista - America/Eirunepe - America/Rio_Branco - - - America/Nassau - - - Asia/Thimphu - - - Africa/Gaborone - - - Europe/Minsk - - - America/Belize - - - America/St_Johns - America/Halifax - America/Glace_Bay - America/Moncton - America/Goose_Bay - America/Blanc-Sablon - America/Toronto - America/Nipigon - America/Thunder_Bay - America/Iqaluit - America/Pangnirtung - America/Atikokan - America/Winnipeg - America/Regina - America/Rankin_Inlet - America/Rainy_River - America/Swift_Current - America/Resolute - America/Edmonton - America/Cambridge_Bay - America/Yellowknife - America/Inuvik - America/Dawson_Creek - America/Creston - America/Fort_Nelson - America/Vancouver - America/Whitehorse - America/Dawson - - - Indian/Cocos - - - Africa/Lubumbashi - Africa/Kinshasa - - - Africa/Bangui - - - Africa/Brazzaville - - - Europe/Zurich - - - Africa/Abidjan - - - Pacific/Rarotonga - - - America/Punta_Arenas - America/Santiago - Pacific/Easter - - - Africa/Douala - - - Asia/Shanghai - Asia/Urumqi - - - America/Bogota - - - America/Costa_Rica - - - America/Havana - - - Atlantic/Cape_Verde - - - America/Curacao - - - Indian/Christmas - - - Asia/Nicosia - Asia/Famagusta - - - Europe/Prague - - - Europe/Berlin - Europe/Busingen - - - Africa/Djibouti - - - Europe/Copenhagen - - - America/Dominica - - - America/Santo_Domingo - - - Africa/Algiers - - - America/Guayaquil - Pacific/Galapagos - - - Europe/Tallinn - - - Africa/Cairo - - - Africa/El_Aaiun - - - Africa/Asmara - - - Europe/Madrid - Africa/Ceuta - Atlantic/Canary - - - Africa/Addis_Ababa - - - Europe/Helsinki - - - Pacific/Fiji - - - Atlantic/Stanley - - - Pacific/Pohnpei - Pacific/Kosrae - Pacific/Chuuk - - - Atlantic/Faroe - - - Europe/Paris - - - Africa/Libreville - - - Europe/London - - - America/Grenada - - - Asia/Tbilisi - - - America/Cayenne - - - Europe/Guernsey - - - Africa/Accra - - - Europe/Gibraltar - - - America/Danmarkshavn - America/Scoresbysund - America/Godthab - America/Thule - - - Africa/Banjul - - - Africa/Conakry - - - America/Guadeloupe - - - Africa/Malabo - - - Europe/Athens - - - Atlantic/South_Georgia - - - America/Guatemala - - - Pacific/Guam - - - Africa/Bissau - - - America/Guyana - - - Asia/Hong_Kong - - - America/Tegucigalpa - - - Europe/Zagreb - - - America/Port-au-Prince - - - Europe/Budapest - - - Asia/Jayapura - Asia/Makassar - Asia/Jakarta - Asia/Pontianak - - - Europe/Dublin - - - Asia/Jerusalem - - - Europe/Isle_of_Man - - - Asia/Kolkata - - - Indian/Chagos - - - Asia/Baghdad - - - Asia/Tehran - - - Atlantic/Reykjavik - - - Europe/Rome - - - Europe/Jersey - - - America/Jamaica - - - Asia/Amman - - - Asia/Tokyo - - - Africa/Nairobi - - - Asia/Bishkek - - - Asia/Phnom_Penh - - - Pacific/Kiritimati - Pacific/Enderbury - Pacific/Tarawa - - - Indian/Comoro - - - America/St_Kitts - - - Asia/Pyongyang - - - Asia/Seoul - - - Asia/Kuwait - - - America/Cayman - - - Asia/Almaty - Asia/Qyzylorda - Asia/Aqtau - Asia/Oral - Asia/Aqtobe - Asia/Atyrau - - - Asia/Vientiane - - - Asia/Beirut - - - America/St_Lucia - - - Europe/Vaduz - - - Asia/Colombo - - - Africa/Monrovia - - - Africa/Maseru - - - Europe/Vilnius - - - Europe/Luxembourg - - - Europe/Riga - - - Africa/Tripoli - - - Africa/Casablanca - - - Europe/Monaco - - - Europe/Chisinau - - - Europe/Podgorica - - - America/Marigot - - - Indian/Antananarivo - - - Pacific/Majuro - Pacific/Kwajalein - - - Europe/Skopje - - - Africa/Bamako - - - Asia/Yangon - - - Asia/Choibalsan - Asia/Ulaanbaatar - Asia/Hovd - - - Asia/Macau - - - Pacific/Saipan - - - America/Martinique - - - Africa/Nouakchott - - - America/Montserrat - - - Europe/Malta - - - Indian/Mauritius - - - Indian/Maldives - - - Africa/Blantyre - - - America/Mexico_City - America/Merida - America/Monterrey - America/Matamoros - America/Bahia_Banderas - America/Cancun - America/Chihuahua - America/Hermosillo - America/Mazatlan - America/Ojinaga - America/Tijuana - - - Asia/Kuala_Lumpur - Asia/Kuching - - - Africa/Maputo - - - Africa/Windhoek - - - Pacific/Noumea - - - Africa/Niamey - - - Pacific/Norfolk - - - Africa/Lagos - - - America/Managua - - - Europe/Amsterdam - - - Europe/Oslo - - - Asia/Kathmandu - - - Pacific/Nauru - - - Pacific/Niue - - - Pacific/Auckland - Pacific/Chatham - - - Asia/Muscat - - - America/Panama - - - America/Lima - - - Pacific/Gambier - Pacific/Marquesas - Pacific/Tahiti - - - Pacific/Port_Moresby - Pacific/Bougainville - - - Asia/Manila - - - Asia/Karachi - - - Europe/Warsaw - - - America/Miquelon - - - Pacific/Pitcairn - - - America/Puerto_Rico - - - Asia/Gaza - Asia/Hebron - - - Europe/Lisbon - Atlantic/Madeira - Atlantic/Azores - - - Pacific/Palau - - - America/Asuncion - - - Asia/Qatar - - - Indian/Reunion - - - Europe/Bucharest - - - Europe/Belgrade - - - Asia/Kamchatka - Asia/Anadyr - Asia/Magadan - Asia/Sakhalin - Asia/Srednekolymsk - Asia/Vladivostok - Asia/Ust-Nera - Asia/Yakutsk - Asia/Chita - Asia/Khandyga - Asia/Irkutsk - Asia/Krasnoyarsk - Asia/Novosibirsk - Asia/Barnaul - Asia/Novokuznetsk - Asia/Tomsk - Asia/Omsk - Asia/Yekaterinburg - Europe/Samara - Europe/Astrakhan - Europe/Ulyanovsk - Europe/Saratov - Europe/Moscow - Europe/Volgograd - Europe/Kirov - Europe/Simferopol - Europe/Kaliningrad - - - Africa/Kigali - - - Asia/Riyadh - - - Pacific/Guadalcanal - - - Indian/Mahe - - - Africa/Khartoum - - - Europe/Stockholm - - - Asia/Singapore - - - Atlantic/St_Helena - - - Europe/Ljubljana - - - Arctic/Longyearbyen - - - Europe/Bratislava - - - Africa/Freetown - - - Europe/San_Marino - - - Africa/Dakar - - - Africa/Mogadishu - - - America/Paramaribo - - - Africa/Juba - - - Africa/Sao_Tome - - - America/El_Salvador - - - America/Lower_Princes - - - Asia/Damascus - - - Africa/Mbabane - - - America/Grand_Turk - - - Africa/Ndjamena - - - Indian/Kerguelen - - - Africa/Lome - - - Asia/Bangkok - - - Asia/Dushanbe - - - Pacific/Fakaofo - - - Asia/Dili - - - Asia/Ashgabat - - - Africa/Tunis - - - Pacific/Tongatapu - - - Europe/Istanbul - - - America/Port_of_Spain - - - Pacific/Funafuti - - - Asia/Taipei - - - Africa/Dar_es_Salaam - - - Europe/Kiev - Europe/Uzhgorod - Europe/Zaporozhye - - - Africa/Kampala - - - Pacific/Wake - Pacific/Midway - - - America/New_York - America/Detroit - America/Kentucky/Louisville - America/Kentucky/Monticello - America/Indiana/Indianapolis - America/Indiana/Vincennes - America/Indiana/Winamac - America/Indiana/Marengo - America/Indiana/Petersburg - America/Indiana/Vevay - America/Chicago - America/Indiana/Knox - America/Menominee - America/North_Dakota/Center - America/North_Dakota/New_Salem - America/Indiana/Tell_City - America/North_Dakota/Beulah - America/Denver - America/Boise - America/Phoenix - America/Los_Angeles - America/Anchorage - America/Juneau - America/Yakutat - America/Nome - America/Metlakatla - America/Sitka - Pacific/Honolulu - America/Adak - - - America/Montevideo - - - Asia/Tashkent - Asia/Samarkand - - - Europe/Vatican - - - America/St_Vincent - - - America/Caracas - - - America/Tortola - - - America/St_Thomas - - - Asia/Ho_Chi_Minh - - - Pacific/Efate - - - Pacific/Wallis - - - Pacific/Apia - - - Asia/Aden - - - Indian/Mayotte - - - Africa/Johannesburg - - - Africa/Lusaka - - - Africa/Harare - - - diff --git a/temporary-package-storage/bionic-host_9.0.0-r76-0_aarch64.deb b/temporary-package-storage/bionic-host_9.0.0-r76-0_aarch64.deb new file mode 100644 index 0000000..b6526ec Binary files /dev/null and b/temporary-package-storage/bionic-host_9.0.0-r76-0_aarch64.deb differ diff --git a/temporary-package-storage/bionic-host_9.0.0-r76-0_arm.deb b/temporary-package-storage/bionic-host_9.0.0-r76-0_arm.deb new file mode 100644 index 0000000..b382a52 Binary files /dev/null and b/temporary-package-storage/bionic-host_9.0.0-r76-0_arm.deb differ diff --git a/temporary-package-storage/bionic-host_9.0.0-r76-0_i686.deb b/temporary-package-storage/bionic-host_9.0.0-r76-0_i686.deb new file mode 100644 index 0000000..0ef861e Binary files /dev/null and b/temporary-package-storage/bionic-host_9.0.0-r76-0_i686.deb differ diff --git a/temporary-package-storage/bionic-host_9.0.0-r76-0_x86_64.deb b/temporary-package-storage/bionic-host_9.0.0-r76-0_x86_64.deb new file mode 100644 index 0000000..ed528cb Binary files /dev/null and b/temporary-package-storage/bionic-host_9.0.0-r76-0_x86_64.deb differ diff --git a/temporary-package-storage/boringssl-host_9.0.0-r76-0_aarch64.deb b/temporary-package-storage/boringssl-host_9.0.0-r76-0_aarch64.deb new file mode 100644 index 0000000..f3a7a06 Binary files /dev/null and b/temporary-package-storage/boringssl-host_9.0.0-r76-0_aarch64.deb differ diff --git a/temporary-package-storage/boringssl-host_9.0.0-r76-0_arm.deb b/temporary-package-storage/boringssl-host_9.0.0-r76-0_arm.deb new file mode 100644 index 0000000..8f268f4 Binary files /dev/null and b/temporary-package-storage/boringssl-host_9.0.0-r76-0_arm.deb differ diff --git a/temporary-package-storage/boringssl-host_9.0.0-r76-0_i686.deb b/temporary-package-storage/boringssl-host_9.0.0-r76-0_i686.deb new file mode 100644 index 0000000..2be0e0d Binary files /dev/null and b/temporary-package-storage/boringssl-host_9.0.0-r76-0_i686.deb differ diff --git a/temporary-package-storage/boringssl-host_9.0.0-r76-0_x86_64.deb b/temporary-package-storage/boringssl-host_9.0.0-r76-0_x86_64.deb new file mode 100644 index 0000000..bbba11d Binary files /dev/null and b/temporary-package-storage/boringssl-host_9.0.0-r76-0_x86_64.deb differ diff --git a/temporary-package-storage/iputils-host_9.0.0-r76-0_aarch64.deb b/temporary-package-storage/iputils-host_9.0.0-r76-0_aarch64.deb new file mode 100644 index 0000000..b3ee930 Binary files /dev/null and b/temporary-package-storage/iputils-host_9.0.0-r76-0_aarch64.deb differ diff --git a/temporary-package-storage/iputils-host_9.0.0-r76-0_arm.deb b/temporary-package-storage/iputils-host_9.0.0-r76-0_arm.deb new file mode 100644 index 0000000..cfdeb24 Binary files /dev/null and b/temporary-package-storage/iputils-host_9.0.0-r76-0_arm.deb differ diff --git a/temporary-package-storage/iputils-host_9.0.0-r76-0_i686.deb b/temporary-package-storage/iputils-host_9.0.0-r76-0_i686.deb new file mode 100644 index 0000000..eb5b9f5 Binary files /dev/null and b/temporary-package-storage/iputils-host_9.0.0-r76-0_i686.deb differ diff --git a/temporary-package-storage/iputils-host_9.0.0-r76-0_x86_64.deb b/temporary-package-storage/iputils-host_9.0.0-r76-0_x86_64.deb new file mode 100644 index 0000000..e0a15d5 Binary files /dev/null and b/temporary-package-storage/iputils-host_9.0.0-r76-0_x86_64.deb differ diff --git a/temporary-package-storage/mksh-host_9.0.0-r76-0_aarch64.deb b/temporary-package-storage/mksh-host_9.0.0-r76-0_aarch64.deb new file mode 100644 index 0000000..fad8655 Binary files /dev/null and b/temporary-package-storage/mksh-host_9.0.0-r76-0_aarch64.deb differ diff --git a/temporary-package-storage/mksh-host_9.0.0-r76-0_arm.deb b/temporary-package-storage/mksh-host_9.0.0-r76-0_arm.deb new file mode 100644 index 0000000..cc1c156 Binary files /dev/null and b/temporary-package-storage/mksh-host_9.0.0-r76-0_arm.deb differ diff --git a/temporary-package-storage/mksh-host_9.0.0-r76-0_i686.deb b/temporary-package-storage/mksh-host_9.0.0-r76-0_i686.deb new file mode 100644 index 0000000..a686592 Binary files /dev/null and b/temporary-package-storage/mksh-host_9.0.0-r76-0_i686.deb differ diff --git a/temporary-package-storage/mksh-host_9.0.0-r76-0_x86_64.deb b/temporary-package-storage/mksh-host_9.0.0-r76-0_x86_64.deb new file mode 100644 index 0000000..7207063 Binary files /dev/null and b/temporary-package-storage/mksh-host_9.0.0-r76-0_x86_64.deb differ diff --git a/temporary-package-storage/toybox-host_9.0.0-r76-0_aarch64.deb b/temporary-package-storage/toybox-host_9.0.0-r76-0_aarch64.deb new file mode 100644 index 0000000..6f03ad1 Binary files /dev/null and b/temporary-package-storage/toybox-host_9.0.0-r76-0_aarch64.deb differ diff --git a/temporary-package-storage/toybox-host_9.0.0-r76-0_arm.deb b/temporary-package-storage/toybox-host_9.0.0-r76-0_arm.deb new file mode 100644 index 0000000..b391e6f Binary files /dev/null and b/temporary-package-storage/toybox-host_9.0.0-r76-0_arm.deb differ diff --git a/temporary-package-storage/toybox-host_9.0.0-r76-0_i686.deb b/temporary-package-storage/toybox-host_9.0.0-r76-0_i686.deb new file mode 100644 index 0000000..c473a22 Binary files /dev/null and b/temporary-package-storage/toybox-host_9.0.0-r76-0_i686.deb differ diff --git a/temporary-package-storage/toybox-host_9.0.0-r76-0_x86_64.deb b/temporary-package-storage/toybox-host_9.0.0-r76-0_x86_64.deb new file mode 100644 index 0000000..5336daf Binary files /dev/null and b/temporary-package-storage/toybox-host_9.0.0-r76-0_x86_64.deb differ