LINUX.ORG.RU

Обновление glibc для сборки свежего ядра и firmware

 , , ,


0

1

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

Родное дистрибутивное ядро (дистрибутив slackware 15 x86_64), 5.15. В этом ядре нет поддержки моего оборудования. Оно есть в ядрах 6.2. Попытка сборки ядра 6.2 оборачивается руганью на версию glibc 2.33. Требует минимум 2.34.

Вопрос: ручное обновление до 2.34 что-то сломает в системе? Те программы, которые собирались с 2.33 будут работать с 2.34?

Вытекающий вопрос: как правильно выбрать firmware для ядра? То есть ядро 6.2. С момента выхода этой версии ядра могло выйти несколько «сборок» firmware (https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git). Я могу взять любую сборку firmware, и ОС загрузится без проблем или нужно искать самую последнюю совместимую с версией ядра сборку? Или на версию firmware можно не смотреть и брать в разумных пределах где-то около? Конечно, с учетом того, что сборки firmware, которые я беру, включают поддержку моего железа.



Последнее исправление: GrayFox (всего исправлений: 2)

Дистрибутив тут важен. Потому что для многих дистрибутивов есть возможность поставить уже готовое и более свежее ядро из репозиториев.

А вот что ты руками собрался делать — скорее всего всё сломает к чертям.

Vsevolod-linuxoid ★★★★★
()

firmware - это файлы прошивок, которые напрямую загружаются на устройства. Никакой «совместимости» с версией ядра им не нужно, чем свежее - тем лучше.

annulen ★★★★★
()

Попытка сборки ядра 6.2 оборачивается руганью на версию glibc 2.33

Вообще-то в самом ядре glibc не используется, там своя внутренняя библиотека C. Можно увидеть саму ругань?

Те программы, которые собирались с 2.33 будут работать с 2.34?

Да, у glibc версионирование символов есть. И необязательно заменять системную, если новая нужна только для одной задачи.

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)
Ответ на: комментарий от annulen
$ ldd --version
ldd (GNU libc) 2.33
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
$ make -j 16 bzImage modules
...
usr/src/linux-6.2.16/tools/objtool//fixdep: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by /home/grayfox/Downloads/usr/src/linux-6.2.16/tools/objtool//fixdep)
make[4]: *** [/home/grayfox/Downloads/usr/src/linux-6.2.16/tools/build/Makefile.build:97: /home/grayfox/Downloads/usr/src/linux-6.2.16/tools/objtool/fixdep.o] Error 1
make[4]: *** Deleting file '/home/grayfox/Downloads/usr/src/linux-6.2.16/tools/objtool/fixdep.o'
make[3]: *** [Makefile:47: /home/grayfox/Downloads/usr/src/linux-6.2.16/tools/objtool/fixdep-in.o] Error 2
make[2]: *** [/home/grayfox/Downloads/usr/src/linux-6.2.16/tools/build/Makefile.include:5: fixdep] Error 2
make[1]: *** [Makefile:73: objtool] grayfoxError 2
make: *** [Makefile:1442: tools/objtool] Error 2
make: *** Waiting for unfinished jobs....
GrayFox
() автор топика
Ответ на: комментарий от GrayFox

fixdep: /lib64/libc.so.6: version `GLIBC_2.34’ not found

Я так понимаю, что fixdep - это бинарник, собранный в процессе сборке ядра. Каким образом оказалось, что он зависит от glibc, которой нет в системе? Это какая-то сторонняя сборка?

annulen ★★★★★
()
Ответ на: комментарий от GrayFox

Потому, что со старым ядром загрузиться недолго, это один файлик в /boot, а обновление glibc вернуть будет сложней. Если что-то пойдёт не так.

Ну в теории всё будет работать. Обратная совместимость и у glibc декларируется. Смотри сам.

vbr ★★★
()
Последнее исправление: vbr (всего исправлений: 2)
Ответ на: комментарий от GrayFox

Мыл руки перед сборкой? make mrproper запускал?

Еще стоит посмотреть PATH. Если ставился компилятор из стороннего источника (самосбор, linuxbrew), могут подхватываться левые объектники и давать разнообразные ошибки линковки.

undef ★★
()

Поправил описание в первом посте. Дистрибутив slackware 15 x86_64 с последними обновлениями. Судя по комментам, проблема может быть дистроспецифичная.

Компилятор дистрибутивный. Исходники скачаны с kernel.org. Сейчас ради интереса попробовал собрать 6.3.8 - на нем ошибки нет. Все собралось.

GrayFox
() автор топика
Ответ на: комментарий от GrayFox

Ну может баг какой-нибудь. Не должна сборка ядра зависеть от новейшей glibc, я думаю.

Я бы предложил поставить Slackware Current в chroot или даже можешь взять сделать резервную копию пакета с glibc который стоит сейчас, попробовать обновить glibc из current, затем после сборки, «обновить» (upgradepkg может и даунгрейдить) обратно, если что-то перестанет работать.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Xenius

Да, спасибо за вариант тебе и всем кто писал. Я не стал углубляться в разбор проблемы с ядром 6.2, просто поставил последнее 6.3, которое без проблем собралось. glibc остался 2.33.

GrayFox
() автор топика