Summary: | initconf: не сохраняет текущий конфиг в /etc/net/ifaces для типа сетевой карты с именем, отличным от eth* | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Николай Степаненко <nixtrian> | ||||||||||
Component: | etcnet | Assignee: | Alexey Shabalin <shaba> | ||||||||||
Status: | NEW --- | QA Contact: | qa-sisyphus | ||||||||||
Severity: | major | ||||||||||||
Priority: | P5 | CC: | alimektor, ldv, rider, sem, shaba, vseleznv | ||||||||||
Version: | unstable | ||||||||||||
Hardware: | all | ||||||||||||
OS: | Linux | ||||||||||||
Attachments: |
|
Добрый день! Пожалуйста, дополнительно предоставьте следующую информацию: 1. Операционная система, версия, на которой воспроизвелась ошибка. 2. Выводы следующих команд: $ uname -a $ cat /etc/os-release $ apt-repo 3. Опишите, пожалуйста, по шагам, что Вы хотели сделать и какого результата ожидали. Created attachment 12494 [details]
etcnet-0.9.27-alt1.noarch
Доброго дня, 1. ОС - свежеустановленный alt p10 JeOS Думал что проблема пофикшена в версии etcnet-0.9.27-alt1.noarch (до этого стояла 0.9.26) Сегодня воспроизвел проблему на виртуалке, затем обновился и снова воспроизвел (скрин приложил предыдущим комментарием) 2. [root@host-15 ~]# uname -a Linux host-15 5.10.156-std-def-alt1 #1 SMP Wed Nov 30 09:36:34 UTC 2022 i686 GNU/Linux [root@host-15 ~]# cat /etc/os-release NAME="starter kit" VERSION="p10 (Hypericum)" ID=altlinux VERSION_ID=p10 PRETTY_NAME="ALT Starterkit (Hypericum)" ANSI_COLOR="1;33" CPE_NAME="cpe:/o:alt:starterkit:p10" HOME_URL="http://en.altlinux.org/starterkits" BUG_REPORT_URL="https://bugs.altlinux.org/" [root@host-15 ~]# [root@host-15 ~]# apt-repo -bash: apt-repo: command not found [root@host-15 ~]# cat /etc/apt/sources.list.d/alt.list # ftp.altlinux.org (ALT Linux, Moscow) # ALT Platform 10 #rpm [p10] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/i586 classic #rpm [p10] ftp://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/noarch classic rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/i586 classic rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux p10/branch/noarch classic #rpm [p10] rsync://ftp.altlinux.org/ALTLinux p10/branch/i586 classic #rpm [p10] rsync://ftp.altlinux.org/ALTLinux p10/branch/noarch classic [root@host-15 ~]# rpm -q -l | grep etcnet rpm: no arguments given for query [root@host-15 ~]# rpm -q -a | grep etcnet etcnet-defaults-server-0.9.27-alt1.noarch etcnet-0.9.27-alt1.noarch (Ответ для Николай Степаненко на комментарий #2) > Создано вложение 12494 [details] [подробности] > etcnet-0.9.27-alt1.noarch Система установлена в минимальном профиле? (Ответ для Evgeny Shesteperov на комментарий #4) > Система установлена в минимальном профиле? Увидел комментарий #3, попробую воспроизвести на ALT Server 10.0 в минимальном профиле. Я так понимаю, там на искомой строке должно быть if [[ "${iface//[0-9]*/}" = "eth" || "${iface//[0-9]*/}" = "enp" ]]; Но это опять же только кейс с enp*, а бывают еще всякие ens* [root@host-15 ~]# /etc/net/scripts/contrib/initconf write
WARNING: /usr/sbin/ethtool is not available, module detection will be skipped
Processing interface 'lo': configuration exists
Processing interface 'enp0s3': finished
[root@host-15 ~]# diff /etc/net/scripts/contrib/initconf write
92c92
< if [[ "${iface//[0-9]*/}" = "eth" || "${iface//[0-9]*/}" = "enp" ]]; then
---
> if [ "${iface//[0-9]*/}" = "eth" ]; then
[root@host-15 ~]# diff -Naur /etc/net/scripts/contrib/initconf write
--- /etc/net/scripts/contrib/initconf 2023-02-10 14:02:55.232141663 +0000
+++ write 2023-02-10 12:55:08.718191588 +0000
@@ -89,7 +89,7 @@
esac
fi
# many others try to look as ethernet, so let's filter by iface name...
- if [[ "${iface//[0-9]*/}" = "eth" || "${iface//[0-9]*/}" = "enp" ]]; then
+ if [ "${iface//[0-9]*/}" = "eth" ]; then
# find and use link-level address
LLADDR=`$IP li sh dev $iface | fgrep 'link/ether' | sed 's/^ *link\/ether //' | cut --delimiter=' ' --fields=1`
# ...and by valid MAC address
Created attachment 12495 [details]
менее грязный патч
Вот тут коллега подсказывает if [[ "${iface}" =~ (enp|eth) ]]; [[ "$iface" =~ ^(en[a-z]|eth) ]] Created attachment 12497 [details]
Исправление для определения типа сетевого интерфейса по имени
en[a-z]|eth
Версия ====== - etcnet-0.9.27-alt1 Дистрибутивы ============ - P10 ALT Server 10.0, установленный в профиле Minimal, обновленный до текущего Sisyphus Окружение ========= Виртуальная машина на Proxmox Virtual Environment. По умолчанию интерфейсам присваиваются имена ens19, ens20 и так далее. Раздаётся DHCP. Конфигурация ens19: # cat /etc/net/ifaces/ens19/options BOOTPROTO=dhcp TYPE=eth CONFIG_WIRELESS=no SYSTEMD_BOOTPROTO=dhcp4 CONFIG_IPV4=yes DISABLED=no NM_CONTROLLED=no SYSTEMD_CONTROLLED=no Шаги воспроизведения ==================== 1. Добавить к виртуальной машине ещё один интерфейс (ens20). 2. На данном этапе интерфейс ens20 не сконфигурирован, так что, скопировать конфигурацию ens19 в ens20: # cp -r /etc/net/ifaces/ens19/ /etc/net/ifaces/ens20 3. Перезапустить network: # systemctl restart network 4. На данном этапе ens20 сконфигурирован, так что, удалить его конфигурацию: # rm -rf /etc/net/ifaces/ens20 5. Выполнить тест initconf: # /etc/net/scripts/contrib/initconf WARNING: /usr/sbin/ethtool is not available, module detection will be skipped Processing interface 'lo': configuration exists Processing interface 'ens19': configuration exists Processing interface 'ens20':TEST: will write to file /etc/net/ifaces/ens20/ipv4address: --------8<--------8<--------8<--------8< XX.XX.XX.XX/XX --------8<--------8<--------8<--------8< TEST: will write to file /etc/net/ifaces/ens20/ipv4route: --------8<--------8<--------8<--------8< default via XX.XX.XX.XX proto dhcp src XX.XX.XX.XX metric 1003 --------8<--------8<--------8<--------8< finished 6. Как видно из описания https://www.altlinux.org/Etcnet#Общие_сведения, шаг 4, данный сценарий с аргументом write должен записать показанные изменения: # /etc/net/scripts/contrib/initconf write Ожидаемый результат: создание конфигурации ens20 в папке /etc/net/ifaces. Фактический результат: ошибка, несмотря на то, что тест (то есть запуск без опции write) проходит успешно Processing interface 'ens20':/etc/net/scripts/contrib/initconf: строка 38: /etc/net/ifaces/ens20/ipv4address: Нет такого файла или каталога /etc/net/scripts/contrib/initconf: строка 38: /etc/net/ifaces/ens20/ipv4route: Нет такого файла или каталога finished Дополнительно: если переименовать интерфейс, например, в eth0 (eth1, eth2, и т.д.), то всё работает корректно, например (согласно https://www.altlinux.org/Настройка_сетевой_карты,_краткое_пособие_для_начинающих#Переименование_имени_сетевого_интерфейса): # ip link set ens20 down # ip link set ens20 name eth0 # cp -r /etc/net/ifaces/ens19/ /etc/net/ifaces/eth0 # systemctl restart network # ip -c address show eth0 ### адрес получен # rm -rf /etc/net/ifaces/eth0 # /etc/net/scripts/contrib/initconf write # stat /etc/net/ifaces/eth0/ipv4address Воспроизводится в P10. |
Created attachment 12477 [details] Грязный патч, решающий проблему Доброго дня! # /etc/net/scripts/contrib/initconf write выдает ошибку об отсутствии файла при условии, что имя сетевой карты enp4s0 например Вот такой dirty hack решил проблему (во вложении). Готов по возможности оказать содействие в тестировании, переписывании, дописывании при необходимости tlg: @NikolayStepanenko