Linux tunneler on armv6?

I’m trying to build ziti-edge-tunnel for armv6 (found a Raspberry Pi Zero v1 in my bench stock). Stop me if you know for fact this will never work! I see the arm 32-bit build is for arch armv7 and that must be why I got a segfault (attached strace).

kb@kpizero1:~ $ sudo strace ./ziti-edge-tunnel -h
execve("./ziti-edge-tunnel", ["./ziti-edge-tunnel", "-h"], 0xbef537e4 /* 14 vars */) = 0
brk(NULL)                               = 0x37ec000
uname({sysname="Linux", nodename="kpizero1", ...}) = 0
access("/etc/ld.so.preload", R_OK)      = 0
openat(AT_FDCWD, "/etc/ld.so.preload", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=54, ...}) = 0
mmap2(NULL, 54, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0xb6f1c000
close(3)                                = 0
readlink("/proc/self/exe", "/home/kb/ziti-edge-tunnel", 4096) = 25
openat(AT_FDCWD, "/usr/lib/arm-linux-gnueabihf/libarmmem-v6l.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\250\3\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=9512, ...}) = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f1a000
mmap2(NULL, 73772, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6ed8000
mprotect(0xb6eda000, 61440, PROT_NONE)  = 0
mmap2(0xb6ee9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb6ee9000
close(3)                                = 0
munmap(0xb6f1c000, 54)                  = 0
openat(AT_FDCWD, "/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/tls/v6l/vfp/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/tls/v6l/vfp", 0xbefc1b80) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/tls/v6l/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/tls/v6l", 0xbefc1b80) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/tls/vfp/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/tls/vfp", 0xbefc1b80) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/tls/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/tls", 0xbefc1b80) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/v6l/vfp/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/v6l/vfp", 0xbefc1b80) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/v6l/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/v6l", 0xbefc1b80) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/vfp/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/vfp", 0xbefc1b80) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat64("/home/runner/work/ziti-tunnel-sdk-c/ziti-tunnel-sdk-c/build/lib", 0xbefc1b80) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/v6l/vfp/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/v6l/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/vfp/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/vfp/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "vfp/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=30999, ...}) = 0
mmap2(NULL, 30999, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6f12000
close(3)                                = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\20\222\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=386572, ...}) = 0
mmap2(NULL, 450684, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e69000
mprotect(0xb6ec7000, 61440, PROT_NONE)  = 0
mmap2(0xb6ed6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5d000) = 0xb6ed6000
close(3)                                = 0
openat(AT_FDCWD, "tls/v6l/vfp/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/v6l/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/vfp/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/vfp/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "vfp/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0t]\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=137364, ...}) = 0
mmap2(NULL, 176728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e3d000
mprotect(0xb6e55000, 65536, PROT_NONE)  = 0
mmap2(0xb6e65000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0xb6e65000
mmap2(0xb6e67000, 4696, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6e67000
close(3)                                = 0
openat(AT_FDCWD, "tls/v6l/vfp/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/v6l/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/vfp/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/vfp/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "vfp/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\330\v\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=13864, ...}) = 0
mmap2(NULL, 78020, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e29000
mprotect(0xb6e2c000, 61440, PROT_NONE)  = 0
mmap2(0xb6e3b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0xb6e3b000
close(3)                                = 0
openat(AT_FDCWD, "tls/v6l/vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/v6l/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\20\33\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=30676, ...}) = 0
mmap2(NULL, 94728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6e11000
mprotect(0xb6e17000, 65536, PROT_NONE)  = 0
mmap2(0xb6e27000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0xb6e27000
close(3)                                = 0
openat(AT_FDCWD, "tls/v6l/vfp/libresolv.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/v6l/libresolv.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/vfp/libresolv.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/libresolv.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/vfp/libresolv.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/libresolv.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "vfp/libresolv.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "libresolv.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libresolv.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\220+\0\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=75568, ...}) = 0
mmap2(NULL, 149416, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6dec000
mprotect(0xb6dfe000, 61440, PROT_NONE)  = 0
mmap2(0xb6e0d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0xb6e0d000
mmap2(0xb6e0f000, 6056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6e0f000
close(3)                                = 0
openat(AT_FDCWD, "tls/v6l/vfp/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/v6l/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/vfp/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "tls/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/vfp/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "v6l/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "vfp/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\240\255\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1321488, ...}) = 0
mmap2(NULL, 1390760, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6c98000
mprotect(0xb6dd7000, 61440, PROT_NONE)  = 0
mmap2(0xb6de6000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13e000) = 0xb6de6000
mmap2(0xb6dea000, 6312, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6dea000
close(3)                                = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f10000
set_tls(0xb6f10500)                     = 0
mprotect(0xb6de6000, 8192, PROT_READ)   = 0
mprotect(0xb6e0d000, 4096, PROT_READ)   = 0
mprotect(0xb6e65000, 4096, PROT_READ)   = 0
mprotect(0xb6e27000, 4096, PROT_READ)   = 0
mprotect(0xb6e3b000, 4096, PROT_READ)   = 0
mprotect(0xb6ed6000, 4096, PROT_READ)   = 0
mprotect(0xb6ee9000, 4096, PROT_READ)   = 0
mprotect(0x5c4000, 28672, PROT_READ)    = 0
mprotect(0xb6f1d000, 4096, PROT_READ)   = 0
munmap(0xb6f12000, 30999)               = 0
set_tid_address(0xb6f100a8)             = 1165
set_robust_list(0xb6f100b0, 12)         = 0
rt_sigaction(SIGRTMIN, {sa_handler=0xb6e426a8, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0xb6ccadb0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0xb6e42764, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0xb6ccadb0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
ugetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x4} ---
+++ killed by SIGSEGV +++
Segmentation fault

Success!

kb@kpizero1:~/ziti-tunnel-sdk-c $ (set -x; rm -rf ./build/ && cmake -E make_directory ./build && cmake -DCMAKE_TOOLCHAIN_FILE=./toolchains/default.cmake -DDISABLE_LIBSYSTEMD_FEATURE=ON -S . -B ./build && cmake --build ./build --target bundle --verbose ;)

kb@kpizero1:~/ziti-tunnel-sdk-c $ ./build/programs/ziti-edge-tunnel/ziti-edge-tunnel run-host -h
ziti-edge-tunnel run-host: run Ziti tunnel to host services
usage: ziti-edge-tunnel run-host -i <id.file> [-r N] [-v N]

        -i|--identity <identity>        run with provided identity file (required)
        -I|--identity-dir <dir> load identities from provided directory
        -v|--verbose N  set log level, higher level -- more verbose (default 3)
        -r|--refresh N  set service polling interval in seconds (default 10)
1 Like
kb@kpizero1:~/ziti-tunnel-sdk-c $ cat /proc/cpuinfo 
processor       : 0
model name      : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 997.08
Features        : half thumb fastmult vfp edsp java tls 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7

Hardware        : BCM2835
Revision        : 900093
Serial          : 00000000b80f3a3d
Model           : Raspberry Pi Zero Rev 1.3

kb@kpizero1:~/ziti-tunnel-sdk-c $ cat /etc/os-release 
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

I needed to install Debian packages git, build-essential, cmake.

1 Like

popcorn

I’m watching intently. I’ve been wanting to run Ziti on my RasPi, just haven’t gotten around to it.

You might not have to build it at all if your Pi is armv7 (32 bit) or v8 (64 bit). Those binary builds are pinned to each release. :+1:

1 Like

Hmm, they might be, I have a 2B, two Ws and a 4… I assume the 4 would be armv8 but I’ll have to check them out.

Got one more built on Raspbian (Debian 11 Bulleseye) running on the Pi Zero v1.3 ziti-router for armhf i.e. armv6.

kb@kpizero1:~ $ file ./ziti/linux-build/ziti-router
./ziti/linux-build/ziti-router: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, Go BuildID=s-sP2o3-fa2hW7Ua5gdY/xNW-j_qhEzDiKzeb6mq_/ypz0-tyx5vdpRTi92fmE/E-Psq7Erp4S0fiCARSSz, BuildID[sha1]=cf6989d3667879c5a383e2cc5d78ad5c852f8723, not stripped

kb@kpizero1:~ $ ./ziti/linux-build/ziti-router version
v0.0.0

Now to see if it actually performs at all with only 512MB of ram. :grimacing:

1 Like

I have ziti binary run on raspberry 2. And we have our binary running on the field on raspberry 3.

Raspberry 4 is 64bit armv8. that is also working on my setup.

1 Like

Although Go build succeeded I ran into a problem with ziti-router run in another topic Ziti-router fatal error on startup