LINUX.ORG.RU

Версии ядра и программы, библиотеки

 , ,


0

1

Довольно размыто задам вопрос. Какая связь имеется между версией ядра и программами?

Это я к чему, любую ли современную программу можно скомпилировать под какой-нибудь Debian 7? Или будут какие-то фундаментальные проблемы, через которые не пройти?

Я сталкивался ещё с нехваткой свежих библиотек glibc и им подобным. Существует ли какой-то способ обновить все это до современных стандартов того же Debian 11?

Если вопрос чисто теоретический, то ответ: да возожно, но может быть космически дорого и/или очень долго. Все зависит от завязки программы на конкретные возможности ОС, библиотек и драйверов.

Если вопрос практический, то нужно уточнять, в чем ваша конечная цель. Собрать старое ядро и запустить его в окружении Debian 11? Собрать конкретное приложение под Debian 7?

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

Современная программа может быть написана на современной версии языка. А можно ли запустить современный компилятор на Debian 7?

greenman ★★★★★
()

Какая связь имеется между версией ядра и программами?

Такая, что более новые программы могут быть завязаны на фичи ядра Linux, которых в старых версиях ядра Linux нет. Например, есть системный вызов seccomp https://man7.org/linux/man-pages/man2/seccomp.2.html который в Linux появился на x86-64 начиная с версии 3.5, и при этом в более новых версиях ядра у этого вызова появлялись всякие новые флаги.

Библиотека языка Си (glibc) завязана на версии ядра, и более новая glibc может на старом ядре не работать, см. https://unix.stackexchange.com/questions/9705/ https://stackoverflow.com/questions/27171485/

SZT ★★★★★
()

Свежие библиотеки можно собрать в тот же /usr/local. Как и свежее ядро для условного debian 7. Попутно будет собрана куча зависимостей и промежуточных версий софта. В итоге пройдете путь боли и страданий мейнтейнеров дебиана и получите лфс поверх старого дебиана.

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

Нет смысла юзать debian 7-8. У тебя будут проблемы с ssl сертификатами. И в целом https юзать не сможешь. Сейчас производительный дистрибутив debian 9 и void linux.

daxoric128
()

Может быть все что угодно

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

Вопрос-то про теоретическую возможность.

А сертификаты свежие также можно впилить в старый дистр. Вон, в рамках elts 8 деб ещё полгода поддерживать обещают.

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

У тебя будут проблемы с ssl сертификатами. И в целом https юзать не сможешь.

undef ★★
()

Существует ли какой-то способ обновить все это до современных стандартов того же Debian 11?

Дешевле поставить Debian 11 и настроить.

sfedosenko
()

самый лучший вариант обновления старых дистров, это поставить рядом новый дебиан, а старый системный раздел смонтировать куданибудь в /mnt.
сначала пройтись дифом по списку установленных пакетов - доустановить в новую систему что необходимо.
потом пройтись дифом по /etc, допиливая настройки новой системы до работоспособности старой.
ну и потом по остальным изменениям пройтись….

из неимоверных плюсов - в любой момент у тебя полностью рабочий старый раздел.
если работу нельзя надолго отключать - делаешь образ системы и операцию по реинкарнации проводишь в виртуалке.

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

Затрудняюсь ответить - поэтому сюда и пришел :)

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

Тогда нужно собрать браузер нормальный)) В iceweasel’е последнем (который до внедрения firefox-esr, год 2015-2016) не работает веб версия.

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

Я провожу эксперименты с последнем доступным в вебе для Nokia N9 образе Debian 7, 8 даже найти уже практически нереально. Maemo leste не фурычит адекватно под N9, поэтому я пока не нашел выхода из ситуации

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

Смысл сидеть на доисторическом debian? Если в void runit. Он проще и лучше. На нём работает Google Chrome 96, щас может и новее есть. Я не обновлял ещё. Все драйверы так же работают. Он только игры не запускает.

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

Уважаемый, я ж ответил, что эксперимент ведется в N9, там Debian 7 armel,я не могу впихнуть туда образ 8-ки или свежее, его просто нет в сети

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

Нет, потому что он очень глючный и не производительный.

Сильное заявление.

sfedosenko
()
Ответ на: комментарий от Sabellus

Телеграм завязан на Qt, причем на новую версию библиотеки. Даже если не возникнет проблем с glibc, собрать новую версию Qt-монстра будет не просто. Там вполне могут быть завязки на новые версии графических протоколов, которые не поддерживаются вашими драйверами.

Если это хобби (приносит вам удовольствие), то можно занятся этим по вечерам с туманными перспективами.

Иначе затраченное время будет стоить намного дороже покупки нового телефона. В какой-то момент все равно придется это сделать.

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

Как уже выше давали ссылку, свежий глибс с ненулевой вероятностью соберётся под ядро 3.2 и выше. Часть юзерспейсного соберётся. А дальше будут нюансы. Какой-то софт насмерть захочет фичи из свежего ядра или либс, какой-то разучился собираться или запускаться на armel (firefox?) и т.д. В общем, это будет длительный и беспощадный эксперимент.

undef ★★
()

В целом можно комбинировать версии софта и ядер в довольно широком диапазоне. «Новые фичи» ядер, во-первых, вообще редко используются, а во-вторых в подавляющем большинстве случаев связаны с не особо нужным опциональным функционалом, обращения к ним можно либо заменить врапперами-эмуляторами (glibc этим активно заниматся для эмуляции новых сисколлов на старых ядрах, например) либо просто ничего не делающими заглушками без капитальных поломок.

firkax ★★★★★
()

В теории можно. Но должны быть соблюдены условия.

Ядро влияет на это напрямую очень мало, но зато хорошо влияет косвенно. Если программа не использует современные возможности ядра, например какие-то системные вызовы, которых в старом ядре еще не было, то прямого влияния нет.

Однако, версия ядра может влиять косвенно. Например, системные библиотеки такие как libc завязаны на определенный диапазон версий ядра. Иными словами, нельзя обновить libc, не обновив ядро. В то же время, программе могут быть нужны новые возможности libc.

Затронув новые возможности libc, мы подбираемся к еще одному звену в цепи возможных обновлений – это компилятор. Здесь нужно уточнить, использует ли программа современные стандарты языков, наприимер С++17 или С++20. Если да, то потребуется именно новый, современный компилятор, который потянет за собой новые системные библиотеки, которые в свою очередь будут связаны с версией ядра.

Резюмируя выше сказанное, короткий ответ на вопрос, да, это возможно, но программа должна быть написана без использования современных возможностей, современных стандартов и языков программирования.

hibou ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.