Iotedge: EdgeAgent fails to start on Debian ARM (error while loading shared libraries: libssl.so.1.0.2 )

Created on 31 Jul 2018  ·  9Comments  ·  Source: Azure/iotedge

Expected Behavior

EdgeAgent service should start

Current Behavior

EdgeAgent fails with message "/usr/bin/iotedged: error while loading shared libraries: libssl.so.1.0.2: cannot open shared object file: No such file or directory"

Steps to Reproduce

  1. Install IoT Edge on Debian (ARM) system
  2. Watch it fail

Context (Environment)

Device (Host) Operating System

Debian GNU/Linux 8

Architecture

ARMv7 Processor rev 2 (v7l)

Container Operating System

Moby

Runtime Versions

iotedged

1.0.0 52ef77db24126bf473265fc09c53d35290a2dd6b

Edge Agent

Edge Hub

Docker

Client:
Version: 18.06.0-dev
API version: 1.37
Go version: go1.10.2
Git commit: daf021fe
Built: Wed Jun 27 00:53:52 2018
OS/Arch: linux/arm
Experimental: false
Orchestrator: swarm

Server:
Engine:
Version: dev
API version: 1.37 (minimum version 1.12)
Go version: go1.10.2
Git commit: 9aac187
Built: Tue Jun 26 23:27:27 2018
OS/Arch: linux/arm
Experimental: false

Logs

sudo systemctl status iotedge -l:
● iotedge.service - Azure IoT Edge daemon
Loaded: loaded (/lib/systemd/system/iotedge.service; enabled)
Active: failed (Result: start-limit) since Tue 2018-07-31 13:19:30 GMT; 2h 36min ago
Docs: man:iotedged(8)
Main PID: 596 (code=exited, status=127)

Jul 31 13:19:30 Moxa systemd[1]: iotedge.service: main process exited, code=exited, status=127/n/a
Jul 31 13:19:30 Moxa systemd[1]: Unit iotedge.service entered failed state.
Jul 31 13:19:30 Moxa systemd[1]: iotedge.service holdoff time over, scheduling restart.
Jul 31 13:19:30 Moxa systemd[1]: Stopping Azure IoT Edge daemon...
Jul 31 13:19:30 Moxa systemd[1]: Starting Azure IoT Edge daemon...
Jul 31 13:19:30 Moxa systemd[1]: iotedge.service start request repeated too quickly, refusing to start.
Jul 31 13:19:30 Moxa systemd[1]: Failed to start Azure IoT Edge daemon.
Jul 31 13:19:30 Moxa systemd[1]: Unit iotedge.service entered failed state.

sudo journalctl -u iotedge -f

● iotedge.service - Azure IoT Edge daemon
Loaded: loaded (/lib/systemd/system/iotedge.service; enabled)
Active: failed (Result: start-limit) since Tue 2018-07-31 13:19:30 GMT; 2h 36min ago
Docs: man:iotedged(8)
Main PID: 596 (code=exited, status=127)

Jul 31 13:19:30 Moxa systemd[1]: iotedge.service: main process exited, code=exited, status=127/n/a
Jul 31 13:19:30 Moxa systemd[1]: Unit iotedge.service entered failed state.
Jul 31 13:19:30 Moxa systemd[1]: iotedge.service holdoff time over, scheduling restart.
Jul 31 13:19:30 Moxa systemd[1]: Stopping Azure IoT Edge daemon...
Jul 31 13:19:30 Moxa systemd[1]: Starting Azure IoT Edge daemon...
Jul 31 13:19:30 Moxa systemd[1]: iotedge.service start request repeated too quickly, refusing to start.
Jul 31 13:19:30 Moxa systemd[1]: Failed to start Azure IoT Edge daemon.
Jul 31 13:19:30 Moxa systemd[1]: Unit iotedge.service entered failed state.
root@Moxa:/home/moxa# sudo journalctl -u iotedge -f
-- Logs begin at Tue 2018-07-31 13:19:21 GMT. --
Jul 31 13:19:30 Moxa systemd[1]: Starting Azure IoT Edge daemon...
Jul 31 13:19:30 Moxa systemd[1]: Started Azure IoT Edge daemon.
Jul 31 13:19:30 Moxa iotedged[596]: /usr/bin/iotedged: error while loading shared libraries: libssl.so.1.0.2: cannot open shared object file: No such file or directory
Jul 31 13:19:30 Moxa systemd[1]: iotedge.service: main process exited, code=exited, status=127/n/a
Jul 31 13:19:30 Moxa systemd[1]: Unit iotedge.service entered failed state.
Jul 31 13:19:30 Moxa systemd[1]: iotedge.service holdoff time over, scheduling restart.
Jul 31 13:19:30 Moxa systemd[1]: Stopping Azure IoT Edge daemon...
Jul 31 13:19:30 Moxa systemd[1]: Starting Azure IoT Edge daemon...
Jul 31 13:19:30 Moxa systemd[1]: iotedge.service start request repeated too quickly, refusing to start.
Jul 31 13:19:30 Moxa systemd[1]: Failed to start Azure IoT Edge daemon.

Additional Information

This is running on a Moxa UC8100

Thanks for your help!

customer-reported enhancement iotedge

Most helpful comment

Depending on what libssl is installed on your system (example is for libssl.so.1.0.0), the following workaround (the soft-linking mentioned by @darobs ) may work, but is not recommended for anything but testing:

cd /lib/arm-linux-gnueabihf/
ln -s libssl.so.1.0.0 libssl.so.1.0.2
ln -s libcrypto.so.1.0.0 libcrypto.so.1.0.2

All 9 comments

Hello @scottjreece,

We don't have packages that support Debian 8 systems yet, but this is something in progress.

Hi @darobs, thanks for your reply. I realize that this isn't supported but
on the other thread I mentioned this on (
https://github.com/MicrosoftDocs/azure-docs/issues/11046#issuecomment-408525513),
you said that you might be able to help me find a workaround and that I
should create a new issue here for it. It looks like if I can 'trick' the
Edge Agent into looking in the right place for this SSL library that it
should work. What are your thoughts? Any help is very much appreciated.

On Tue, Jul 31, 2018 at 10:26 AM David Robson notifications@github.com
wrote:

Hello @scottjreece https://github.com/scottjreece,

We don't have packages that support Debian 8 systems yet, but this is
something in progress.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Azure/iotedge/issues/101#issuecomment-409302070, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACCK4t8YHR-kR2Fldw0BJVqckShJMgpEks5uMJNhgaJpZM4VojZW
.

Thank you for reminding me.

Just soft-linking the libraries (libssl and libcrypto) might work if the openssl version matches the target version we build on that platform. We're building against openssl version 1.0.2 in the ARM32 packages, so the version installed on your system has to be 1.0.2.

Likewise, installing openssl1.0.2 (named as 1.0.2) will allow the iotedged to run.

If you have a cross-compiler set up for your system, then building the packages for Debian 8 can be done.

None of these are awesome work-arounds, which is why we're working on adding more distributions to our packaging releases.

I'm not sure exactly how to do any of that as I'm not very familiar with
Linux, but you've at least given me a few directions to research so thank
you. I'll post here if I get anything to work.

On Tue, Jul 31, 2018 at 10:57 AM David Robson notifications@github.com
wrote:

Thank you for reminding me.

Just soft-linking the libraries (libssl and libcrypto) might work if the
openssl version matches the target version we build on that platform. We're
building against openssl version 1.0.2 in the ARM32 packages, so the
version installed on your system has to be 1.0.2.

Likewise, installing openssl1.0.2 (named as 1.0.2) will allow the iotedged
to run.

If you have a cross-compiler set up for your system, then building the
packages for Debian 8 can be done.

None of these are awesome work-arounds, which is why we're working on
adding more distributions to our packaging releases.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Azure/iotedge/issues/101#issuecomment-409311859, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACCK4sxwjoUOz_8GBr6EyTt1eXkiUhDZks5uMJqOgaJpZM4VojZW
.

As a workaround, can you try installing iotedged after the steps below?

wget http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.0.2l-1~bpo8+1_armhf.deb
sudo dpkg -i ./libssl-dev_1.0.2l-1~bpo8+1_armhf.deb

Thanks @veyalla for the suggestion, but sadly it didn't work. I'm still getting the same error about libssl.so.1.0.2.

@scottjreece can you try after sudo apt install -f

Depending on what libssl is installed on your system (example is for libssl.so.1.0.0), the following workaround (the soft-linking mentioned by @darobs ) may work, but is not recommended for anything but testing:

cd /lib/arm-linux-gnueabihf/
ln -s libssl.so.1.0.0 libssl.so.1.0.2
ln -s libcrypto.so.1.0.0 libcrypto.so.1.0.2

Debian 8 is not an officially supported OS on arm32. However, we have added scripts to the repo to help build for this platform. They are located here: https://github.com/Azure/iotedge/tree/master/edgelet/build/linux/debian8/arm32v7

I'm going to close this issue for now, as we don't have plans to add Debian 8 at the moment. Please feel free to reopen if you have any questions. Thanks.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

alaendle picture alaendle  ·  4Comments

AndyLiTaiwan picture AndyLiTaiwan  ·  5Comments

has-taiar picture has-taiar  ·  6Comments

ejectbutton picture ejectbutton  ·  4Comments

josiahlaivins picture josiahlaivins  ·  6Comments