Difference between revisions of "How to configure network using systemd-networkd in Yocto"

From KoanSoftware Wiki
Jump to: navigation, search
(Created page with "== How to configure network using systemd-networkd in Yocto == When using '''Yocto Project''' it sometimes may be necessary to setup a '''static IP address''' via a custom re...")
 
Line 43: Line 43:
 
     ClientIdentifier=mac
 
     ClientIdentifier=mac
  
Below is an example of a recipe to manage that
+
Below is an example of a possible solution
 +
 
 +
Create a '''.bbappend''' recipe to manage that and replace the existing '''wired.network''' file with your custom one
 +
 
 +
  meta-custom/
 +
  └─ recipes-core/
 +
      └── systemd-conf
 +
          ├── systemd-conf
 +
          │   └── wired.network
 +
          └── systemd-conf_%.bbappend
 +
 
 +
 
 +
The recipe systemd-conf_%.bbappend
 +
 
 +
    # recipes-core/systemd-conf/systemd-conf_%.bbappend
 +
   
 +
    FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
 +
 
 +
 
 +
The network file
 +
 
 +
    # wired.network
 +
   
 +
    [Match]
 +
    Type=ether
 +
    Name=!veth*
 +
    KernelCommandLine=!nfsroot
 +
    KernelCommandLine=!ip
 +
   
 +
    [Network]
 +
    Address=192.168.0.184/24
 +
    Gateway=192.168.0.1
 +
    DNS=1.1.1.1
 +
       
 +
    [DHCP]
 +
    UseMTU=yes
 +
    RouteMetric=10
 +
    ClientIdentifier=mac

Revision as of 14:00, 15 March 2025

How to configure network using systemd-networkd in Yocto

When using Yocto Project it sometimes may be necessary to setup a static IP address via a custom recipe.

When the network manager is systemd-networkd the file usually responsible for that is /lib/systemd/network/80-wired.network

Simply change it from the original

   # cat /lib/systemd/network/80-wired.network
   
   [Match]
   Type=ether
   Name=!veth*
   KernelCommandLine=!nfsroot
   KernelCommandLine=!ip
   
   [Network]
   DHCP=yes
   
   [DHCP]
   UseMTU=yes
   RouteMetric=10
   ClientIdentifier=mac

To the following

   # cat /lib/systemd/network/80-wired.network
   
   [Match]
   Type=ether
   Name=!veth*
   KernelCommandLine=!nfsroot
   KernelCommandLine=!ip
   
   [Network]
   Address=192.168.0.184/24
   Gateway=192.168.0.1
   DNS=1.1.1.1
   
   [DHCP]
   UseMTU=yes
   RouteMetric=10
   ClientIdentifier=mac

Below is an example of a possible solution

Create a .bbappend recipe to manage that and replace the existing wired.network file with your custom one

 meta-custom/
  └─ recipes-core/
     └── systemd-conf
         ├── systemd-conf
         │   └── wired.network
         └── systemd-conf_%.bbappend


The recipe systemd-conf_%.bbappend

   # recipes-core/systemd-conf/systemd-conf_%.bbappend 
   
   FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"


The network file

    # wired.network 
   
   [Match]
   Type=ether
   Name=!veth*
   KernelCommandLine=!nfsroot
   KernelCommandLine=!ip
   
   [Network]
   Address=192.168.0.184/24
   Gateway=192.168.0.1
   DNS=1.1.1.1
       
   [DHCP]
   UseMTU=yes
   RouteMetric=10
   ClientIdentifier=mac