user3170122
user3170122

Reputation: 717

How is the Hardware address mapped to eth0/eth1 on a Linux(Ubuntu) machine.?

What goes behind the hood when i add a new NIC card to my Ubuntu machine.? Which program/module is responsible for mapping the HardWare address of the device to a name(eth0/eth1). Where are this mappings(HWaddress1-eth0, HWaddress2-eth1) actually stored.?

Upvotes: 1

Views: 799

Answers (1)

mirokai
mirokai

Reputation: 125

As far as I know the kernel itself will name the nics depending on the order they are connected to the bus. This behavior is very similar to SCSI/SATA naming.

Take a look at the output of

lspci

You should find the corresponding network card there. The first column e.g. 0000:00:03.0 contains the following information:

0000 : PCI domain (each domain can contain up to 256 PCI buses)
00   : the bus number the device is attached to
03   : the device number
.0   : PCI device function

(source: http://prefetch.net/articles/linuxpci.html)

under /sys/bus/pci(_express)/devices/ you will find links that match to the lspci output. When you enter the folder of your network card, there are lots of files and folders.

You can do a find and grep

cd /sys/bus/.../devices/0000:00:03.0/
someuser@somemachine:/sys/bus/pci/devices/0000:00:03.0$ find -type f -exec grep 'ethX' /dev/null {} \; 2>/dev/null

where ethX is your device name to get an output like

./virtio0/net/ethX/uevent:INTERFACE=eth0

(in my case a virtual machine with a virtio device)

Since this information is derived from the running kernel I bet you will also find the hardware-address there.

Happy grepping!

Upvotes: 2

Related Questions