Я с удовольствием устанавливаю основные ядра версии 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:
- tuxinvader's lts-mainline-longterm PPA
- tuxinvader's lts-mainline-previous PPA
- tuxinvader's lts-mainline 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 не компилировал модули ядра. Вот что я сделал:
- Установленное ядро 5.11.18-generic
- Обнаружено, что в заголовках ядра программа fixdep относится к glibc 2.33
- Обнаружено, что в заголовках ядра программа modpost относится к glibc 2.33
- Заменен /lib/modules/5.11.18-generic/build/scripts/basic/fixdep на тот, что в 5.11.16
- Заменил /lib/modules/5.11.18-generic/build/scripts/mod/modpost на тот, что в 5.11.16
- Запустил dkms для ядра 5.11.18 (/usr/lib/dkms/dkms_autoinstaller start 5.11.18-051118-generic)
- Успешно сгенерировал модули ядра nvidia. Перезагрузил и все работает нормально. Даже попробовал то же самое с ядром 5.12.1 и все заработало.
Надеюсь это поможет.
решение3
Мне удалось установить 5.12 на Ubuntu 20.04 с libc6
2.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.