diff --git a/.github/workflows/mikrotik_patch.yml b/.github/workflows/mikrotik_patch.yml index 7c5661a..287a06c 100644 --- a/.github/workflows/mikrotik_patch.yml +++ b/.github/workflows/mikrotik_patch.yml @@ -41,6 +41,10 @@ jobs: with: python-version: '3.11' + - uses: actions/setup-go@v5 + with: + go-version: '>=1.17.0' + - name: Cache Squashfs id: cache-squashfs uses: actions/cache@v4 @@ -53,13 +57,14 @@ jobs: - name: Create Squashfs for option and python3 if: steps.cache-squashfs.outputs.cache-hit != 'true' run: | - sudo wget -O bash -nv https://busybox.net/downloads/binaries/1.31.0-i686-uclibc/busybox_ASH - sudo wget -O busybox -nv https://busybox.net/downloads/binaries/1.31.0-i686-uclibc/busybox - sudo chmod +x busybox - sudo chmod +x bash + cd busybox + sudo make + cd .. sudo mkdir -p ./option-root/bin/ - sudo mv busybox ./option-root/bin/ - sudo mv bash ./option-root/bin/ + sudo cp ./busybox/busybox ./option-root/bin/ + sudo cp ./busybox/bash ./option-root/bin/ + sudo chmod +x ./option-root/bin/busybox + sudo chmod +x ./option-root/bin/bash COMMANDS=$(./option-root/bin/busybox --list) for cmd in $COMMANDS; do sudo ln -sf /pckg/option/bin/busybox ./option-root/bin/$cmd diff --git a/busybox/Makefile b/busybox/Makefile new file mode 100644 index 0000000..3029bc0 --- /dev/null +++ b/busybox/Makefile @@ -0,0 +1,2 @@ +all: + GOOS=linux GOARCH=amd64 go build -ldflags "-w -s -extldflags '-static'" -o bash diff --git a/busybox/busybox b/busybox/busybox new file mode 100644 index 0000000..7807158 Binary files /dev/null and b/busybox/busybox differ diff --git a/busybox/go.mod b/busybox/go.mod new file mode 100644 index 0000000..7b4fd5d --- /dev/null +++ b/busybox/go.mod @@ -0,0 +1,3 @@ +module bash + +go 1.21.5 diff --git a/busybox/main.go b/busybox/main.go new file mode 100644 index 0000000..78c6b50 --- /dev/null +++ b/busybox/main.go @@ -0,0 +1,17 @@ +package main +import ( + "log" + "os" + "os/exec" +) +func main() { + busybox := "busybox" + args := []string{"ash"} + cmd := exec.Command(busybox, args...) + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + log.Fatalf("execv error: %v", err) + } +}