У меня есть машина, которая начала жизнь на Linux 2.4.x, а затем была обновлена до Linux 2.6.x. Теперь он обновлен до Linux 2.6.18. Каждый раз обновлялось только ядро. Остается тот же оригинальный набор инструментов (binutils, glibc ...) (очевидно, это не идеально).
Мой вопрос: следует ли ожидать, что машина будет нормально работать с учетом обновлений ядра и старых инструментов? Или есть сценарии, когда версия ядра x.y.z нарушает совместимость, и вам нужен новый набор инструментов?
Если это важно, самые экзотические вещи, которые делает машина, - это программный RAID (но от этого можно отказаться) и NFS.
Испытывая удачу:
* nix в целом спроектирован так, чтобы быть модульным, но, на мой взгляд, переход с 2.4.x на 2.6.x может испытать удачу, поскольку это основной выпуск. Это потому, что есть некоторые программы, которые при создании будут использовать заголовки и структуры данных, предоставляемые ядром (keepalived - один из примеров, который приходит на ум).
Рассмотрим распространение:
Одна из основных причин, по которой существуют дистрибутивы, помогающие поддерживать совместимость. Многие считают, что поддерживающие их организации будут обнаруживать и устранять множество проблем с совместимостью, прежде чем они будут переведены на стабильную работу. Я бы посмотрел на использование стандартного дистрибутива, такого как CentOS / Redhat или Debian / Ubuntu.
Не зная подробностей, я предполагаю, что вы оказались в таком положении, потому что вы не можете легко воссоздать эту машину и ее функции с новой установкой. Это плохое место, если вы действительно находитесь в этом месте. Если у вас случился провал и вам нужно исправить это, это будет действительно стрессом.
По большей части, если вы успешно обновились до 2.6.18, у вас не должно возникнуть серьезных проблем с 2.6.32 или даже 3.0. Произошли некоторые изменения имени драйвера, которые могут повлиять на вас, однако, если у вас все еще есть старое ядро, доступное в grub, это поможет вам избежать ситуации, когда вам нужно использовать аварийный диск.
Некоторые пакеты, которые вы можете захотеть проверить, работают с ядром, которое вы собираетесь использовать, - это udev, initscripts (если вы используете debian, redhat или аналогичные), iptables / etables / arptables.
В основном это будет работать, как ожидалось.
У вас могут быть пользовательские процессы, которые используют устаревшие (или, что еще хуже, исключенные) системные вызовы Linux, но обычно они не удаляются без предупреждения. Вы видели какие-либо предупреждения?
У вас также может быть ядро / модули, которые могут использовать более новые вызовы, чем те, которые доступны с вашими версиями binutils / glibc, но если вы столкнетесь с ними, при сборке просто произойдет ошибка.