Просто потратил часов на диагностику, почему моя виртуальная машина 18.04 не подключилась к сети после перехода с VirtualBox на qemu.
Оказывается, что из-за «аппаратного изменения» сетевой адаптер переименован из enp0s4 в enp1s0. И - естественно - /etc/netplan/01-netcfg.yaml явно указал , что enp0s4 должен получить конфигурацию DHCP, но не (что-либо еще).
Сравнение этого с недавно установленным - и работающим - 19.04 не очень помогло, так как 19.04 использует что-то еще для настройки сети. эх ...
Во всяком случае - почему это? Я заметил такое изменение раньше, например, когда обновлял BIOS на своей материнской плате. Но каждый раз, когда это происходит, я трачу много времени на диагностику такой проблемы. Тем более, что это случается так редко ...
Итак, что вызывает это переименование и как мне настроить виртуальные машины Ubuntu так, чтобы это больше не было проблемой?
Объяснение, как имя создается, может быть найдено в src/udev/udev-builtin-net_id.c:
* Two character prefixes based on the type of interface:
* en -- ethernet
* sl -- serial line IP (slip)
* wl -- wlan
* ww -- wwan
*
* Type of names:
* b<number> -- BCMA bus core number
* ccw<name> -- CCW bus group name
* o<index>[d<dev_port>] -- on-board device index number
* s<slot>[f<function>][d<dev_port>] -- hotplug slot index number
* x<MAC> -- MAC address
* [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
* -- PCI geographical location
* [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]
* -- USB port number chain
enp0s4
средства Ethernet, соедините шиной 0, слот 4.enp1s0
средства Ethernet, соедините шиной 1, слот 0.Так смены имени, когда шина или изменения слота. Это относится к устройству PCI. Посмотрите...
$ for i in `seq 2 5`; do lspci -s 0${i}:; done
03:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)
04:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTL8411B PCI Express Card Reader (rev 01)
04:00.1 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 12)
для списка устройств PCI. В моем случае, который был бы для моего Ethernet: порт 4, слот 0, функционирует 1. И для моей беспроводной связи: порт 3, слот 0. Посмотрите...
$ networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback n/a unmanaged
2 enp4s0f1 ether n/a unmanaged
3 wlp3s0 wlan n/a unmanaged
как я пошел бы о конфигурировании моего VMs Ubuntu, таким образом, что это больше не будет проблемой?
Существует 4 метода; 2 из них должны использовать Ваши собственные имена (см. /etc/udev/rules.d/70-my-net-names.rules
) или используйте MAC-адрес (cp /usr/lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rules
и отредактируйте файл по мере необходимости для Вас ситуация). Оба Вы настроили имя интерфейса, которое обычно не изменялось бы (хорошо Вы могли изменить MAC-адрес на некотором NICs ;))