Re: (Go) Library for configuring Yocto based boxes?


Christofer Dutz <christofer.dutz@...>
 

Hi all,

so I guess this is another case of "I should have posed my question earlier, than I would have found the soltion myself" ;-)

So it turns out that:

err = propertyConnection.Update(connectionSettings)

Only updates the settings, however it doesn't actiavate the changes (This happens on the next boot) ... But if I also run

_, err = nm.ActivateConnection(propertyConnection, device, nil)

The changes seem to be applied instantly :-)

So I guess I'm now safe and managed to get the things I needed working.

I had a look and NetworkManager doesn't seem to be running, I can find a process systemd-networkd however, so I guess everything is setup correctly. I also used the nmcli to experiment.

Do I understand it correctly, is systemd-networkd a different implementation of the same service as NetworkManager? Because I can see the configs beeing written to "/etc/NetworkManager/system-connections"?

Chris



-----Ursprüngliche Nachricht-----
Von: Nicolas Jeker <n.jeker@...>
Gesendet: Montag, 2. August 2021 13:18
An: Christofer Dutz <christofer.dutz@...>; yocto@...
Betreff: Re: [yocto] (Go) Library for configuring Yocto based boxes?

On Mon, 2021-08-02 at 09:35 +0000, Christofer Dutz wrote:
Hi all,

so I invested quite some time to using the NetworkManager to configure
the network settings.
I’m using a go library: github.com/Wifx/gonetworkmanager for this.
My network configurations now end up in a directory
/etc/NetworkManager/system-connections (I can see files with the name
"{connection-id}.nmconnection"
However the changes aren't applied. If I run:

     systemctl restart systemd-networkd
systemd-networkd and NetworkManager are two different things. Make sure that you only have one of them running at the same time.

A quick solution is to use systemd to disable the systemd-networkd service (if that's not already the case). What I did as a more long- term solution is removing systemd-networkd in my distro.conf (works in local.conf, too):

PACKAGECONFIG_remove_pn-systemd = "networkd"

The network settings don't change (Both network devices were set to
DHCP). (By the way … where can I see the default configuration?)
I'm currently using nmcli to set my configuration and apply it with:

nmcli con up {connection-id}

This works for me even if the connection status is already "up". Not sure if it works when you replace the configuration file, but you might give it a try. Otherwise restarting NetworkManager should work:

systemctl restart NetworkManager

However if I reboot the box, I can see my changes applied ... until I
run the "systemctl restart systemd-networkd" again, because then it
switches back to the dhcp settings.
I suspect this happens because systemd-networkd "overrides" the interface configuration that was set by NetworkManager.

Any tips on how I can apply my changes without rebooting?
 
Chris


-----Ursprüngliche Nachricht-----
Von: Nicolas Jeker <n.jeker@...>
Gesendet: Freitag, 30. Juli 2021 10:06
An: Christofer Dutz <christofer.dutz@...>;
yocto@...
Betreff: Re: [yocto] (Go) Library for configuring Yocto based boxes?

On Fri, 2021-07-30 at 07:43 +0000, Christofer Dutz wrote:
Hi all,
 
I’m very new to the Yocto world.
 
We are currently working on migrating away from OpenWRT based edge
devices towards ones that we now have Yocto builds for.
 
All seems to be working nicely on the yocto side.
 
Our application uses a baseline configuration in order to connect to
our cloud service and there it fetches it’s configuration (We’ve got
a cellular fallback if connectivity doesn’t work at all).
 
With OpenWRT there was a tool called UCI which even had a Go wrapper
which we used to apply the configuration to the box (set IP
addresses, connect to WiFi neworks, configure the serial ports etc.)
 
Is there some equivalent in the Yocto world?
 
The OpenWRT wiki has a section on porting UCI to different linux
distributions [1], but you can probably skip that completely.
Searching for UCI in the recipe index [2] yields a result from the
meta-openwrt [3] layer. I would start with adding that layer and using
the UCI recipe from there.

[1]: https://openwrt.org/docs/techref/uci#usage_outside_of_openwrt
[2]:
https://layers.openembedded.org/layerindex/branch/master/recipes/?q=uc
i
[3]: https://github.com/kraj/meta-openwrt

I would like to avoid generating the file content in the /etc
directory by hand and firing „restart“ commands to the corresponding
services, if there isn’t a better way.
 
Help greatly appreciated :-)
 
Chris

Join {yocto@lists.yoctoproject.org to automatically receive all group messages.