Bug 13074

Summary: [fix 21] auto-krokodil: remove kernels for which binary kernel modules cannot be installed
Product: [ROSA-based products] ROSA Fresh Reporter: Mikhail Novosyolov <m.novosyolov>
Component: Packages from MainAssignee: ROSA Linux Bugs <bugs>
Status: RESOLVED FIXED QA Contact: ROSA Linux Bugs <bugs>
Severity: normal    
Priority: Normal CC: pastordidi, survolog, v.potapov
Version: AllFlags: v.potapov: qa_verified-
Target Milestone: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Platform: 2021.1 ROSA Vulnerability identifier:
RPM Package: ISO-related:
Bad POT generating: Upstream:
Attachments: screenshot
screenshot

Description Mikhail Novosyolov 2023-01-06 14:50:11 MSK
********** QA ADVISORY **********

auto-krokodil 0.26-1
- Fix deleting older kernels if binary modules for them cannot be installed
- clean up dnf cache
- do not list transaction twice
https://abf.io/build_lists/4298207
https://abf.io/build_lists/4298208
https://abf.io/build_lists/4298209
https://abf.io/build_lists/4298210
https://abf.io/build_lists/4298211

Пример.

Система была поставлена давно и с тех пор обновлялась. Внезапно захотелось поставить нвидиодрайвер. Стоит 3 последних ядра:
kernel-5.10-generic 5.10.74-2
kernel-5.10-generic 5.10.118-2
kernel-5.10-generic 5.10.155-1
В репозиториях есть бинарный модуль только для последнего ядра.

До этой правки в такой ситуации ничего не ставилось, а кодом возврата крокодила был нуль.

Теперь сначала обновляем систему, потом пробуем поставить драйвер без удаления старых ядер, смотрим, сделал ли dnf что-либо, если ничего не сделал, то пробуем заставить его удалить старые ядра.
Comment 1 Grigorev Andrey 2023-01-08 14:13:35 MSK
Про обновление системы автоматом спорно, но согласился бы.
Хотя если пользователь подключил какой-нибудь тестинг-репозиторий и ждёт, не обновляя систему из-за какого-то пакета и не прописав его в конфиг, автообновление может стать неожиданностью.

Про удаление ядра слишком сурово, имхо.
Вот предложить его удалить вполне себе идея. Может даже с y/n.
А-ля
"В репозитории для драйвера XXX не сохранилось модуля YYY под ядро ZZZ
Удалить данное ядро?
Y/n"

Впрочем, и про обновление можно сделать запрос y/n.
Comment 2 Dmitry Postnikov 2023-01-09 10:35:05 MSK
Нет Нвидии, не проверю.
Comment 3 Vladimir Potapov 2023-01-10 10:05:21 MSK
Created attachment 5854 [details]
screenshot

Не могу воспроизвести проблему
Вот у меня 5 ядер двух веток, запускаю автокрокодил - он ставит драйвера для ядер двух последних версий, это вполне корректное поведение
(а вот то, что при этом не спрашивает, после показа действия, разрешения - напрягает).
Comment 4 Mikhail Novosyolov 2023-01-10 11:40:19 MSK
Тут по одной версии каждой ветки, а я про несколько версий одной ветки
Comment 5 Mikhail Novosyolov 2023-01-10 13:08:54 MSK
(In reply to Grigorev Andrey from comment #1)
> Про обновление системы автоматом спорно, но согласился бы.
> Хотя если пользователь подключил какой-нибудь тестинг-репозиторий и ждёт, не
> обновляя систему из-за какого-то пакета и не прописав его в конфиг,
> автообновление может стать неожиданностью.
> 
> Про удаление ядра слишком сурово, имхо.
> Вот предложить его удалить вполне себе идея. Может даже с y/n.
> А-ля
> "В репозитории для драйвера XXX не сохранилось модуля YYY под ядро ZZZ
> Удалить данное ядро?
> Y/n"
> 
> Впрочем, и про обновление можно сделать запрос y/n.

Команда "autoinstall" означает что-то вроде такого: "я ленив и устал, не хочу ни в чем разбираться, сделай все за меня".
Мы же не Windows, чтобы задавать домохозяйке замысловатые вопросы.
Существует команда "best-driver", которая покажет пакет, который будет поставлен командой autoinstall. Те, кто не хочет автоматики, могут сделать "kroko-cli best-driver", получить в ответ, например, "nvidia470-core", и сделать "dnf install nvidia470-core".
Крокодил пытается, пока что успешно, вынести вообще все в пакеты, сведя свои функции к только лишь поиску подходящего пакета и запуску его установки.
Да, можно добавить что-то типа kroko-cli autoinstall --manual, что уберет ключ -y у вызовов dnf, но это как-то не особо логично с учетом возможности вручную запустить установку пакета.
Comment 6 Mikhail Novosyolov 2023-01-10 13:14:10 MSK
--manual получится экивалентном sudo dnf install $(sudo kroko-cli best-driver)
Comment 7 Mikhail Novosyolov 2023-01-10 13:15:04 MSK
Для целей тестирования, может, и полезно будет...
Comment 8 Vladimir Potapov 2023-01-12 12:29:50 MSK
(In reply to Mikhail Novosyolov from comment #7)
> Для целей тестирования, может, и полезно будет...
Просто текущее поведение уникально. dbf _всегда_ спрашивает перед изменениями, показывая, что он делать будет. Ожидается такое же поведение и от автокрокодила.
Comment 9 Vladimir Potapov 2023-01-12 12:33:03 MSK
Created attachment 5855 [details]
screenshot

попробовал так. Удалил последнее ядро ветки 5.10, загрузился с предпоследним, для которого нет модулей.

Крокодил (см скриншот) корректно это отработал, ставит ядро 5.10 для которого модули есть.
Т.е. ошибочная ситуация не воспроизводится, все и так работает как дОлжно.
Comment 10 Mikhail Novosyolov 2023-01-12 14:34:02 MSK
(In reply to Vladimir Potapov from comment #9)
> Created attachment 5855 [details]
> screenshot
> 
> попробовал так. Удалил последнее ядро ветки 5.10, загрузился с
> предпоследним, для которого нет модулей.
> 
> Крокодил (см скриншот) корректно это отработал, ставит ядро 5.10 для
> которого модули есть.
> Т.е. ошибочная ситуация не воспроизводится, все и так работает как дОлжно.

Но я же как-то поймал ошибку, которую обошел этим исправлением... Может быть, \5.10.х должно быть 3 штуки?
Comment 11 Mikhail Novosyolov 2023-01-12 14:36:56 MSK
Вот сохранился скриншот того, что начало удаляться после этого исправления: https://file-store.rosalinux.ru/download/d8aa9ea7e9fd442ee98f9d773370eaa0cd97fa5f
По идее можно достать даже снимок btrfs до обновления, если не додумаемся, в чем отличие.
Comment 12 Grigorev Andrey 2023-01-13 10:47:44 MSK
(In reply to Vladimir Potapov from comment #8)
> (In reply to Mikhail Novosyolov from comment #7)
> > Для целей тестирования, может, и полезно будет...
> Просто текущее поведение уникально. dbf _всегда_ спрашивает перед
> изменениями, показывая, что он делать будет. Ожидается такое же поведение и
> от автокрокодила.

На вид не должно быть сложным. Достаточно в вызове dnf опустить -y.
Comment 13 Vladimir Potapov 2023-01-18 13:16:24 MSK
ошибка не воспроизводится, текущее поведение является вполне корректным
Comment 14 Vladimir Potapov 2023-01-18 13:16:46 MSK
*****************************
QA Denied