LS1046A 网卡顺序调整,失败的情况解决

由于网卡名称的确定,是谁先被识别,谁的序号就靠前。但是我们的需求就是希望网卡名称和硬件的RJ45是绑定到一起的。

这个可以通过 udev 来更改名字。LS1046A cpu内的MAC 提供了一个设备地址,这个设备地址是和CPU内的MAC绑定的,这样就比较方便,如果用MAC地址来区分,如果是多个设备,就无法做到批量修改,不是通用的做法。

可以用 73-fsl-dpaa-persistent-networking.rules 来做设置

# Rules for handling naming the DPAA FMan ethernet ports in a consistent way
SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1ae0000", NAME="fm1-mac1"
SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1ae2000", NAME="fm1-mac2"
SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1ae4000", NAME="fm1-mac3"
SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1ae6000", NAME="fm1-mac4"
SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1ae8000", NAME="fm1-mac5"
SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1aea000", NAME="fm1-mac6"
SUBSYSTEM=="net", DRIVERS=="fsl_dpa*", ATTR{device_addr}=="1af0000", NAME="fm1-mac9"

# Rename macless0 to "macless0"
SUBSYSTEM=="net", ATTR{device_type}=="macless0", NAME="macless0"

可以使用下面的命令来找到设备地址:

udevadm info -a -p /sys/class/net/eth1

[root@linx ~]#udevadm info -a -p /sys/class/net/eth1

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/platform/soc/soc:fsl,dpaa/soc:fsl,dpaa:ethernet@2/net/eth1':
    KERNEL=="eth1"
    SUBSYSTEM=="net"
    DRIVER==""
    ATTR{addr_assign_type}=="0"
    ATTR{addr_len}=="6"
    ATTR{address}=="5c:d2:0b:10:94:d6"
    ATTR{bpids}=="32"
    ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"
    ATTR{carrier}=="1"
    ATTR{carrier_changes}=="2"
    ATTR{carrier_down_count}=="1"
    ATTR{carrier_up_count}=="1"
    ATTR{consumers}==""
    ATTR{dev_id}=="0x0"
    ATTR{dev_port}=="0"
    ATTR{device_addr}=="1ae4000"
    ATTR{device_type}=="private"
    ATTR{dormant}=="0"
    ATTR{flags}=="0x1003"
    ATTR{gro_flush_timeout}=="0"
    ATTR{ifalias}==""
    ATTR{ifindex}=="4"
    ATTR{iflink}=="4"
    ATTR{link_mode}=="0"
    ATTR{mtu}=="1500"
    ATTR{name_assign_type}=="4"
    ATTR{netdev_group}=="0"
    ATTR{operstate}=="up"
    ATTR{proto_down}=="0"
    ATTR{suppliers}==""
    ATTR{tx_queue_len}=="1000"
    ATTR{type}=="1"

  looking at parent device '/devices/platform/soc/soc:fsl,dpaa/soc:fsl,dpaa:ethernet@2':
    KERNELS=="soc:fsl,dpaa:ethernet@2"
    SUBSYSTEMS=="platform"
    DRIVERS=="fsl_dpa"
    ATTRS{consumers}==""
    ATTRS{driver_override}=="(null)"
    ATTRS{suppliers}==""

  looking at parent device '/devices/platform/soc/soc:fsl,dpaa':
    KERNELS=="soc:fsl,dpaa"
    SUBSYSTEMS=="platform"
    DRIVERS==""
    ATTRS{consumers}==""
    ATTRS{driver_override}=="(null)"
    ATTRS{suppliers}==""

  looking at parent device '/devices/platform/soc':
    KERNELS=="soc"
    SUBSYSTEMS=="platform"
    DRIVERS==""
    ATTRS{consumers}==""
    ATTRS{driver_override}=="(null)"
    ATTRS{suppliers}==""

  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""
    ATTRS{consumers}==""
    ATTRS{suppliers}==""

在实际的测试当中,我发现当我用 /etc/network/interfaces 来设置固定ip的话,networking.service 中会调用ifup eth1 ,这样可能就会导致设置的网卡失效,变成如下这样:

[root@linx ~]#ifconfig -a
eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.1  netmask 255.255.255.0  broadcast 10.0.0.255
        ether 5c:d2:0b:10:94:d6  txqueuelen 1000  (Ethernet)
        RX packets 865  bytes 41890 (40.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0x1ae4000-1ae4fff  

eth3: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 5c:d2:0b:10:94:da  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0x1af0000-1af0fff  

eth4: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 5c:d2:0b:10:94:d5  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0x1ae2000-1ae2fff  

eth5: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 5c:d2:0b:10:94:d9  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0x1aea000-1aeafff  

eth6: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 5c:d2:0b:10:94:d8  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0x1ae8000-1ae8fff  

eth7: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 5c:d2:0b:10:94:db  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0x1af2000-1af2fff  

eth8: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 5c:d2:0b:10:94:d4  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0x1ae0000-1ae0fff  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 644  bytes 52096 (50.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 644  bytes 52096 (50.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

rename5: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 5c:d2:0b:10:94:d7  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0x1ae6000-1ae6fff  

可以看到 udev-trigger.service 和 networking.service 有重合的运行时间,可能是在ifup的时候,是会导致网卡名称更改失效的。

# systemd-analyze plot > boot.svg

 

解决方法1:systemctl disable networking 

解决方法2 :调整 networking.service的启动顺序

修改  /lib/systemd/system/networking.service ,在After 这一行加上 systemd-udev-trigger.service

调整后:看已经没有重合了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值