Cardano node/cli arm64 binaries

Hi everyone,

please find a link to the cardano-node and cardano-cli binaries compiled for arm64 architecture.

cardano-cli [aarch64] - 1.26.2
cardano-node [aarch64] - 1.26.2
cardano-cli [aarch64] - 1.26.1
cardano-node [aarch64] - 1.26.1
cardano-cli [aarch64] - 1.26.0
cardano-node [aarch64] - 1.26.0

libsodium [aarch64] - (HKIO)

Hoping this would help those of you needing them. I’ll try to be more reactive next release.
Also I will publish the future ones on our website (that is getting finished as I write) with proper details and checksum. As well as plenty of other resources.

Enjoy !

1 Like

Here is the new 1.27.0 ready for use. It have been signed off as ready for production by everyone.

cardano-cli [aarch64] - 1.27.0
cardano-node [aarch64] - 1.27.0

Website still in development, but getting there. We are just trying to do things well.
You can already visit to see evolution (scroll down).
https://www.myadanode.com

Sign off

Role Approval
Technical Lead :heavy_check_mark:
QA Engineer :heavy_check_mark:
Ops :heavy_check_mark:
Release Manager :heavy_check_mark:

Thank you!

Our pleasure mate !
Happy it helps someone :wink:

1 Like

Hi! I downloaded cardano-cli from your source. I did cardano-cli --version, and I got
./cardano-cli: error while loading shared libraries: libsodium.so.23: cannot open shared object file: No such file or directory. Why is this?

I fixed, installing the missing libsodium, but now I’m getting
./cardano-cli: /lib/aarch64-linux-gnu/atomics/libm.so.6: version 'GLIBC_2.29' not found (required by ./cardano-cli)

Hi @DiazRock

So you have fixed the first issue yourself, yes libsodium is required for cardano to run. And you also found that I’m also ditributing it it seems. So on this part, all good.

For your glibc 2.29 error, I would bet you are using a “redhat clone” linux (RHEL, Centos, Amazon Linux 2 etc …). I got no issues with those and I’m actually a big fan of AML2 in the AWS environment but they are compiled using a sub 2.29 version on glibc.
This mean that my compilations are new ready for them, sorry.
I didn’t choose this status, I was originally myself based one AML2, but there is one dependency that absolutely need 2 version .29+ of glibc (ghc or cabal, can’t honestly remember which one).
Changing glibc in an OS is a big deal and it would be useless since the result would still need glibc 2.29+ to be installed …
Long story short, Debian, Ubuntu are both all good to go from scratch on their rescent versions. There is not much of a change from other linux flavor anyway, just to get used to apt and dpkg instead of yum and rpm … no big deal really.

BUT, thank you for this feedback that is definitely something I need to document. I’m writting some doco as we speak, when my job permit me to have some free time. I’ll be releasing article on this.

Hope that helps you, if you need more info please reach again or private msg me !

1 Like

Hi @kaverne. I will share with you my /etc/os-release:

NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

Yep ok, you can check the glibc version used to compile your system with
ldd --version

My details are

OS version

# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

glibc version

# ldd --version
ldd (Ubuntu GLIBC 2.31-0ubuntu9.2) 2.31

So I guess you better of upgrading to Ubuntu 20, or any version that validate glibc

I ended up doing do-release-upgrade. Now I have another issue :disappointed:. Ok, just keep working on.

What’s your issue ? Can we help ?

I made nslookup relays-new.cardano-testnet.iohkdev.io and pick one of the result ips. Then, I get these from the node logs:

[relay1-0:cardano.node.IpSubscription:Error:61] [2021-05-31 00:22:43.53 UTC] IPs: 0.0.0.0:0 [18.159.64.253:3001,172.30.0.131:16443] Application Exception: 18.159.64.253:3001 
HeaderError 
(At (Block {blockPointSlot = SlotNo 1598400, blockPointHash = 02b1c561715da9e540411123a6135ee319b02f60b9a11a603d3305556c04329f})) (HeaderProtocolError (HardForkValidationErrFromEra S (Z (WrapValidationErr {unwrapValidationErr = ChainTransitionError [OverlayFailure (VRFKeyBadNonce (Nonce "81e47a19e6b29b0a65b9591762ce5143ed30d0261e5d24a3201752506b20f15c") (SlotNo 1598400) (Nonce "e209c5d22fe51d58485759cc9edca776cb505c1afb2ba5f98f8a6a979a7589e4") (CertifiedVRF {certifiedOutput = OutputVRF {getOutputVRFBytes ="t\231\145\196\165ZhA\137S\209{Z<1\194\225]Yq\235\&7#!\161:\147\129Q\236x\207\195z\170\155\182mw\141\182\135\249\209\178\134\&3_:\167b\135\204\&4\205Z\172\230\163\226\EM\DC2\226\182"}, 
certifiedProof = CertPraosVRF "!\202\180:L)*\DC2\250\SOH\141V \240Z\EOT\n\183\245\141\SUB\191\ETXQ\"\EOT\155A\SOH'\160LD\253\204Z\249\129/i\178\237p\155\140\240\142\183)LG\137q\248\DLE\DC1\130W\183\162\149\DEL6=[5\225/18\154\192=\242\255\181\f\190\190\t"}))]})))) (Tip (SlotNo 1598359) 
1bd5f00688e0dcbd0a33ef7eac0086cf13dc6dff4d9a1292877c2c02f0c77ef6 (BlockNo 1597092)) (Tip (SlotNo 28051319) ea2709c57340661ae293695122d2bdeba90e7b2282c5e29c7164b573f6e9d230 (BlockNo 2629218))
[relay1-0:cardano.node.IpSubscription:Info:61] [2021-05-31 00:22:43.53 UTC] IPs: 0.0.0.0:0 [18.159.64.253:3001,172.30.0.131:16443] Closed socket to 18.159.64.253:3001
[relay1-0:cardano.node.ErrorPolicy:Warning:52] [2021-05-31 00:22:43.53 UTC] IP 18.159.64.253:3001 ErrorPolicySuspendPeer 
(Just 
(ApplicationExceptionTrace (HeaderError (At (Block {blockPointSlot = SlotNo 1598400, blockPointHash = 02b1c561715da9e540411123a6135ee319b02f60b9a11a603d3305556c04329f})) (HeaderProtocolError (HardForkValidationErrFromEra S (Z (WrapValidationErr {unwrapValidationErr = ChainTransitionError [OverlayFailure (VRFKeyBadNonce (Nonce "81e47a19e6b29b0a65b9591762ce5143ed30d0261e5d24a3201752506b20f15c") (SlotNo 1598400) (Nonce "e209c5d22fe51d58485759cc9edca776cb505c1afb2ba5f98f8a6a979a7589e4") (CertifiedVRF {certifiedOutput = OutputVRF {getOutputVRFBytes = "t\231\145\196\165ZhA\137S\209{Z<1\194\225]Yq\235\&7#!\161:\147\129Q\236x\207\195z\170\155\182mw\141\182\135\249\209\178\134\&3_:\167b\135\204\&4\205Z\172\230\163\226\EM\DC2\226\182"}, certifiedProof = CertPraosVRF "!\202\180:L)*\DC2\250\SOH\141V\240Z\EOT\n\183\245\141\SUB\191\ETXQ\"\EOT\155A\SOH'\160LD\253\204Z\249\129/i\178\237p\155\140\240\142\183)LG\137q\248\DLE\DC1\130W\183\162\149\DEL6=[5\225/18\154\192=\242\255\181\f\190\190\t"}))]})))) 
(Tip (SlotNo 1598359)1bd5f00688e0dcbd0a33ef7eac0086cf13dc6dff4d9a1292877c2c02f0c77ef6 (BlockNo 1597092)) (Tip (SlotNo 28051319)ea2709c57340661ae293695122d2bdeba90e7b2282c5e29c7164b573f6e9d230 (BlockNo 2629218))))) 200s 200s

It’s more related to this discussion

This is the topology file of my node:

{
    "Producers": [
      {
        "addr": "18.159.64.253",
        "port": 3001,
        "valency": 1
      },
  {
        "addr": "172.30.0.131",
        "port": 16443,
        "valency": 1
      }
     ]
  }

Ok, I can see you got it resolved, awesome.

Can I ask why you are running K8s to host 3/4 cardano-node daemon ?
I turned the problem in all directions as I’m using containers extensively at work too but couldn’t find a use case here. It’s not economically interesting, neither practical on the infrastructure side of things.
But I would be very happy to be proven wrong :wink:

The only use case I could defend is if you already have a container hosting solution available and really redondant. Them cardano-node wouldn’t trigger much costs on it except for RAM chewing.

Can I ask why you are running K8s to host 3/4 cardano-node daemon ?

I moved from a local environment to one with vps, and aws linux machines. Using docker-compose in my local environment was easy, but I didn’t know how to translate it to multiple machines work. I decided to move to docker swarm instead, but I got an issue using docker swarm. Then I founded some tutorials of the community about cardano-nodes using kubernetes, here and here. So, I decide to took that way. I didn’t try to use docker in different machines at the same time, is this an option?

One of the arguments, its about how to get alert about a shutdown of one of the nodes.

Hy !

Sorry for my newbi question, but what to do after downloading your file ?

Should I replace it with the cardano-cli.cabal (on my cardano-cli folder) and ad the extenstion .cabal at it and then run cabal build cardano-cli ? Or Am I missing something obvious?

Regards :slight_smile:

@kaverne what if I want the 1.25 version? Where can I find it?

Sorry mate I got very busy, do you still need it ? I can compile it for you if you need it, it’s all autoamted so it would just take about 1h to do

1 Like