package/mender: new package
PATCH v2 1/1 package/mender: new package
From: Angelo Compagnucci <[email protected]>
This patch adds mender, an open source over-the-air (OTA) software updater for embedded Linux devices.
--- package/Config.in | 1 + package/mender/Config.in | 14 +++++++++ package/mender/mender-device-identity | 52 ++++++++++++++++++++++++++++++++ package/mender/mender-inventory-hostinfo | 21 +++++++++++++ package/mender/mender-inventory-network | 47 +++++++++++++++++++++++++++++ package/mender/mender.conf | 14 +++++++++ package/mender/mender.hash | 2 ++ package/mender/mender.mk | 31 +++++++++++++++++++ package/mender/mender.service | 15 +++++++++ package/mender/server.crt | 22 ++++++++++++++ package/mender/tenant.conf | 0 11 files changed, 219 insertions(+) create mode 100644 package/mender/Config.in create mode 100644 package/mender/mender-device-identity create mode 100644 package/mender/mender-inventory-hostinfo create mode 100644 package/mender/mender-inventory-network create mode 100644 package/mender/mender.conf create mode 100644 package/mender/mender.hash create mode 100644 package/mender/mender.mk create mode 100644 package/mender/mender.service create mode 100644 package/mender/server.crt create mode 100644 package/mender/tenant.conf
package/Config.in +1 -0
@@ -2006,6 +2006,7 @@ menu "System tools" source "package/kvmtool/Config.in" source "package/libostree/Config.in" source "package/lxc/Config.in" + source "package/mender/Config.in" source "package/monit/Config.in" source "package/ncdu/Config.in" source "package/numactl/Config.in"
package/mender/Config.in new file +14 -0
@@ -0,0 +1,14 @@ +config BR2_PACKAGE_MENDER + bool "mender" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INIT_SYSTEMD + + help + Mender is an open source over-the-air (OTA) software updater for + embedded Linux devices. Mender comprises a client running at the + embedded device, as well as a server that manages deployments + across many devices. + + https://github.com/mendersoftware/mender
package/mender/mender-device-identity new file +52 -0
52 lines not on this page · raw message
package/mender/mender-inventory-hostinfo new file +21 -0
@@ -0,0 +1,21 @@ +#!/bin/sh +# +# The example script collects information about current host +# + +set -ue + +LC_ALL=C +export LC_ALL + +grep 'model name' /proc/cpuinfo | uniq | awk -F': ' ' + // { printf("cpu_model=%s\n", $2);} +' +echo "kernel=$(cat /proc/version)" + +cat /proc/meminfo | awk ' +/MemTotal/ {printf("mem_total_kB=%d\n", $2)} +' + +echo "hostname=$(cat /etc/hostname)" +
package/mender/mender-inventory-network new file +47 -0
47 lines not on this page · raw message
package/mender/mender.conf new file +14 -0
@@ -0,0 +1,14 @@ +{ + "ClientProtocol": "http", + "HttpsClient": { + "Certificate": "", + "Key": "" + }, + "RootfsPartA": "@MENDER_ROOTFS_PART_A@", + "RootfsPartB": "@MENDER_ROOTFS_PART_B@", + "UpdatePollIntervalSeconds": @MENDER_UPDATE_POLL_INTERVAL_SECONDS@, + "InventoryPollIntervalSeconds": @MENDER_INVENTORY_POLL_INTERVAL_SECONDS@, + "RetryPollIntervalSeconds": @MENDER_RETRY_POLL_INTERVAL_SECONDS@, + "ServerURL": "@MENDER_SERVER_URL@", + "ServerCertificate": "@MENDER_CERT_LOCATION@" +}
package/mender/mender.hash new file +2 -0
@@ -0,0 +1,2 @@ +# Locally computed: +sha256 267fa73ad472b034248ee298593b5c52ea0b105fd73c91febb3587280c61bee2 mender-1.4.0.tar.gz
package/mender/mender.mk new file +31 -0
@@ -0,0 +1,31 @@ +################################################################################ +# +# mender +# +################################################################################ + +MENDER_VERSION = 1.4.0 +MENDER_SOURCE = mender-$(MENDER_VERSION).tar.gz +MENDER_SITE = $(call github,mendersoftware,mender,$(MENDER_VERSION)) + +define MENDER_INSTALL_TARGET_CMDS + $(INSTALL) -dm 0755 $(TARGET_DIR)/etc/mender/ + $(INSTALL) -dm 0755 $(TARGET_DIR)/var/share/mender/identity/ + $(INSTALL) -dm 0755 $(TARGET_DIR)/var/share/mender/inventory/ + $(INSTALL) -D -m 0644 package/mender/mender.conf \ + $(TARGET_DIR)/etc/mender/mender.conf + $(INSTALL) -D -m 0644 package/mender/tenant.conf \ + $(TARGET_DIR)/etc/mender/mender.conf + $(INSTALL) -D -m 0644 package/mender/server.crt \ + $(TARGET_DIR)/etc/mender/server.crt + $(INSTALL) -D -m 0755 package/mender/mender-device-identity \ + $(TARGET_DIR)/var/share/mender/identity/mender-device-identity + $(INSTALL) -D -m 0755 package/mender/mender-inventory-network \ + $(TARGET_DIR)/var/share/mender/inventory/mender-inventory-network + $(INSTALL) -D -m 0755 package/mender/mender-inventory-hostinfo \ + $(TARGET_DIR)/var/share/mender/inventory/mender-inventory-hostinfo + $(INSTALL) -D -m 0644 package/mender/mender.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mender.service +endef + +$(eval $(golang-package))
package/mender/mender.service new file +15 -0
@@ -0,0 +1,15 @@ +[Unit] +Description=Mender OTA update service +After=systemd-resolved.service + +[Service] +Type=idle +User=root +Group=root +ExecStartPre=/bin/mkdir -p -m 0700 /data/mender +ExecStartPre=/bin/ln -sf /etc/mender/tenant.conf /var/lib/mender/authtentoken +ExecStart=/usr/bin/mender -daemon +Restart=on-abort + +[Install] +WantedBy=multi-user.target
package/mender/server.crt new file +22 -0
@@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIBfTCCASOgAwIBAgIJAJOS76a0qWuZMAoGCCqGSM49BAMCMBsxGTAXBgNVBAMM +EGRvY2tlci5tZW5kZXIuaW8wHhcNMTYxMjE0MTk1MjQ2WhcNMjYxMjEyMTk1MjQ2 +WjAbMRkwFwYDVQQDDBBkb2NrZXIubWVuZGVyLmlvMFkwEwYHKoZIzj0CAQYIKoZI +zj0DAQcDQgAE7AVYis6MWGPGQYU1/tlLEnskRifDIhvkRb8Y4nQPekRkLkiBYYT3 +iJ46wHrnejbHaLstU9GRdKWOmOuU6HGdO6NQME4wHQYDVR0OBBYEFGOIU4q++Vz8 +9HuT1jg9V+wFeJcyMB8GA1UdIwQYMBaAFGOIU4q++Vz89HuT1jg9V+wFeJcyMAwG +A1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIhAPLnEeWPNeN7eDCEYRitBfyO +X1yf2kzOm4ohBE5GY9gzAiBCq7HOSkzQDkelmQCCCpGXf/UwYNgQJjSoeGfk0j1a +TQ== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIBhDCCASmgAwIBAgIJALQrf4QDot4IMAoGCCqGSM49BAMCMB4xHDAaBgNVBAMM +E3MzLmRvY2tlci5tZW5kZXIuaW8wHhcNMTYxMjE0MTk1MjQ2WhcNMjYxMjEyMTk1 +MjQ2WjAeMRwwGgYDVQQDDBNzMy5kb2NrZXIubWVuZGVyLmlvMFkwEwYHKoZIzj0C +AQYIKoZIzj0DAQcDQgAEEc/Y3T+l3DvINePkpvVZORMIdHVs29jgsl48ia7z/NRX +HlKtKxVGJyFN5Y7sBZeLgBYH3F4Bo3KfmxI7ad0tI6NQME4wHQYDVR0OBBYEFIUm +cip00QZYpe4ULflbGNJan+Y9MB8GA1UdIwQYMBaAFIUmcip00QZYpe4ULflbGNJa +n+Y9MAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhANHij9VZBDHOUPaC +pFiagnWnYL2HBR72W1xTKQbrLLTXAiEAvpwA4HzSnGmLd3010+jqQuMRHArN5WaX +h0fy7niBbIQ= +-----END CERTIFICATE-----
package/mender/tenant.conf new file +0 -0
Signature · 1 line
2.7.4
PATCH v2 1/1 package/mender: new package
Hello Angelo,
Thanks for pushing this further. We definitely want to have Mender.io support in Buildroot, so it's great to see this make progress.
Quoted 1 line · Angelo Compagnucci
package/mender/server.crt | 22 ++++++++++++++
Not a complete review by far, but I'm wondering if it makes sense to include server certificates in Buildroot. I would assume that one would want to generate his own certificate instead, no ?
package/mender/Config.in line 6
Quoted 12 lines
package/mender/Config.in new file +6
-0@@ -0,0 +1,14 @@ +config BR2_PACKAGE_MENDER + bool "mender" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INIT_SYSTEMD
Is there anything that makes mender tied to systemd, other than the fact that you provide only a systemd mender.service, and no init script ?
package/mender/Config.in line 7
Quoted 1 line
package/mender/Config.in new file +1
-0+
Unneeded empty new line.
package/mender/Config.in line 11
Quoted 4 lines
package/mender/Config.in new file +4
-0+define MENDER_INSTALL_TARGET_CMDS + $(INSTALL) -dm 0755 $(TARGET_DIR)/etc/mender/ + $(INSTALL) -dm 0755 $(TARGET_DIR)/var/share/mender/identity/ + $(INSTALL) -dm 0755 $(TARGET_DIR)/var/share/mender/inventory/
These commands are not needed: the $(INSTALL) -D below, with full destination paths, will create the intermediate directories if they don't already exist.
package/mender/Config.in
Quoted 4 lines
package/mender/Config.in new file +4
-0+ $(INSTALL) -D -m 0644 package/mender/mender.conf \ + $(TARGET_DIR)/etc/mender/mender.conf + $(INSTALL) -D -m 0644 package/mender/tenant.conf \ + $(TARGET_DIR)/etc/mender/mender.conf
Are you sure that installing tenant.conf as mender.conf is what you want to do here ?
package/mender/Config.in
Quoted 10 lines
package/mender/Config.in new file +10
-0+ $(INSTALL) -D -m 0644 package/mender/server.crt \ + $(TARGET_DIR)/etc/mender/server.crt + $(INSTALL) -D -m 0755 package/mender/mender-device-identity \ + $(TARGET_DIR)/var/share/mender/identity/mender-device-identity + $(INSTALL) -D -m 0755 package/mender/mender-inventory-network \ + $(TARGET_DIR)/var/share/mender/inventory/mender-inventory-network + $(INSTALL) -D -m 0755 package/mender/mender-inventory-hostinfo \ + $(TARGET_DIR)/var/share/mender/inventory/mender-inventory-hostinfo + $(INSTALL) -D -m 0644 package/mender/mender.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mender.service
Is this enough to enable the systemd service ? In most packages, we do a dance like this:
define OLSR_INSTALL_INIT_SYSTEMD
$(INSTALL) -D -m 644 package/olsr/olsr.service \
$(TARGET_DIR)/usr/lib/systemd/system/olsr.service
mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
ln -sf ../../../../usr/lib/systemd/system/olsr.service \
$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/olsr.serviceendef
Best regards,
Thomas Petazzoni
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com
PATCH v2 1/1 package/mender: new package
Dear Thomas,
Quoted 5 lines · Thomas Petazzoni
Hello Angelo,
Thanks for pushing this further. We definitely want to have Mender.io support in Buildroot, so it's great to see this make progress.
Quoted 7 lines
Quoted 1 line · Angelo Compagnucci
package/mender/server.crt | 22 ++++++++++++++Not a complete review by far, but I'm wondering if it makes sense to include server certificates in Buildroot. I would assume that one would want to generate his own certificate instead, no ?
It's a test certificate just to starting up. The same file is included in the official yocto package so I thought it could useful to have here.
Quoted 17 lines
package/mender/Config.in line 6
Quoted 13 lines
package/mender/Config.in new file +6
-0@@ -0,0 +1,14 @@ +config BR2_PACKAGE_MENDER + bool "mender" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INIT_SYSTEMDIs there anything that makes mender tied to systemd, other than the fact that you provide only a systemd mender.service, and no init script ?
Mender depends on systemd stating to the requirements here
https://docs.mender.io/1.4/devices/system-requirements
Quoted 15 lines
package/mender/Config.in line 7
Quoted 2 lines
package/mender/Config.in new file +1
-0+Unneeded empty new line.
package/mender/Config.in line 11
Quoted 4 lines
package/mender/Config.in new file +4
-0+define MENDER_INSTALL_TARGET_CMDS + $(INSTALL) -dm 0755 $(TARGET_DIR)/etc/mender/ + $(INSTALL) -dm 0755 $(TARGET_DIR)/var/share/mender/identity/ + $(INSTALL) -dm 0755 $(TARGET_DIR)/var/share/mender/inventory/These commands are not needed: the $(INSTALL) -D below, with full destination paths, will create the intermediate directories if they don't already exist.
Quoted 7 lines
package/mender/Config.in
Quoted 4 lines
package/mender/Config.in new file +4
-0+ $(INSTALL) -D -m 0644 package/mender/mender.conf \ + $(TARGET_DIR)/etc/mender/mender.conf + $(INSTALL) -D -m 0644 package/mender/tenant.conf \ + $(TARGET_DIR)/etc/mender/mender.confAre you sure that installing tenant.conf as mender.conf is what you want to do here ?
Ouch.
Quoted 30 lines
package/mender/Config.in
Quoted 11 lines
package/mender/Config.in new file +10
-0+ $(INSTALL) -D -m 0644 package/mender/server.crt \ + $(TARGET_DIR)/etc/mender/server.crt + $(INSTALL) -D -m 0755 package/mender/mender-device-identity \ + $(TARGET_DIR)/var/share/mender/identity/mender-device-identity + $(INSTALL) -D -m 0755 package/mender/mender-inventory-network \ + $(TARGET_DIR)/var/share/mender/inventory/mender-inventory-network + $(INSTALL) -D -m 0755 package/mender/mender-inventory-hostinfo \ + $(TARGET_DIR)/var/share/mender/inventory/mender-inventory-hostinfo + $(INSTALL) -D -m 0644 package/mender/mender.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mender.serviceIs this enough to enable the systemd service ? In most packages, we do a dance like this:
define
OLSR_INSTALL_INIT_SYSTEMD$(INSTALL) -D -m 644 package/olsr/olsr.service \ $(TARGET_DIR)/usr/lib/systemd/system/olsr.service mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants ln -sf ../../../../usr/lib/systemd/system/olsr.service \ $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/olsr.serviceendef
Best regards,
Thomas Petazzoni
--
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering
https://bootlin.com
PATCH v2 1/1 package/mender: new package
Hello,
Quoted 7 lines · Angelo Compagnucci
Quoted 3 lines
Not a complete review by far, but I'm wondering if it makes sense to include server certificates in Buildroot. I would assume that one would want to generate his own certificate instead, no ?
It's a test certificate just to starting up. The same file is included in the official yocto package so I thought it could useful to have here.
Ah, OK. Then perhaps it is fine to have this test certificate as well.
Quoted 6 lines
Quoted 3 lines
Is there anything that makes mender tied to systemd, other than the fact that you provide only a systemd mender.service, and no init script ?
Mender depends on systemd stating to the requirements here
https://docs.mender.io/1.4/devices/system-requirements
I'm wondering whether this is a real dependency (i.e they are linked with systemd libraries), or whether it is just that they have only tested their integration with systemd.
But OK, if they advertise this as a dependency, it's reasonable to have that as well in Buildroot. It can be relaxed later on if someone is interested in using Mender in a non-systemd system.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com
PATCH v2 1/1 package/mender: new package
Dear Thomas,
Quoted 21 lines · Thomas Petazzoni
Hello,
Quoted 7 lines · Angelo Compagnucci
Quoted 3 lines
Not a complete review by far, but I'm wondering if it makes sense to include server certificates in Buildroot. I would assume that one would want to generate his own certificate instead, no ?
It's a test certificate just to starting up. The same file is included in the official yocto package so I thought it could useful to have here.
Ah, OK. Then perhaps it is fine to have this test certificate as well.
Quoted 6 lines
Quoted 3 lines
Is there anything that makes mender tied to systemd, other than the fact that you provide only a systemd mender.service, and no init script ?
Mender depends on systemd stating to the requirements here
https://docs.mender.io/1.4/devices/system-requirements
Quoted 7 lines
I'm wondering whether this is a real dependency (i.e they are linked with systemd libraries), or whether it is just that they have only tested their integration with systemd.
But OK, if they advertise this as a dependency, it's reasonable to have that as well in Buildroot. It can be relaxed later on if someone is interested in using Mender in a non-systemd system.
Systemd is used to automate the workflow of download/install/reboot/verify operations of the mender daemon. This part can be disabled at compile time if a user is planning to use mender manually and don't want to relay on the mender daemon.
I think this is fairly a not so common use case to justify the package changes.
BTW, I will look into this if there is the requirement.
Quoted 8 lines
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering
https://bootlin.com