5 Replies Latest reply: Mar 28, 2017 6:10 AM by Sean RSS

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

    alejo-VIRL Support


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

      Posted by: mattan



      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/ .


      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).