我是靠谱客的博主 甜蜜耳机,最近开发中收集的这篇文章主要介绍Linux网卡重命名规则作者参考ubuntu嵌入式平台,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

作者

QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118

参考

linux网卡命名规则
Linux重命名网卡名称
Linux网卡命名enp3s0说明
Linux Ubuntu 修改网卡名字
Predictable Network Interface Names
systemd/src/udev/udev-builtin-net_id.c
redhat修改网卡名称
linux修改网卡名称(一般修改为eth0)(redHat7)
centos7/redhat7更改网卡名称为eth0
Linux系统修改网卡名称(eth1修改为eth0)

ubuntu

$ sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
$ sudo apt-get install grub2-common
$ sudo update-grub
$ sudo vim /etc/network/interfaces

另外一种需要编辑/etc/udev/rules.d/70-persistent-net.rules,例如,ATTR{address}=="bc:30:5b:9c:ae:79" 表示MAC地址,KERNEL=="eth*" 是原网卡名,NAME="eth0" 更改网卡名。

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bc:30:5b:b1:cd:be", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

systemd,

/* retrieve on-board index number and label from firmware */
static int dev_pci_onboard(sd_device *dev, struct netnames *names) {
        unsigned long idx, dev_port = 0;
        const char *attr, *port_name = NULL;
        size_t l;
        char *s;
        int r;

        /* ACPI _DSM — device specific method for naming a PCI or PCI Express device */
        if (sd_device_get_sysattr_value(names->pcidev, "acpi_index", &attr) < 0) {
                /* SMBIOS type 41 — Onboard Devices Extended Information */
                r = sd_device_get_sysattr_value(names->pcidev, "index", &attr);
                if (r < 0)
                        return r;
        }

        r = safe_atolu(attr, &idx);
        if (r < 0)
                return r;
        if (idx == 0 && !naming_scheme_has(NAMING_ZERO_ACPI_INDEX))
                return -EINVAL;

        /* Some BIOSes report rubbish indexes that are excessively high (2^24-1 is an index VMware likes to
         * report for example). Let's define a cut-off where we don't consider the index reliable anymore. We
         * pick some arbitrary cut-off, which is somewhere beyond the realistic number of physical network
         * interface a system might have. Ideally the kernel would already filter his crap for us, but it
         * doesn't currently. */
        if (idx > ONBOARD_INDEX_MAX)
                return -ENOENT;

        /* kernel provided port index for multiple ports on a single PCI function */
        if (sd_device_get_sysattr_value(dev, "dev_port", &attr) >= 0)
                dev_port = strtoul(attr, NULL, 10);

        /* kernel provided front panel port name for multiple port PCI device */
        (void) sd_device_get_sysattr_value(dev, "phys_port_name", &port_name);

        s = names->pci_onboard;
        l = sizeof(names->pci_onboard);
        l = strpcpyf(&s, l, "o%lu", idx);
        if (port_name)
                l = strpcpyf(&s, l, "n%s", port_name);
        else if (dev_port > 0)
                l = strpcpyf(&s, l, "d%lu", dev_port);
        if (l == 0)
                names->pci_onboard[0] = '';

        if (sd_device_get_sysattr_value(names->pcidev, "label", &names->pci_onboard_label) < 0)
                names->pci_onboard_label = NULL;

        return 0;
}

嵌入式平台

开机打印,

[    1.062029] macb ff0b0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0b0000 irq 30 (1e:44:19:4f:f0:07)
[    1.071658] Atheros 8031 ethernet ff0b0000.ethernet-ffffffff:01: attached PHY driver [Atheros 8031 ethernet] (mii_bus:phy_addr=ff0b0000.ethernet-ffffffff:01, irq=POLL)
[    1.087025] macb ff0d0000.ethernet: Not enabling partial store and forward
[    1.094189] libphy: MACB_mii_bus: probed
[    1.169628] macb ff0d0000.ethernet eth1: Cadence GEM rev 0x50070106 at 0xff0d0000 irq 31 (52:76:2c:f7:02:65)
[    1.179262] Xilinx ZynqMP PS PCS/PMA PHY ff0d0000.ethernet-ffffffff:01: attached PHY driver [Xilinx ZynqMP PS PCS/PMA PHY] (mii_bus:phy_addr=ff0d0000.ethernet-ffffffff:01, irq=POLL)
[    1.195810] macb ff0e0000.ethernet: Not enabling partial store and forward
[    1.202964] libphy: MACB_mii_bus: probed
[    1.277627] macb ff0e0000.ethernet eth2: Cadence GEM rev 0x50070106 at 0xff0e0000 irq 32 (be:79:46:c8:71:fd)
[    1.287261] Xilinx ZynqMP PS PCS/PMA PHY ff0e0000.ethernet-ffffffff:01: attached PHY driver [Xilinx ZynqMP PS PCS/PMA PHY] (mii_bus:phy_addr=ff0e0000.ethernet-ffffffff:01, irq=POLL)

这里的mii_bus:phy_addr=ff0e0000.ethernet-ffffffff:01,是下面打印的,

void phy_attached_info(struct phy_device *phydev)
{
	phy_attached_print(phydev, NULL);
}
EXPORT_SYMBOL(phy_attached_info);

#define ATTACHED_FMT "attached PHY driver [%s] (mii_bus:phy_addr=%s, irq=%s)"
void phy_attached_print(struct phy_device *phydev, const char *fmt, ...)
{
	const char *drv_name = phydev->drv ? phydev->drv->name : "unbound";
	char *irq_str;
	char irq_num[8];

	switch(phydev->irq) {
	case PHY_POLL:
		irq_str = "POLL";
		break;
	case PHY_IGNORE_INTERRUPT:
		irq_str = "IGNORE";
		break;
	default:
		snprintf(irq_num, sizeof(irq_num), "%d", phydev->irq);
		irq_str = irq_num;
		break;
	}


	if (!fmt) {
		dev_info(&phydev->mdio.dev, ATTACHED_FMT "n",
			 drv_name, phydev_name(phydev),
			 irq_str);
	} else {
		va_list ap;

		dev_info(&phydev->mdio.dev, ATTACHED_FMT,
			 drv_name, phydev_name(phydev),
			 irq_str);

		va_start(ap, fmt);
		vprintk(fmt, ap);
		va_end(ap);
	}
}
EXPORT_SYMBOL(phy_attached_print);

其中phydev_name来源于mii_bus注册的名字,而ffffffff就是platform_deviceid没设,获取aliases id给这个变量即可。

static inline const char *phydev_name(const struct phy_device *phydev)
{
	return dev_name(&phydev->mdio.dev);
}

static int macb_mii_init(struct macb *bp)
{
...
	bp->mii_bus->name = "MACB_mii_bus";
	if (bp->int_pcs) {
		bp->mii_bus->read = &zynqmp_ps_pcs_read;
		bp->mii_bus->write = &zynqmp_ps_pcs_write;
	} else {
		bp->mii_bus->read = &macb_mdio_read;
		bp->mii_bus->write = &macb_mdio_write;
	}
	snprintf(bp->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
		 bp->pdev->name, bp->pdev->id);
	bp->mii_bus->priv = bp;
	bp->mii_bus->parent = &bp->dev->dev;
...
}

struct platform_device {
	const char	*name;
	int		id;
	bool		id_auto;
	struct device	dev;
	u32		num_resources;
	struct resource	*resource;

	const struct platform_device_id	*id_entry;
	char *driver_override; /* Driver name to force a match */

	/* MFD cell pointer */
	struct mfd_cell *mfd_cell;

	/* arch specific additions */
	struct pdev_archdata	archdata;
};

最后

以上就是甜蜜耳机为你收集整理的Linux网卡重命名规则作者参考ubuntu嵌入式平台的全部内容,希望文章能够帮你解决Linux网卡重命名规则作者参考ubuntu嵌入式平台所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部