How to: Linux Naming Convention of Ethernet Interfaces -- VIRL bare-metal Install

    References

    Original Post: Bare Metal installation on ASUS X99-M WS motherboard: no interfaces

    Posted by: mattan

     

    Environment

    VIRL 1.0.11.iso on a Supermicro X10DAL-i motherboard. Bare metal installation (no hypervisor). Single CPU. Onboard 2x 1GE Intel i210, a PCI 2x 1GE Intel i350v2, and a USB 3 1GE adapter for the 5th physical interface.

     

    Note that the steps described below may not be mandatory for running VIRL. Instead, one could edit virl.ini to replace eth0-4 with the actual interface names, and do the same in /etc/network/interfaces. However, if one wants their setup to be fully-consistent with the VIRL documentation (which refers to network interfaces by names eth0-eth4), this guide may help.


    Problem Statement and Research

    After booting from a USB drive with the VIRL bare metal boot image on it, I had only one interface in [eth0, eth1, eth2, eth3, eth4], eth0 (the USB adapter). The other four were not in “ifconfig -a”. Instead, I had em1 and em2 from the i210 onboard NIC, and p5p1 and p5p2 for the i350-T2 NIC in PCI slot 5 (hence “p5…”). It seems that as of udev version 204 (the one included with this distribution of VIRL), a “Predictable Network Interface Names” paradigm is used for interfaces within the new ruleset (e.g. name supplied by BIOS or other hardware location information), rather than the kernel-assigned interface names (typically eth0-ethN). See https://wiki.gentoo.org/wiki/Udev/Upgrade_Guide and http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ .


    Resolution

    My solution was as follows. It may also work to set net.ifnames=0 in the kernel command line supplied by grub, but I didn’t fully verify that.

     

    1. Continue with the bare metal install instructions, through Step 3, without network connectivity (VIRL to Bare Metal via ISO)

    2. Once back up, run “sudo biosdevname -d” to verify that the NIC ports are present, then “ifconfig -a” to double-check that the BIOS-dervied kernel name for those interfaces are present.

    3. sudo apt-get remove biosdevname

    4. sudo update-initramfs -u

    5. sudo reboot

    6. Verify that /etc/udev/rules.d/70-persistent-net.rules has a line for each Ethernet interface, and that they have “NAME=“ eth0 through eth4. Edit it (USE sudo) to change the mapping of physical ports to eth0-4, if desired. Else, make note of the MAC addresses so you can attach cables to the correct ports.

    7. Set "dummy_int: False" in virl.ini

    8. Reboot.

    9. Continue with the VIRL installation instructions (I skipped to Step 7: Activation).

    This seems easier and more copacetic with VIRL than trying to edit virl.ini and /etc/network/interfaces to use the system-supplied interface names (the ones that don’t look like ethX).

     

    Thank you!  This was the exact fix I needed with a bare-metal install of 1.2.84.

     

    This document was generated from the following discussion: How To: Linux Naming Convention of Ethernet Interfaces -- VIRL bare-metal Install