Основное ядро ​​теперь зависит от libc6 2.33, не устанавливается в focal?

Основное ядро ​​теперь зависит от libc6 2.33, не устанавливается в focal?

Я с удовольствием устанавливаю основные ядра версии 5.10 (изhttps://kernel.ubuntu.com/~kernel-ppa/mainline/) на моем Ubuntu 20.04.

Пытаясь обновиться до версии 5.10.33, я обнаружил нежелательную зависимость от libc >=2.33 (focal имеет версию 2.31) для -headersпакета (хотя и не для самого образа — но кто захочет жить без заголовков?).

Насколько мне известно, libc6 практически невозможно обновить. Это... оно? Я застрял на 5.10.32, если не откажусь от LTS? У этих ребят вообще есть общедоступный сайт, где можно сообщать об ошибках?

Обновлять: Это, кажется, главноеошибка на стартовой панели. Что из этого получилось хорошего:tuxinvaderпридумалДокер-контейнер(источник на Github:focal-mainline-builder) для сборки основных образов ядра и загрузил пакеты 5.10 - 5.12 в свои PPA:

Кончик: Чтобы увидеть все доступные пакеты Linux для выбранной серии/диапазона версий, после работы с PPA и, возможно, с бэкпортами Debian, xanmod и т. д. (как это сделал я), сделайте что-то вроде

apt update
printf '%s\0' linux-{image-unsigned,headers,modules}-5.10.{32..40} |
  xargs -0 -n 1 apt-cache pkgnames | LC_ALL=C sort | less

Надеюсь, эта проблема исчезнет. Но давайте посмотрим правде в глаза, в зависимости от прихотей "kernel mainline PPA" (или кто там за этим стоит, я все еще не понимаюкак можно связаться с этими разработчиками) для двоичных файлов оказался не самым приятным опытом.

решение1

Вы можете остаться в LTS, но вам нужно будетскомпилируйте основные ядра самостоятельнопреодолеть новую проблему зависимости.

Похоже, что версия основного компилятора только что изменилась:

doug@s19:~/temp-k-git/linux$ scripts/diffconfig .config-5.12.0-051200rc6-lowlatency .config-5.12.0-051200-lowlatency
 CC_VERSION_TEXT "gcc (Ubuntu 10.2.0-13ubuntu1) 10.2.0" -> "gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0"
 GCC_VERSION 100200 -> 100300
 LD_VERSION 23501 -> 23601
+DEBUG_INFO_BTF_MODULES y
+PAHOLE_HAS_SPLIT_BTF y

Но если я просто возьму конфигурацию ядра Ubuntu и скомпилирую сам, на моем основном тестовом сервере 20.04, то он нормально установится. То есть зависимость является функцией используемой версии компилятора, а не исходного кода ядра.

Не совсем актуально, но вот разница в конфигурации для того, что я скомпилировал:

doug@s19:~/temp-k-git/linux$ scripts/diffconfig .config-5.12.0-051200-lowlatency .config
-DEBUG_INFO_BTF y
-DEBUG_INFO_BTF_MODULES y
-DEBUG_INFO_COMPRESSED n
-DEBUG_INFO_DWARF4 y
-DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT n
-DEBUG_INFO_REDUCED n
-DEBUG_INFO_SPLIT n
-GDB_SCRIPTS y
-PAHOLE_HAS_SPLIT_BTF y
 CC_VERSION_TEXT "gcc (Ubuntu 10.3.0-1ubuntu1) 10.3.0" -> "gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0"
 DEBUG_INFO y -> n
 GCC_VERSION 100300 -> 90300
 LD_VERSION 23601 -> 23400
 SYSTEM_TRUSTED_KEYS "debian/canonical-certs.pem" -> ""

решение2

Вот как я создал модули dkms, сгенерированные с ядром 5.11.18 из ubuntu mainline-kernel. Я запускаю Linux Mint 20.1 Cinnamon и использую nvidia-driver-460 версии 460.73.01-0ubuntu0.20.04.1 в dkms. Я использую gcc версии 10.3. Все работало нормально с ver 5.11.16-generic, но остановилось, когда я попробовал 5.11.18. Поэтому я попытался найти проблему, почему dkms не компилировал модули ядра. Вот что я сделал:

  1. Установленное ядро ​​5.11.18-generic
  2. Обнаружено, что в заголовках ядра программа fixdep относится к glibc 2.33
  3. Обнаружено, что в заголовках ядра программа modpost относится к glibc 2.33
  4. Заменен /lib/modules/5.11.18-generic/build/scripts/basic/fixdep на тот, что в 5.11.16
  5. Заменил /lib/modules/5.11.18-generic/build/scripts/mod/modpost на тот, что в 5.11.16
  6. Запустил dkms для ядра 5.11.18 (/usr/lib/dkms/dkms_autoinstaller start 5.11.18-051118-generic)
  7. Успешно сгенерировал модули ядра nvidia. Перезагрузил и все работает нормально. Даже попробовал то же самое с ядром 5.12.1 и все заработало.

Надеюсь это поможет.

решение3

Мне удалось установить 5.12 на Ubuntu 20.04 с libc62.31, используя упомянутый ppa:

sudo add-apt-repository ppa:tuxinvader/lts-mainline

sudo apt install linux-image-unsigned-5.12.4-051204-generic linux-modules-5.12.4-051204-generic linux-headers-5.12.4-051204-generic

решение4

Другой простой вариант остаться с 5.10, без компиляции, похоже, заключается в использовании собственного ядра. Например xanmod, . Дело в том, что они, похоже, не прикладывают много усилий для улучшения "производительности" для старой серии LTS, поэтому ядуматьможно получить довольно стандартное ядро. Например, это журнал дляксанмод 5.10.35.

Связанный контент