是否可以在 yocto 开发的 Linux 映像中设置静态 IP 地址?

amo*_*ina 3 linux ip static-ip-address embedded-linux yocto

我正在使用 yocto 开发自定义 Linux 映像,我想为所有映像设置一个 IP 地址。有可能的?我怎样才能做到这一点?

提前致谢。

Tal*_*LEM 5

要在构建的映像中自动设置静态 IP,请使用systemd-networkd:

在您的自定义层中:

meta-custom
    |_ recipes-core
         |_ systemd
              |_ systemd_%.bbappend
         |_ files
              |_ <iface>.link
              |_ <iface>.network
Run Code Online (Sandbox Code Playgroud)

因为<iface>您必须设置要配置的接口systemd-networkd,例如eth0,,wlan0...

  • systemd_%.bbappend
PACKAGECONFIG_append = " networkd resolved"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

MY_INTERFACE = "<iface>"

SRC_URI += " \
    file://${MY_INTERFACE}.network \
    file://${MY_INTERFACE}.link \
"

FILES_${PN} += " \
    ${sysconfdir}/systemd/network/${MY_INTERFACE}.network \
    ${sysconfdir}/systemd/network/${MY_INTERFACE}.link \
"

do_install_append() {
    install -d ${D}${sysconfdir}/systemd/network
    install -m 0644 ${WORKDIR}/${MY_INTERFACE}.network ${D}${sysconfdir}/systemd/network
    install -m 0644 ${WORKDIR}/${MY_INTERFACE}.link ${D}${sysconfdir}/systemd/
}
Run Code Online (Sandbox Code Playgroud)

另外,编辑${MY_INTERFACE}为相同的<iface>.

细节:

  • <iface>.link如果您想设置网络设备配置(例如自定义 MAC 地址),请使用此选项,有关详细信息,请查看此链接

例子:

[Match]
Name=<iface>

[Link]
MACAddress=12:34:56:78:90:ab
Run Code Online (Sandbox Code Playgroud)
  • <iface>.network用于设置网络配置,有关更多信息,请查看此链接

对于静态 IP 地址,以下是一个示例:

[Match]
Name=<iface>

[Network]
DHCP=no
Address=192.168.0.10/24
Gateway=192.168.0.1
DNS=192.168.0.1
Run Code Online (Sandbox Code Playgroud)

笔记

不要忘记<iface>根据您想要的界面在所有位置(配方、.link、.network 文件)进行编辑。