
Исходное дерево ядра Linux 4.1.15 с патчем для CVE-2022-45934, уязвимость use-after-free в подсистеме netfilter, для анализа и тестирования.
Релиз ядра Linux 4.x http://kernel.org/
Это примечания к выпуску Linux версии 4. Внимательно прочитайте их, так как в них рассказывается, что это такое, объясняется, как установить ядро, и что делать, если что-то пошло не так.
ЧТО ТАКОЕ LINUX?
Linux — это клон операционной системы Unix, написанный с нуля Линусом Торвальдсом при содействии слабо связанной команды хакеров из Сети. Он нацелен на соответствие POSIX и Single UNIX Specification.
Он обладает всеми возможностями, которые вы ожидаете от современной полноценной Unix, включая настоящую многозадачность, виртуальную память, разделяемые библиотеки, загрузку по требованию, совместно используемые исполняемые файлы с копированием при записи, надлежащее управление памятью и многостековую сетевую поддержку, включая IPv4 и IPv6.
Он распространяется под лицензией GNU General Public License — подробности см. в прилагаемом файле COPYING.
НА КАКОМ ОБОРУДОВАНИИ ОН РАБОТАЕТ?
Хотя изначально Linux разрабатывался для 32-битных PC на базе x86 (386 или выше), сегодня Linux также работает (по крайней мере) на архитектурах Compaq Alpha AXP, Sun SPARC и UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS, Xtensa, Tilera TILE, AVR32 и Renesas M32R.
Linux легко переносится на большинство универсальных 32- или 64-битных архитектур, если они имеют страничный блок управления памятью (PMMU) и порт компилятора GNU C (gcc) (часть коллекции компиляторов GNU, GCC). Linux также был перенесён на ряд архитектур без PMMU, хотя в этом случае функциональность, очевидно, несколько ограничена. Linux также был перенесён на самого себя. Теперь ядро можно запускать как приложение в пространстве пользователя — это называется UserMode Linux (UML).
ДОКУМЕНТАЦИЯ:
Существует множество документации, доступной как в электронном виде в Интернете, так и в книгах, — как посвящённой непосредственно Linux, так и касающейся общих вопросов UNIX. Я бы рекомендовал заглянуть в подкаталоги документации на любом FTP-сайте Linux, где находятся книги LDP (Linux Documentation Project). Этот README не предназначен для того, чтобы быть документацией по системе: есть гораздо лучшие источники.
В подкаталоге Documentation/ находятся различные файлы README: они, как правило, содержат специфичные для ядра заметки по установке, например, для некоторых драйверов. Список того, что содержится в каждом файле, см. в Documentation/00-INDEX. Пожалуйста, прочитайте файл Changes, так как он содержит информацию о проблемах, которые могут возникнуть в результате обновления ядра.
Подкаталог Documentation/DocBook/ содержит несколько руководств для разработчиков и пользователей ядра. Эти руководства можно получить в различных форматах: PostScript (.ps), PDF, HTML и man-страницы, среди прочих. После установки команды "make psdocs", "make pdfdocs", "make htmldocs" или "make mandocs" подготовят документацию в запрошенном формате.
УСТАНОВКА исходного кода ядра:
Если вы устанавливаете полные исходные тексты, поместите tar-архив ядра в каталог, где у вас есть права (например, в ваш домашний каталог), и распакуйте его:
xz -cd linux-4.X.tar.xz | tar xvf -
Замените "X" на номер версии последнего ядра.
НЕ используйте область /usr/src/linux! В этой области находится (обычно неполный) набор заголовков ядра, используемый заголовочными файлами библиотек. Они должны соответствовать библиотеке и не должны портиться из-за того, чем окажется очередное ядро дня.
Вы также можете переходить между выпусками 4.x с помощью патчей. Патчи распространяются в формате xz. Чтобы установить обновление с помощью патчей, получите все новые файлы патчей, войдите в каталог верхнего уровня исходного кода ядра (linux-4.X) и выполните:
xz -cd ../patch-4.x.xz | patch -p1
Замените "x" для всех версий, больших, чем версия "X" вашего текущего дерева исходных текстов, по порядку, и всё должно быть в порядке. Возможно, вы захотите удалить резервные файлы (some-file-name~ или some-file-name.orig) и убедиться, что нет неудачных патчей (some-file-name# или some-file-name.rej). Если они есть, значит, ошибку допустили либо вы, либо я.
В отличие от патчей для ядер 4.x, патчи для ядер 4.x.y (также известных как -stable ядра) не являются инкрементальными, а применяются непосредственно к базовому ядру 4.x. Например, если ваше базовое ядро — 4.0 и вы хотите применить патч 4.0.3, вы не должны сначала применять патчи 4.0.1 и 4.0.2. Аналогично, если у вас работает ядро версии 4.0.2 и вы хотите перейти к 4.0.3, вы должны сначала отменить патч 4.0.2 (то есть выполнить patch -R) до применения патча 4.0.3. Подробнее об этом можно прочитать в Documentation/applying-patches.txt
В качестве альтернативы для автоматизации этого процесса можно использовать сценарий patch-kernel. Он определяет текущую версию ядра и применяет все найденные патчи.
linux/scripts/patch-kernel linux
Первый аргумент в приведённой выше команде — это расположение исходного кода ядра. Патчи применяются из текущего каталога, но в качестве второго аргумента можно указать другой каталог.
Убедитесь, что у вас не осталось устаревших .o файлов и зависимостей:
cd linux make mrproper
Теперь исходные тексты должны быть правильно установлены.
ТРЕБОВАНИЯ К ПРОГРАММНОМУ ОБЕСПЕЧЕНИЮ
Компиляция и запуск ядер 4.x требуют актуальных версий различных программных пакетов. Смотрите Documentation/Changes, чтобы узнать требуемые минимальные номера версий и как получить обновления этих пакетов. Имейте в виду, что использование чрезмерно старых версий этих пакетов может вызывать косвенные ошибки, которые очень трудно отследить, поэтому не рассчитывайте на то, что можно просто обновить пакеты, когда во время сборки или работы возникнут очевидные проблемы.
КАТАЛОГ СБОРКИ для ядра:
При компиляции ядра все выходные файлы по умолчанию будут сохраняться вместе с исходным кодом ядра. Использование опции "make O=output/dir" позволяет указать альтернативное место для выходных файлов (включая .config). Пример:
исходный код ядра: /usr/src/linux-4.X
каталог сборки: /home/name/build/kernel
Чтобы настроить и собрать ядро, используйте:
cd /usr/src/linux-4.X
make O=/home/name/build/kernel menuconfig
make O=/home/name/build/kernel
sudo make O=/home/name/build/kernel modules_install install
Обратите внимание: если используется опция 'O=output/dir', то она должна использоваться при всех вызовах make.
НАСТРОЙКА ядра:
Не пропускайте этот шаг, даже если вы просто обновляетесь на одну минорную версию. В каждом выпуске добавляются новые параметры конфигурации, и возникнут странные проблемы, если файлы конфигурации не настроены должным образом. Если вы хотите перенести существующую конфигурацию на новую версию с минимальными усилиями, используйте "make oldconfig", который задаст вам вопросы только о новых параметрах.
Альтернативные команды конфигурации:
"make config" Текстовый интерфейс.
"make menuconfig" Текстовые цветные меню, радиосписки и диалоги.
"make nconfig" Улучшенные текстовые цветные меню.
"make xconfig" Инструмент конфигурации на базе X Window (Qt).
"make gconfig" Инструмент конфигурации на базе X Window (Gtk).
"make oldconfig" По умолчанию задаёт все вопросы на основе содержимого вашего существующего файла ./.config и спрашивает о новых символах конфигурации.
"make silentoldconfig" Как указано выше, но не засоряет экран вопросами, на которые уже были даны ответы. Кроме того, обновляет зависимости.