From: Leonid Krivoshein <klark.devel@gmail.com> To: make-initrd@lists.altlinux.org Subject: Re: [make-initrd] Possible missing firmware Date: Sun, 6 Jul 2025 01:40:19 +0300 Message-ID: <2f81ae4a-606a-4cfd-9bdd-4d8c234d74c4@gmail.com> (raw) In-Reply-To: <aGk-B9mghig2sQqw@example.org> On 7/5/25 18:00, Alexey Gladkov wrote: > On Sat, Jul 05, 2025 at 04:04:05PM +0300, Leonid Krivoshein wrote: >>> Прошу, потому что из тех сообщений об ошибках я себе нафантазировал одно, >>> а ты и Антон думаете скорее всего про другое. >> Пакеты с firmware и пакеты с ядрами сопровождаются разными людьми, они >> обновляются не синхронно, не согласованно. > Ну то есть проблема всё-таки организационная. Из-за несогласованности > мантейнеров пакетов страдают пользователи. Да, потому что де-факто мы можем даже обновлять ядро независимо от юзерспейса. Но не только организационная, потому что есть много причин считать её ещё и технической. Хотя бы потому, что между ядром и пакетами firmware фактически не обозначено жёстких файловых зависимостей. Даже неведомые нам ошибки в ядре могли бы ловиться на более ранней стадии, а не когда мы уже пытаемся использовать нерабочую пару ядро-initrd. Поскольку в initramfs создаётся усечённый набор модулей и прошивок, он больше подходит для решения данной задачи, некоторые проблемы порой возникают из-за усечения набора, их может быть поздно исправлять в stage2 rootfs, когда модуль уже неудачно загрузился на первой стадии. >> О проблемах разъезда путей в ядре и соответствующей firmware мы всегда >> узнаём постфактум по соответствующим багам, > Что ты имеешь в виду под разъездом путей ? > > /lib/firmware/nvidia/470.256.02/gsp.bin > /lib/firmware/nvidia/570.169/gsp_ga10x.bin > /lib/firmware/nvidia/570.169/gsp_tu10x.bin > > Ты про вот такие пути, где есть версия ? Это единственный пример с > проблемными путями, который я смог придумать. Приведу в ретроспективе несколько примеров, в реальности их можно найти в нашей багзиле намного больше, у них разные корни, а сколько ещё будет... https://bugzilla.altlinux.org/40079 https://bugzilla.altlinux.org/48803 https://bugzilla.altlinux.org/46348 https://bugzilla.altlinux.org/40065 https://bugzilla.altlinux.org/50471 https://bugzilla.altlinux.org/54261 Нельзя утверждать на 100%, что все эти примеры про разъезд путей или ядра с firmware. Большинство точно про это, другие с некоторой вероятностью не исключают и такой разъезд. >> когда новое initrd уже сгенерировано и не получилось загрузиться или >> получилось, но эта новая связка создала проблемы при дальнейшей работе. >> Мы могли бы выявлять потенциальные проблемы уже на этапе создания >> initrd. А без реализации предлагаемого мы не сможем даже примерно >> оценить масштаб этой проблемы для будущих обновлений. Поэтому я считаю, >> что такой инструмент был бы полезным. Хотя бы подсчитывать число >> предупреждений без вывода их в stderr, если не указан "-v". > Я считаю, что никто из пользователей не будет смотреть на эти > предупреждения об отсутствующих firmware. > > Пользователю не ясно какие firmware необходимы, а какие нет. Список в > десяток или сотни строк про отсутствующие чего-то-там никак пониманию не > помогут. Непонятно, что делать пользователю, если он такое видит. Если это > ошибка, то это должно быть ошибкой. > > Я уже не говорю, про обновления через gui всякие, где выхлопа от генерации > initrd вообще не видно. Например на моей системе это вообще происходит в > бэкграунде, не смотря что обновление не через gui происходит. Поэтому вариант с фильтром и только с "-v" для начала всех бы устроил. В основной вывод могла бы попадать лишь одна строчка со статистикой после отбрасывания отфильтрованного. Like this: W: Possible missing firmware counters: 481 file(s), 8 module(s). > Вот варианты решения проблемы в порядке трудозатратности. > > 1. Добавить в depinfo режим отображения отсутствующих firmware и > использовать эту утилиту для проверки при сборки пакетов с > модулями/firmware. Так как именно при сборке пакета ломается загрузка. Загрузка ломается (или это иначе выражается) после активации новой пары ядро-initrd. Но да, сборка пакета -- ещё более ранняя стадия, нежели сборка initrd. Вот только при сборке initrd без этой утилиты не обойтись, поскольку создаётся усечённый набор, а не всё, что попадает в stage2 rootfs. > module /lib/modules/6.15.4-gentoo-dist/kernel/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko > \_ module /lib/modules/6.15.4-gentoo-dist/kernel/net/wireless/cfg80211.ko > \_ missing-firmware regulatory.db > \_ missing-firmware regulatory.db.p7s > \_ module /lib/modules/6.15.4-gentoo-dist/kernel/net/rfkill/rfkill.ko > \_ module /lib/modules/6.15.4-gentoo-dist/kernel/net/mac80211/mac80211.ko > \_ module /lib/modules/6.15.4-gentoo-dist/kernel/lib/crypto/libarc4.ko > > 2. Поскольку не существует хорошего способа определить необходимые > firmware, то можно сделать режим, в котором будут требоваться _все_ > firmware для пакуемых модулей. > > 3. Можно сделать фичу по определению firmware требовавшихся для загрузки > текущего ядра и пробовать использовать эту информацию. В этом случае можно > будет по аналогии с MODULES_ADD добавить контроль за необходимыми > firmware. > Из минусов, что это всё ещё хак по определению требуемых firmware и всё > равно нужно будет решать задачу с путями. Пункт 3 уязвим к односторонним изменениям в апстриме ядра или firmware. Остальное тебе видней. Я лишь заметил, что в update-initramfs это появилось. И ведь тоже не на пустом месте. Можно же посмотреть, как у других решено. -- WBR, Leonid Krivoshein.
next prev parent reply other threads:[~2025-07-05 22:40 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2025-07-02 23:37 Leonid Krivoshein 2025-07-04 10:42 ` Alexey Gladkov 2025-07-04 10:43 ` Anton Midyukov 2025-07-04 11:38 ` Alexey Gladkov 2025-07-04 13:20 ` Alexey Gladkov 2025-07-04 15:03 ` Alexey Gladkov 2025-07-04 15:23 ` Leonid Krivoshein 2025-07-04 18:23 ` Alexey Gladkov 2025-07-05 0:47 ` Leonid Krivoshein 2025-07-05 8:36 ` Alexey Gladkov 2025-07-05 13:04 ` Leonid Krivoshein 2025-07-05 15:00 ` Alexey Gladkov 2025-07-05 22:40 ` Leonid Krivoshein [this message] 2025-07-05 23:57 ` Alexey Gladkov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=2f81ae4a-606a-4cfd-9bdd-4d8c234d74c4@gmail.com \ --to=klark.devel@gmail.com \ --cc=make-initrd@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Make-initrd development discussion This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/make-initrd/0 make-initrd/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 make-initrd make-initrd/ http://lore.altlinux.org/make-initrd \ make-initrd@lists.altlinux.org make-initrd@lists.altlinux.ru make-initrd@lists.altlinux.com public-inbox-index make-initrd Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.make-initrd AGPL code for this site: git clone https://public-inbox.org/public-inbox.git