Bug 36751

Summary: Выбор сетевого интерфейса DHCP при установке по сети.
Product: Branch p10 Reporter: Bolshedvorsky Evgeny <jenya>
Component: propagatorAssignee: Leonid Krivoshein <klark>
Status: CLOSED FIXED QA Contact: qa-p10 <qa-p10>
Severity: normal    
Priority: P3 CC: alexander.s.artamonov, antohami, iv, klark, mike, nickf, rider, sem
Version: не указана   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
no_interface_on_boot.jpg
none
ifaces.jpg
none
ifaces_error.jpg
none
Во вложении скрин с виртуалки, которая повторяет состояние кластера
none
только udev из initrd none

Description Bolshedvorsky Evgeny 2019-05-15 18:01:34 MSK
Столкнулись на эльбрусах 801/101 при установке по сети ( method:http,network:dhcp)

propagator запускает DHCP поочередно на все интерфейсы начиная с eth2(или eth1) без проверки линка и timeout минут в 5.

Хочется, что-бы интерфейсы без линка пропускались. А еще лучше возможность  передавать конкретное имя интерфейса для DHCP.
Comment 1 Leonid Krivoshein 2019-05-25 03:51:25 MSK
1) https://www.altlinux.org/Installer/common/propagator :

automatic=method:http,interface:eth1,network:dhcp

2) На подходе новый make-initrd, заменяющий propagator -- там с сетью всё будет поумнее.
Comment 2 Leonid Krivoshein 2019-06-08 01:05:56 MSK
(In reply to comment #0)
> А еще лучше возможность 
> передавать конкретное имя интерфейса для DHCP.

(In reply to comment #1)
> automatic=method:http,interface:eth1,network:dhcp

Так оно работает, как описано в документации, или нет? Багу можно закрывать?
Comment 3 Bolshedvorsky Evgeny 2019-06-18 12:17:55 MSK
> (In reply to comment #1)
> > automatic=method:http,interface:eth1,network:dhcp
> 
> Так оно работает, как описано в документации, или нет? Багу можно закрывать?
Конкретно на 801 вываливается в окошко выбора сетевых интерфейсов (static/dhcp)
 При при выборе DHCP сразу возвращается назад выбору интерфейсов.
Comment 4 Leonid Krivoshein 2019-09-29 23:44:51 MSK
(In reply to comment #3)
> > (In reply to comment #1)
> > > automatic=method:http,interface:eth1,network:dhcp
> > 
> > Так оно работает, как описано в документации, или нет? Багу можно закрывать?
> Конкретно на 801 вываливается в окошко выбора сетевых интерфейсов (static/dhcp)
>  При при выборе DHCP сразу возвращается назад выбору интерфейсов.

Всё-таки просьба привести тогда полностью вывод /proc/cmdline, где на e2k с предложенным вариантом всё равно вываливается окошко. Оно обычно вываливается, когда есть проблемы с настройками DHCP-сервера и тогда помогает дописывание ещё и полного пути к ISO-образу вместе с IP-адресом NFS-сервера. Так что здесь надо увидеть сразу ещё и весь /etc/dhcp/dhcpd.conf.
Comment 5 Антон Мидюков 2023-11-22 06:25:27 MSK
(Ответ для Bolshedvorsky Evgeny на комментарий #3)
> > (In reply to comment #1)
> > > automatic=method:http,interface:eth1,network:dhcp
> > 
> > Так оно работает, как описано в документации, или нет? Багу можно закрывать?
> Конкретно на 801 вываливается в окошко выбора сетевых интерфейсов
> (static/dhcp)
>  При при выборе DHCP сразу возвращается назад выбору интерфейсов.

Я такое смог воспроизвести в виртуалке, если подключить два интерфейса в одну сеть. Выбор интерфейса работает, но не работает dhcp. Леонид подготовил исправление:

https://git.altlinux.org/tasks/334829

В моём кейсе помогает.
Comment 6 Nikita Obukhov 2023-11-29 12:04:55 MSK
Created attachment 15123 [details]
no_interface_on_boot.jpg
Comment 7 Nikita Obukhov 2023-11-29 12:05:18 MSK
Created attachment 15124 [details]
ifaces.jpg
Comment 8 Nikita Obukhov 2023-11-29 12:05:39 MSK
Created attachment 15125 [details]
ifaces_error.jpg
Comment 9 Nikita Obukhov 2023-11-29 12:06:05 MSK
Развернул сервер сетевой установки для ВК Эльбрус.
Для установки использовался образ:
alt-server-10.2-20231122-e2kv4.iso 29b3009e61f4607c7bddd9c6e6d7ba20
Проверку загрузки выполнял на Эльбрус 801

Если в boot.conf не указан интерфейс "automatic=method:http,network:dhcp" загрузка повисает на этапе Sending DHCP request...
В install.log пишет что пытается использовать интерфейс sit0, но получить ip по dhcp не может. На другие интерфейсы не переключается.(скрин no_interface_on_boot.jpg)

При указании интерфейса в boot.conf "automatic=method:http,interface:eth0,network:dhcp" установка начинается корректно. Если переподключить dhcp не к eth0, появляется меню выбора интерфейсов(скрин ifaces.jpg). Но при выборе нужного сетевого интерфейса продолжить установку нет возможности, так как дальнейшие шаги не видно. (скрин ifaces_err.jpg)
Comment 10 Антон Мидюков 2023-11-29 12:13:37 MSK
(Ответ для Nikita Obukhov на комментарий #9)
> Но при выборе нужного сетевого интерфейса
> продолжить установку нет возможности, так как дальнейшие шаги не видно.
> (скрин ifaces_err.jpg)

Попробуйте прописать параметр загрузки nomodeset. drm модуль ядра в неудачный момент загружается.
Comment 11 Leonid Krivoshein 2023-11-29 14:39:22 MSK
(Ответ для Nikita Obukhov на комментарий #9)
> Если в boot.conf не указан интерфейс "automatic=method:http,network:dhcp"
> загрузка повисает на этапе Sending DHCP request...
По этой причине и хотели починить возможность указывать конкретный интерфейс и пропускать карты, у которых нет линка. Пропуск давно реализован в рамках другого бага, этим чинится как раз возможность указывать или выбирать сетевой интерфейс.

> В install.log пишет что пытается использовать интерфейс sit0, но получить ip
> по dhcp не может. На другие интерфейсы не переключается.(скрин
> no_interface_on_boot.jpg)
Интерфейс может быть банально заблокирован на другой стороне, узнал пост-фактум, даже в методику тестирования этот нюанс просочился.

> При указании интерфейса в boot.conf
> "automatic=method:http,interface:eth0,network:dhcp" установка начинается
> корректно.
Что говорит об успешном решении проблемы.

> Если переподключить dhcp не к eth0, появляется меню выбора
> интерфейсов(скрин ifaces.jpg). Но при выборе нужного сетевого интерфейса
> продолжить установку нет возможности, так как дальнейшие шаги не видно.
> (скрин ifaces_err.jpg)
Это уже за пределами данного бага, можно использовать VNC/headless.
Comment 12 Nikita Obukhov 2023-11-29 16:22:07 MSK
(Ответ для Leonid Krivoshein на комментарий #11)
> Это уже за пределами данного бага, можно использовать VNC/headless.
На данном этапе ip-адрес еще не получен. Подключение по vnc не возможно

(Ответ для Антон Мидюков на комментарий #10)
> Попробуйте прописать параметр загрузки nomodeset. drm модуль ядра в
> неудачный момент загружается.
Помогло, спасибо.

>Если переподключить dhcp не к eth0, появляется меню выбора интерфейсов(скрин ifaces.jpg).
Данное меню появляется не всегда.
Из 5ти загрузок, меню появилось 2 раза. После выбора DHCP и загрузки по HTTP, сетевая установка начинается корректно.
Остальные 3 раза, зависает на этапе Sending DHCP request... Сетевая установка не возможна
Comment 13 Leonid Krivoshein 2023-11-29 19:32:24 MSK
(Ответ для Nikita Obukhov на комментарий #12)
> (Ответ для Leonid Krivoshein на комментарий #11)
> > Это уже за пределами данного бага, можно использовать VNC/headless.
> На данном этапе ip-адрес еще не получен. Подключение по vnc не возможно
Было сказано в ответ на:
> при выборе нужного сетевого интерфейса
> продолжить установку нет возможности, так как дальнейшие шаги не видно.
Скорее всего, прошли дальше, судя по:

> (Ответ для Антон Мидюков на комментарий #10)
> > Попробуйте прописать параметр загрузки nomodeset. drm модуль ядра в
> > неудачный момент загружается.
> Помогло, спасибо.

> >Если переподключить dhcp не к eth0, появляется меню выбора интерфейсов(скрин ifaces.jpg).
> Данное меню появляется не всегда.
> Из 5ти загрузок, меню появилось 2 раза. После выбора DHCP и загрузки по
> HTTP, сетевая установка начинается корректно.
> Остальные 3 раза, зависает на этапе Sending DHCP request... Сетевая
> установка не возможна
Предполагаю тут один из двух вариантов (либо оба): забанненый интерфейс и особенности работы с сетевой загрузкой, упоминаемой в методике тестирования.

В любом случае, кажется, проблема решилась, а вновь выявленное относится не к ней.
Comment 14 Leonid Krivoshein 2023-12-26 16:28:59 MSK
Так что с task #334829? Кто одобрит в Сизиф?
Comment 15 Александр 2024-10-09 20:26:40 MSK
10.2 x86_64 Подтверждаю такое поведение инсталлятора при autoinstall. Поставил на всякий случай nomodeset, но для кластера предпочел перейти на static адреса сразу, т.е.

method:nfs,network:static,ip:<ip узла>

method:http в такой постановке не работает. Не видит почему-то сервер установки. Предлагает меню выбора. В выборе уже прописан правильный сервер и директория верная, но подтверждение возвращает туда же.

Оказалось, что так тоже не всегда работает - иногда просто синий экран Welcome to ALT Linux.

Есть какой-то "железный" метод, чтобы работало всегда???
Comment 16 Leonid Krivoshein 2024-10-09 20:41:51 MSK
(In reply to Александр from comment #15)
> Есть какой-то "железный" метод, чтобы работало всегда???
Описанное вами не имеет совсем никакого отношения к обсуждаемому тут багу. Вам стоит подробно описать условия, железо, задачу и ожидания в новом баге.

По данному багу было решение и много пингов, исправляющий таск так и висит в "кармане" без одобрения. Тем временем пропагатор отправляется в музей истории, замена будет в p11: https://www.altlinux.org/Installer/common/altboot
Comment 17 Александр 2024-12-11 17:19:42 MSK
Описанное мною есть именно ошибка при автоматической установке по сети на сервер с несколькими сетевыми устройствами. Я пытался попробовать другие варианты, в надежде, что заработает, но безуспешно. Поэтому я их перечислил.
Но проблема в невозможности однозначно определить сетевое устройство для установщика. В одном случае это зависание на Sending DHCP request, в другом окно выбора сетевого интерфейса. Такое поведение происходит не всегда, поэтому проблемы не в DHCP.
У меня кластер на x86_64. В одном из узлов 4 одинаковых сетевых интерфейса и там самые большие проблемы, потому что правильный интерфейс практически никогда не выбирается.
Я вижу, что есть исправление propagator, но как мне его применить к образу Альт Линукс сервер 10.2? Пересобирать образ с новым propagator? но он требует GLIBC2.33, 2.34, 2.38 и я не уверен, что получу образ стабильный после такого.
Будьте добры, посоветуйте что попробовать сделать и как.
Comment 18 Александр 2024-12-11 17:21:55 MSK
Created attachment 17373 [details]
Во вложении скрин с виртуалки, которая повторяет состояние кластера

Странные кракозябры в trying with iface
Comment 19 Александр 2024-12-11 18:35:04 MSK
Проблема в том, что сетевые интерфейсы в произвольном порядке инициализируются. И периодически та карта, которая пробуется DHCP, оказывается не той, которой MAC адрес используется при загрузке по сети.
Так что наверно дело не в propagator...
Comment 20 Антон Мидюков 2024-12-11 18:48:11 MSK
(Ответ для Александр на комментарий #19)
> Проблема в том, что сетевые интерфейсы в произвольном порядке
> инициализируются. И периодически та карта, которая пробуется DHCP,
> оказывается не той, которой MAC адрес используется при загрузке по сети.
> Так что наверно дело не в propagator...

Так вы должны указать желаемый интерфейс. Например так: method:nfs,interface:enp0,network:static,ip:<ip узла>

Вместо enp0 имя реального интерфейса. Нужно загрузиться обычным образом и узнать имя интерфейса.
Comment 21 Александр 2024-12-11 19:01:15 MSK
Антон, спасибо за ответ.
Я читал ветку и все варианты пробовал. Я написал, что назначить интерфейс не получается и прикрепил дополнительно скриншот. Со статическим IP аналогично не работает.
Так как интерфейсы поднимаются в произвольном порядке имя требуемого адаптера может измениться.
При передаче ядру параметра net.ifnames=0 все тоже самое, только с именами eth0,1, и т.д.
Я бы хотел все-таки попробовать новый propagator. Я пересобрал его для x86_64 под 10 ветку, но не знаю дальше с ним что делать...
Comment 22 Антон Мидюков 2024-12-11 19:24:48 MSK
(Ответ для Александр на комментарий #21)
> Антон, спасибо за ответ.
> Я читал ветку и все варианты пробовал. Я написал, что назначить интерфейс не
> получается и прикрепил дополнительно скриншот. Со статическим IP аналогично
> не работает.
> Так как интерфейсы поднимаются в произвольном порядке имя требуемого
> адаптера может измениться.
> При передаче ядру параметра net.ifnames=0 все тоже самое, только с именами
> eth0,1, и т.д.

Никаких eth0, eth1 быть не должно. В initrd.img запакованы udev-правила, по которым должны стабильно выдаваться одни и те же уникальные имена. Вы должны указать правильное имя интерфейса.

> Я бы хотел все-таки попробовать новый propagator. Я пересобрал его для
> x86_64 под 10 ветку, но не знаю дальше с ним что делать...

Команда сборки initrd должна быть на iso-образе в файле .disk/mkinitrd, рядом initrd.mk - конфиг, с которым нужно собирать initrd.img.
Comment 23 Leonid Krivoshein 2024-12-11 19:36:32 MSK
(In reply to Александр from comment #18)
> Странные кракозябры в trying with iface
Да, таск #334829 исправляет именно эту порчу памяти. Мне непонятно, почему два года, как эта проблема описана, исправлена в пакете, но всё равно попала в продукты.

(In reply to Антон Мидюков from comment #22)
> Никаких eth0, eth1 быть не должно. В initrd.img запакованы udev-правила, по
> которым должны стабильно выдаваться одни и те же уникальные имена. Вы должны
> указать правильное имя интерфейса.
Не уверен, что имя интерфейса стабильно во всех случаях, зависит ещё от ядра и модуля сетевой карты. Но память буфера с именем интерфейса может портиться даже, если интерфейс выбран таким способом. И тогда propagator не может сконфигурировать этот интерейс. Проблема как раз характерна для машин с двумя и более сетевыми картами.

(In reply to Александр from comment #17)
> Будьте добры, посоветуйте что попробовать сделать и как.
Попробуйте отключить все карты, кроме одной, на которой будет несущая. Через module_blacklist=<module> и параметры модуля, позволяющие отключить не нужные instance.
Comment 24 Александр 2024-12-11 19:41:00 MSK
Антон, я запустил установку без net.ifnames=0, посмотрел, как именуется интерфейс при загрузке и прописал его (см. скриншот). Но загрузка выдала окно выбора интерфейса.
Comment 25 Антон Мидюков 2024-12-11 19:44:00 MSK
(Ответ для Александр на комментарий #24)
> Антон, я запустил установку без net.ifnames=0, посмотрел, как именуется
> интерфейс при загрузке и прописал его (см. скриншот). Но загрузка выдала
> окно выбора интерфейса.

Понятно. Тогда пересобирать с исправленным propagator только.
Comment 26 Александр 2024-12-11 19:44:26 MSK
Created attachment 17376 [details]
только udev из initrd

Обращаю внимание на строку trying with iface. Там должно быть имя интерфейса enp0s10f1, но там нечитаемые символы...
Comment 27 Александр 2024-12-11 19:49:57 MSK
(Ответ для Leonid Krivoshein на комментарий #23)
> (In reply to Александр from comment #18)
> > Странные кракозябры в trying with iface
> Да, таск #334829 исправляет именно эту порчу памяти. Мне непонятно, почему
> два года, как эта проблема описана, исправлена в пакете, но всё равно попала
> в продукты.
> 
> (In reply to Антон Мидюков from comment #22)
> > Никаких eth0, eth1 быть не должно. В initrd.img запакованы udev-правила, по
> > которым должны стабильно выдаваться одни и те же уникальные имена. Вы должны
> > указать правильное имя интерфейса.
> Не уверен, что имя интерфейса стабильно во всех случаях, зависит ещё от ядра
> и модуля сетевой карты. Но память буфера с именем интерфейса может портиться
> даже, если интерфейс выбран таким способом. И тогда propagator не может
> сконфигурировать этот интерейс. Проблема как раз характерна для машин с
> двумя и более сетевыми картами.
> 
> (In reply to Александр from comment #17)
> > Будьте добры, посоветуйте что попробовать сделать и как.
> Попробуйте отключить все карты, кроме одной, на которой будет несущая. Через
> module_blacklist=<module> и параметры модуля, позволяющие отключить не
> нужные instance.

Леонид, можно по-подробнее про отключение ненужных instance. У меня все 4 карты melanox, так что модуль один для всех. Я думал, что есть параметры, но где искать? Это у вендора карты искать или у Альт Линукс есть свои параметры?
Comment 28 Leonid Krivoshein 2024-12-11 20:10:07 MSK
(In reply to Александр from comment #27)
> Леонид, можно по-подробнее про отключение ненужных instance. У меня все 4
> карты melanox, так что модуль один для всех. Я думал, что есть параметры, но
> где искать? Это у вендора карты искать или у Альт Линукс есть свои параметры?
Скорее всего, в выводе modinfo mlx5_core |grep parm или изучать документацию по сетевой карте, бывает, что отключается внешней родной утилитой, так как нет своего BIOS Setup. Но в случае Mellanox 10G и выше с пропагатором есть и другая проблема, особенно, если получается слишком длинное имя интерфейса или МАК-адрес имеет 20 вместо 6 октетов. Тогда проще временно использовать другую сетевую карту, а модуль mellanox заблэклистить. Или раздеплоить готовую систему, сняв бэкап с виртуалки, используюя образ регулярки ALT Rescue на p11 или Сизифе.
Comment 29 Антон Мидюков 2025-01-04 17:13:42 MSK
В Сизифе и p11 не используется propagator, поэтому на p10.
Comment 30 Repository Robot 2025-02-04 13:01:38 MSK
propagator-20250120-alt1 -> p10:

 Mon Jan 20 2025 Leonid Krivoshein <klark@altlinux> 20250120-alt1
 - improve build and spec
 Wed Nov 22 2023 Leonid Krivoshein <klark@altlinux> 20231122-alt1
 - Memory corruption fix (closes: #36751, #48516)
 Tue Nov 21 2023 Leonid Krivoshein <klark@altlinux> 20231121-alt1
 - improvements to logging during boot loading (closes #37201)