From ca2b3dc4fc29aa161d18d72e4494641e4b180364 Mon Sep 17 00:00:00 2001 From: quydang <81231812+quydang04@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:14:13 +0700 Subject: [PATCH] Support ARMv6 (#1582) --- .github/workflows/docker.yml | 4 ++-- .github/workflows/release.yml | 31 +++++++++++++++++++--------- DockerInit.sh | 5 +++++ README.md | 13 ++++++++++++ install.sh | 3 ++- web/translation/translate.vi_VN.toml | 2 +- 6 files changed, 44 insertions(+), 14 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index bb7d2241..b2dc0ca4 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,4 +1,4 @@ -name: Release X-ui dockerhub +name: Release 3X-UI dockerhub on: push: tags: @@ -36,6 +36,6 @@ jobs: with: context: . push: ${{ github.event_name != 'pull_request' }} - platforms: linux/amd64, linux/arm64/v8, linux/arm/v7 + platforms: linux/amd64, linux/arm64/v8, linux/arm/v7, linux/arm/v6 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 857913d0..bcd8f51a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -name: Release 3X-ui +name: Release 3X-UI on: push: @@ -10,7 +10,11 @@ jobs: build: strategy: matrix: - platform: [amd64, arm64, arm] + platform: + - amd64 + - arm64 + - armv7 + - armv6 runs-on: ubuntu-20.04 steps: - name: Checkout repository @@ -20,13 +24,15 @@ jobs: uses: actions/setup-go@v5.0.0 with: go-version: '1.21' - - - name: Install dependencies for arm64 and arm - if: matrix.platform == 'arm64' || matrix.platform == 'arm' + + - name: Install dependencies run: | sudo apt-get update - sudo apt install gcc-aarch64-linux-gnu - if [ "${{ matrix.platform }}" == "arm" ]; then + if [ "${{ matrix.platform }}" == "amd64" ]; then + # Add any amd64 specific dependencies here + elif [ "${{ matrix.platform }}" == "arm64" ]; then + sudo apt install gcc-aarch64-linux-gnu + elif [ "${{ matrix.platform }}" == "armv7" ] || [ "${{ matrix.platform }}" == "armv6" ]; then sudo apt install gcc-arm-linux-gnueabihf fi @@ -37,7 +43,8 @@ jobs: export GOARCH=${{ matrix.platform }} if [ "${{ matrix.platform }}" == "arm64" ]; then export CC=aarch64-linux-gnu-gcc - elif [ "${{ matrix.platform }}" == "arm" ]; then + elif [ "${{ matrix.platform }}" == "armv7" ] || [ "${{ matrix.platform }}" == "armv6" ]; then + export GOARM=7 export CC=arm-linux-gnueabihf-gcc fi go build -o xui-release -v main.go @@ -60,12 +67,16 @@ jobs: wget ${Xray_URL}Xray-linux-arm64-v8a.zip unzip Xray-linux-arm64-v8a.zip rm -f Xray-linux-arm64-v8a.zip - else + elif [ "${{ matrix.platform }}" == "armv7" ]; then wget ${Xray_URL}Xray-linux-arm32-v7a.zip unzip Xray-linux-arm32-v7a.zip rm -f Xray-linux-arm32-v7a.zip + elif [ "${{ matrix.platform }}" == "armv6" ]; then + wget ${Xray_URL}Xray-linux-arm32-v6.zip + unzip Xray-linux-arm32-v6.zip + rm -f Xray-linux-arm32-v6.zip fi - rm -f geoip.dat geosite.dat geoip_IR.dat geosite_IR.dat geoip_VN.dat geosite_VN.dat + rm -f geoip.dat geosite.dat wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat wget -O geoip_IR.dat https://github.com/chocolate4u/Iran-v2ray-rules/releases/latest/download/geoip.dat diff --git a/DockerInit.sh b/DockerInit.sh index c51b6c2c..c62dc77e 100755 --- a/DockerInit.sh +++ b/DockerInit.sh @@ -13,12 +13,17 @@ case $1 in ARCH="arm32-v7a" FNAME="arm32" ;; + armv6) + ARCH="arm32-v6" + FNAME="armv6" + ;; *) ARCH="64" FNAME="amd64" ;; esac + mkdir -p build/bin cd build/bin diff --git a/README.md b/README.md index c902af08..f36b1f88 100644 --- a/README.md +++ b/README.md @@ -383,6 +383,19 @@ XUI_BIN_FOLDER="bin" XUI_DB_FOLDER="/etc/x-ui" go build main.go - AlmaLinux 9+ - Rockylinux 9+ +## Supported Architectures and Devices + +Supports a variety of different architectures and devices. Here are some of the main architectures that we support: + +- **amd64**: This is the most common architecture for personal computers and servers. It supports most modern operating systems. + +- **armv8 / arm64 / aarch64**: This is the architecture for modern mobile and embedded devices, including smartphones and tablets. (Ex: Raspberry Pi 4, Raspberry Pi 3, Raspberry Pi Zero 2/Zero 2 W, Orange Pi 3 LTS,...) + +- **armv7 / arm / arm32**: This is the architecture for older mobile and embedded devices. It is still widely used in many devices. (Ex: Orange Pi Zero LTS, Orange Pi PC Plus, Raspberry Pi 2,...) + +- **armv6 / arm / arm32**: This is the architecture for very old embedded devices. While not as common as before, there are still some devices using this architecture. (Ex: Raspberry Pi 1, Raspberry Pi Zero/Zero W,...) + + ## Preview ![1](./media/1.png) diff --git a/install.sh b/install.sh index c66d6d4f..4926d627 100644 --- a/install.sh +++ b/install.sh @@ -27,7 +27,8 @@ arch3xui() { case "$(uname -m)" in x86_64 | x64 | amd64) echo 'amd64' ;; armv8* | armv8 | arm64 | aarch64) echo 'arm64' ;; - armv7* | armv7 | arm | arm32 ) echo 'arm' ;; + armv7* | armv7 | arm) echo 'armv7' ;; + armv6* | armv6 | arm) echo 'armv6' ;; *) echo -e "${green}Unsupported CPU architecture! ${plain}" && rm -f install.sh && exit 1 ;; esac } diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml index f9871611..362e321c 100644 --- a/web/translation/translate.vi_VN.toml +++ b/web/translation/translate.vi_VN.toml @@ -75,7 +75,7 @@ [pages.index] "title" = "Trạng thái hệ thống" "memory" = "Bộ nhớ" -"hard" = "Đĩa(ổ cứng)" +"hard" = "Dung lượng" "xrayStatus" = "Trạng thái" "stopXray" = "Dừng lại" "restartXray" = "Khởi động lại"