balena-io-examples/balena-nodejs-hello-world

Example doesn't work on beaglebone black

esetnik opened this issue · 15 comments

31.07.18 12:15:29 (-0400)  main  Systemd init system enabled.
31.07.18 12:15:29 (-0400)  main  Failed to insert module 'kdbus': Function not implemented
31.07.18 12:15:29 (-0400)  main  systemd 230 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
31.07.18 12:15:29 (-0400)  main  Detected virtualization docker.
31.07.18 12:15:29 (-0400)  main  Detected architecture arm.
31.07.18 12:15:29 (-0400)  main  Set hostname to <788b700>.
31.07.18 12:15:29 (-0400)  main  Cannot determine cgroup we are running in: No medium found
31.07.18 12:15:29 (-0400)  main  Failed to allocate manager object: No medium found
31.07.18 12:15:29 (-0400)  main  [!!!!!!] Failed to allocate manager object, freezing.
31.07.18 12:15:29 (-0400)  main  Freezing execution.

Seems like it's related to balena-io-library/base-images#342

@esetnik thanks for the report. What version of resinOS did you notice this on?

@shaunmulligan Resin OS 2.12.7+rev1 the latest available for beaglebone black.

Thanks @esetnik , I'll look into it.

Hey @esetnik , I just set up a new application and pushed this to a fresh device and reproduced your issue. It seems there is an issue with the resin/beaglebone-black-node:6-slim base image interestingly enough the resin/raspberrypi3-alpine-node:6-slim base image works correctly.

@nghiant2710 is this issue related to balena-io-library/base-images#342 and when will those images be released?

@shaunmulligan FYI it's not just affecting resin/beaglebone-black-node:6-slim. I've also tested resin/beaglebone-black-node and resin/beaglebone-black-node:8-slim which are both also affected.

It'd also be nice to setup some sort of automated testing for scenarios like this where changes in base image break the example projects. I'm not sure if the resin team has a way to virtualize the testing of device specific images without resorting to running on real devices. The problem is that the base image node:6-slim changed out from under me, so while my project has no code changes and was previously working, it suddenly breaks for all beaglebone devices. Do you publish specific tags for base images such that I can rollback to a previously working stable node:8-slim image?

Hey @esetnik we are indeed working on a way to do more automated testing. For production projects we always recommend using the date frozen tags which don't auto update, for example the tag: 6.10-slim-20170408. Our base image for this project follows a moving tag which is good for development and testing, but obviously has the problem of moving fast and breaking things.

I am using beaglebone black and it looks like all the old tags are missing. See here. Are you suggesting that the old beaglebone-node image will work?

My Dockerfile.template looks like FROM resin/%%RESIN_MACHINE_NAME%%-node:8-slim which resolves to resin/beaglebone-black-node:8-slim on beaglebone black. So I don't think there's any older tags for me to revert back to.

@esetnik sorry, i pointed to the wrong base image. The name you state is the correct one. The tags are all there, its just that dockerhub UI doesn't show them. I would suggest rather looking here: https://store.docker.com/community/images/resin/beaglebone-black-python/tags

The docker store UI has paginated tags so you can go back as far as we have been producing images.

Any update on this?

Hey @esetnik apparently this is fixed in balena-io-library/base-images#449 and should be merged and pushed in the coming days.

Thanks for letting me know. Is there a good way to know when this has been pushed?

I'm seeing the same issue using resin/raspberrypi3-node:8 on Resin OS 2.32.0+rev1

[Logs]    [5/8/2019, 6:33:12 PM] [main] Systemd init system enabled.
[Logs]    [5/8/2019, 6:33:13 PM] [main] Failed to insert module 'kdbus': Function not implemented
[Logs]    [5/8/2019, 6:33:13 PM] [main] systemd 230 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[Logs]    [5/8/2019, 6:33:13 PM] [main] Detected virtualization docker.
[Logs]    [5/8/2019, 6:33:13 PM] [main] Detected architecture arm.
[Logs]    [5/8/2019, 6:33:13 PM] [main] Set hostname to <37c9ad9>.
[Logs]    [5/8/2019, 6:33:13 PM] [main] Cannot determine cgroup we are running in: No medium found
[Logs]    [5/8/2019, 6:33:13 PM] [main] Failed to allocate manager object: No medium found
[Logs]    [5/8/2019, 6:33:13 PM] [main] [!!!!!!] Failed to allocate manager object, freezing.
[Logs]    [5/8/2019, 6:33:13 PM] [main] Freezing execution.

Here's my Dockerfile:

FROM resin/raspberrypi3-node:8

ENV INITSYSTEM on

RUN echo "deb [check-valid-until=no] http://cdn-fastly.deb.debian.org/debian jessie main" > /etc/apt/sources.list.d/jessie.list \
  && echo "deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list \
  && sed -i '/deb http:\/\/deb.debian.org\/debian jessie-updates main/d' /etc/apt/sources.list

RUN apt-get -o Acquire::Check-Valid-Until=false update \
  && apt-get -t jessie-backports install -yq network-manager \
	&& apt-get clean \
	&& rm -rf /var/lib/apt/lists/* \
	&& systemctl mask NetworkManager.service

WORKDIR /usr/src/app

COPY . .

CMD ./nmcli

Hi @JeffJassky, since you install network-manager from jessie-backports which also installs systemd v230 as a dependency and it breaks our systemd setup.

The default systemd in Debian Jessie image (v215) requires VOLUME instruction https://github.com/balena-io-library/base-images/blob/master/examples/INITSYSTEM/systemd/systemd/Dockerfile#L29-L31 while for systemd v230 and above, that instruction must be removed https://github.com/balena-io-library/base-images/blob/master/examples/INITSYSTEM/systemd/systemd.v230/Dockerfile#L32-L33.

You also should change the base image to the new balenalib since resin base images are now deprecated.