Символ ' ~' используется для указания домашнего каталога текущего пользователя в системах UNIX. Поскольку имя пользователя на вашем компьютере отличается от имени пользователя на компьютере, используемом в учебнике, на который вы ссылались, к переменной PATH были добавлены разные пути к каталогам. Используя ' ~', вам не нужно вручную вводить имя пользователя для обращения к домашнему каталогу пользователя, что позволило создателю учебника создать код, который заставляет переменную PATH просматривать оба ваших домашних каталога, даже если оба ваших систем имеют разные пути к вашим домашним каталогам. (напр. /home/joe/bin
и /home/jpols/bin
— разные каталоги, но ~/bin
можно использовать для обозначения обоих, так как «~» будет расширен системой до правильного пути)
Можно изменить имена интерфейсов с помощьюudev
:Редактировать/etc/udev/rules.d/70-persistent-net.rules:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1e:06:32:c1:9d", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="50:3e:aa:4a:71:2a", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="wlan0"
Работает, и после перезагрузки имена интерфейсов изменились.
Но моя проблема не решена. Я до сих пор не знаю, почему он не работает с systemd-networkd
.
У меня точно такая же проблема с одним интерфейсом. Если это имеет значение, это интерфейс USB с использованием драйвера asix.
Два моих интерфейса переименовываются с помощью файлов.link, а этот — нет. Другая (идентичная )установка, которая все еще использует переименование udev, успешно переименовывает все три интерфейса.
Nov 23 22:12:16 xen17 vmunix: [ 7256.680568] asix 1-2:1.0 eth0: register 'asix' at usb-0000:00:14.0-2, ASIX AX88772 USB
2.0 Ethernet, 00:0e:c6:b2:fb:30
Nov 23 22:12:16 xen17 vmunix: [ 7256.680691] usbcore: registered new interface driver asix
Nov 23 22:12:16 xen17 vmunix: [ 7256.684159] systemd-udevd[6406]: Using default interface naming scheme 'v240'.
Nov 23 22:12:16 xen17 vmunix: [ 7256.688004] systemd-udevd[6406]: link_config: autonegotiation is unset or enabled, the
speed and duplex are not writable.
Nov 23 22:12:16 xen17 vmunix: [ 7256.688284] asix 1-2:1.0 enx000ec6b2fb30: renamed from eth0
Но даже игнорируя файл.link, он получает неправильное имя:
root@xen17:/var/log# udevadm test-builtin net_id /sys/class/net/enx000ec6b2fb30 2>/dev/null
ID_NET_NAMING_SCHEME=v240
ID_NET_NAME_MAC=enx000ec6b2fb30
ID_OUI_FROM_DATABASE=ASIX ELECTRONICS CORP.
ID_NET_NAME_PATH=enp0s20u2
Должен называться enp0s20u2, так как PATH имеет приоритет над MAC
И тест usbadm говорит, что у него должно быть правильное имя из моего файла.link:
root@xen17:/var/log# udevadm test /sys/class/net/enx000ec6b2fb30 2>/dev/null
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/net/enx000ec6b2fb30
INTERFACE=enx000ec6b2fb30
IFINDEX=48
ACTION=add
SUBSYSTEM=net
ID_NET_NAMING_SCHEME=v240
ID_NET_NAME_MAC=enx000ec6b2fb30
ID_OUI_FROM_DATABASE=ASIX ELECTRONICS CORP.
ID_NET_NAME_PATH=enp0s20u2
ID_VENDOR=ASIX_Elec._Corp.
ID_VENDOR_ENC=ASIX\x20Elec.\x20Corp.
ID_VENDOR_ID=0b95
ID_MODEL=AX88772A
ID_MODEL_ENC=AX88772A
ID_MODEL_ID=7720
ID_REVISION=0001
ID_SERIAL=ASIX_Elec._Corp._AX88772A_000BAF
ID_SERIAL_SHORT=000BAF
ID_TYPE=generic
ID_BUS=usb
ID_USB_INTERFACES=:ffff00:
ID_USB_INTERFACE_NUM=00
ID_USB_DRIVER=asix
ID_USB_CLASS_FROM_DATABASE=Vendor Specific Class
ID_USB_SUBCLASS_FROM_DATABASE=Vendor Specific Subclass
ID_VENDOR_FROM_DATABASE=ASIX Electronics Corp.
ID_MODEL_FROM_DATABASE=AX88772
ID_PATH=pci-0000:00:14.0-usb-0:2:1.0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1_0
ID_NET_DRIVER=asix
ID_NET_LINK_FILE=/etc/systemd/network/10-persistent-net-usblan2.link
ID_NET_NAME=usblan2
USEC_INITIALIZED=7256957740
run: 'bridge-network-interface'
run: 'ifupdown-hotplug'
К счастью, я использую это устройство в интерфейсе моста, поэтому я могу просто сказать ему импортировать через все три имени (два, очевидно, не удастся )поэтому, если что-то изменится и это начнет работать в будущем, я выиграл не ломайте себе голову, пытаясь понять, что изменилось и почему моя сеть не работает.
Я нашел свою проблему:
Я использую Debian и есть:
/lib/udev/rules.d/73-usb-net-by-mac.rules
Что, кажется, имеет приоритет над правилами systemd. Комментируем весь этот файл, и теперь файл.link работает.
Так что я бы посоветовал ОП поискать где-нибудь похожее правило udev, которое превосходит именование systemd.
Думаю, это ошибка. Я перехожу с правил udev только потому, что в документации, которую я видел, говорится, что они уходят со следующей стабильной версией. Но похоже, что вы не можете тривиально переключаться, если используете сетевые устройства USB.