Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ARM5 support? #676

Closed
LsHallo opened this issue Aug 12, 2020 · 13 comments
Closed

ARM5 support? #676

LsHallo opened this issue Aug 12, 2020 · 13 comments
Labels

Comments

@LsHallo
Copy link

LsHallo commented Aug 12, 2020

Is your feature request related to a problem? Please describe.

I've tried to use tailscale on an old buffalo nas (LS-WXL). It runs an armel chip and tailscale does not seem to support armel.

Describe the solution you'd like

Have armel support

Describe alternatives you've considered

Build it myself. But is gonna take a long time with a single core and 450MB RAM.

@bradfitz
Copy link
Member

Looks like its CPU is "Marvell 88F5182 ARM".

Per https://www.insidegadgets.com/wp-content/uploads/2014/06/88F5182.pdf,

It is based on the Marvell Feroceon CPU core, which is fully compliant with the ARMv5TE.

You could cross-compile it from your desktop:

$ GOARCH=arm GOARM=5 GOOS=linux go install tailscale.com/cmd/tailscale{,d}

Then copy over the '~/go/bin/linux_arm/tailscale*` binaries.

@bradfitz
Copy link
Member

@danderson, another variant perhaps, to go along with GO386=387?

@bradfitz bradfitz added L2 Few Likelihood P5 Halts deployment Priority level labels Aug 12, 2020
@LsHallo
Copy link
Author

LsHallo commented Aug 12, 2020

I'm not super familiar with go and I'm getting this error:

lshallo@LINUX-SRV:~$ GOARCH=arm GOARM=5 GOOS=linux go install tailscale.com/cmd/tailscale{,d}
go/src/tailscale.com/cmd/tailscale/cli/cli.go:20:2: cannot find package "github.com/peterbourgon/ff/v2/ffcli" in any of:
        /usr/lib/go-1.14/src/github.com/peterbourgon/ff/v2/ffcli (from $GOROOT)
        /home/lshallo/go/src/github.com/peterbourgon/ff/v2/ffcli (from $GOPATH)
lshallo@LINUX-SRV:~$ go version
go version go1.14.7 linux/amd64

@bradfitz
Copy link
Member

@LsHallo, looks like it's not using Go modules.

Try also setting GO111MODULE=on or first make a temp directory like:

$ mkdir /tmp/foo
$ cd /tmp/foo
$ go mod init foo.com
$ GOARCH=arm GOARM=5 GOOS=linux go build -o tailscale tailscale.com/cmd/tailscale
$ GOARCH=arm GOARM=5 GOOS=linux go build -o tailscaled tailscale.com/cmd/tailscaled

@LsHallo
Copy link
Author

LsHallo commented Aug 12, 2020

Ok seems like it worked. Where would i put the binaries and how do install them?

@bradfitz
Copy link
Member

No clue. You asked for binaries and we helped you get binaries. :) At this point it's up to you as we don't have or support that NAS yet. People have got Tailscale working on Synology and QNAP but even those aren't officially supported yet.

Maybe Google around. scp them somewhere? Do you have root already?

@LsHallo
Copy link
Author

LsHallo commented Aug 12, 2020

Yes it is running debian and not the default nas os. Transferring them is no problem. I will take a look.
Is there any service definition files or something like that i can copy?

@bradfitz bradfitz changed the title armel support? ARM5 support? Aug 12, 2020
@bradfitz
Copy link
Member

Is there any service definition files or something like that i can copy?

See https://github.com/tailscale/tailscale/tree/main/cmd/tailscaled for:

https://github.com/tailscale/tailscale/blob/main/cmd/tailscaled/tailscaled.service
https://github.com/tailscale/tailscale/blob/main/cmd/tailscaled/tailscaled.defaults

@danderson danderson added the T5 Usability Issue type label Aug 14, 2020
@gergamel
Copy link

gergamel commented Aug 28, 2020

This fails to build for me. It seems like it might be an issue with golang.org/x/crypto/poly1305 on armv5. I can't find any open issues here or under the main go repo.

I've been pretty successfully cross-compiling other go projects for armv5, but I'm not an expert, so I might be making a basic mistake. Please let me know if you think I should raise it in the main repo.

$ GO111MODULE=on GOOS=linux GOARCH=arm GOARM=5 go build -o tailscale tailscale.com/cmd/tailscale
# vendor/golang.org/x/crypto/poly1305
/usr/local/go/src/vendor/golang.org/x/crypto/poly1305/sum_noasm.go:10:7: undefined: newMAC

I tried updating the dependancy in go.mod to golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a, but there was no change:

Go Version:

$ go version
go version go1.15 linux/amd64

Go ENV:

$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/admin/.cache/go-build"
GOENV="/home/admin/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/admin/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/admin/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/admin/git/tailscale/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build552945536=/tmp/go-build -gno-record-gcc-switches"

@bradfitz
Copy link
Member

@gergamel, it worked for me just now. Same host OS/arch/Go version/command. I suspect you have a hodgepodge of Go versions on disk and both in use. Maybe you have GOROOT set, which is often dangerous.

Maybe the golang-nuts mailing list can help.

@gergamel
Copy link

Yeah, I've just tried it on a different machine (same host OS/arch etc..) and it worked fine. Clearly machine-specific, so I won't add any more noise here. Thanks Brad.

@esrrhs
Copy link

esrrhs commented Oct 4, 2020

same problem, and I delete /usr/local/go directory and reinstall. it worked

@DentonGentry DentonGentry added T0 New feature Issue type and removed T5 Usability Issue type labels May 20, 2021
@DentonGentry
Copy link
Contributor

At this point I don't expect to regularly build ARMv5 binaries, current products are mostly ARMv7 or later. The set of devices for which ARMv5 binaries would be useful is expected to get smaller each year. The instructions in this issue will let people build for ARMv5 if needed, and will be discoverable even after the issue is closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants