Unable to run on ARM 7L #371
Labels
No labels
AdminAPI
Bug
Check AWS
CI
Correctness
Critical
Documentation
Ideas
Improvement
Low priority
Newcomer
Performance
S3 Compatibility
Testing
Usability
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Deuxfleurs/garage#371
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hi there and thank you for your work! \o/
I just tried running Garage version 0.7.3 on a synology NAS without much success, details included below.
Disclaimer: I'll try my best but be advised: I have no experience at all running stuff on ARM arch specifically or debugging binaries in general. I might include useless garbage and/or exclude important information.
I'm noticing just now "armv6l" in the download link, the machine i'm trying to use being 7L i'm guessing that has something to do with the binary not running... No idea what to do from there though.
Machine info
Synology DS218J
CPU Marvell Armada 385 88F6820
Running and crashing
Using Garage 0.7.3 linux/arm build downloaded from https://garagehq.deuxfleurs.fr/_releases/v0.7.3/armv6l-unknown-linux-musleabihf/garage
Hi @rob-air, thanks for your detailed report on this issue.
Looking at your logs, I think the issue is not about armv6l vs. armv7l, but more about your kernel being too old. Indeed the binary itself seems to run correctly, but the issue showed up when
Instant::now
was called. This function is a time-related function that tries to grab a kernel timer so that time measurements can be done in the application. Apparently when Garage tries to grab such a timer, the kernel returns an "invalid argument" error, which I suspect is because the Rust standard library is using some more recent call semantics that your kernel does not support (FYI, Linux 3.10 is from 2013).Do you have an option to try updating your Synology NAS to run a more recent kernel and see if that fixes the issue?
Another option would be to try to build Garage yourself using
cargo build
, so as to produce a build that is able to call into your system Glibc instead of using Musl. This might help produce a build that knows the capabilities of your kernel and doesn't try to call functions it doesn't have, but it means doing the build on the Synology NAS itself, which will probably extremely long (and also have a significant chance of failure).Hi @lx, thanks for the quick reply and insights.
Yes, this kernel is a very dusty one... but unfortunately I'm pretty reluctant to update it, not to mention quite scared of the task. This kernel is maintained by synology and they (obviously) don't follow upstream updates very assiduously but they release security update patches when needed. I have no idea how the poor thing would handle a forcibly updated kernel, so this might be an issue big enough for me to postpone it into eternity.
So... I looked around and ended up trying to cross-compile garage from my laptop (Debian 11) targeting the NAS arch; without much success... yet. Not giving up that early but I have to admit this is a pretty deep rabbit hole for a first-timer.
I followed this for the cross-compilation https://github.com/japaric/rust-cross, and it's working as expected, but I end up with a missing glibc library when executing the binary on the NAS.
If you've got some good quality guides or docs at hand regarding this topic, I'll gladly take it.
I also tried compiling from the NAS itself but that seems to be an even darker hole, too many missing tools on the thing and too shady procedures to even try to figure out how to put them there.
I'll keep trying, and report here if I have something new to tell.
I'm closing this issue for now as I don't think there is much we can do on our side. But please do keep us updated if you manage to compile a working binary for your platform!