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