
Исходное дерево ядра Linux 4.1.15 с фокусом на CVE-2022-42703, уязвимость use-after-free в подсистеме netfilter, для анализа и исследований эксплуатации.
Linux kernel release 4.x http://kernel.org/
Это примечания к выпуску для Linux версии 4. Внимательно их прочитайте, так как они рассказывают, что это такое, объясняют, как установить ядро, и что делать, если что-то пошло не так.
ЧТО ТАКОЕ LINUX?
Linux — это клон операционной системы Unix, написанный с нуля Линусом Торвальдсом при помощи слабо связанной команды хакеров из Интернета. Он стремится к соответствию стандартам POSIX и Single UNIX Specification.
Он обладает всеми функциями, которые вы ожидаете от современной полнофункциональной Unix, включая настоящую многозадачность, виртуальную память, разделяемые библиотеки, подкачку по требованию, совместно используемые исполняемые файлы с копированием при записи, правильное управление памятью и многостековую сетевую поддержку, включая IPv4 и IPv6.
Он распространяется под лицензией GNU General Public License — за подробностями обращайтесь к прилагаемому файлу COPYING.
НА КАКОМ ОБОРУДОВАНИИ ОН РАБОТАЕТ?
Хотя изначально разрабатывался для 32-битных ПК на базе 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" отобразят документацию в запрошенном формате.
УСТАНОВКА ИСХОДНОГО КОДА ЯДРА:
Если вы устанавливаете полные исходники, поместите tarball ядра в каталог, где у вас есть права (например, в ваш домашний каталог) и распакуйте его:
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 kernels) не являются инкрементальными, а применяются непосредственно к базовому ядру 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 windows (Qt).
"make gconfig" Инструмент конфигурации на основе X windows (Gtk).
"make oldconfig" Ответы по умолчанию на все вопросы на основе содержимого вашего существующего файла ./.config и запрос о новых символах конфигурации.
"make silentoldconfig" Как выше, но без засорения экрана уже отвеченными вопросами. Также обновляет зависимости.
"make olddefconfig" Как выше, но устанавливает новые символы в их значения по умолчанию без запроса.
"make defconfig" Создать файл ./.config, используя значения символов по умолчанию из arch/$ARCH/defconfig или arch/$ARCH/configs/${PLATFORM}_defconfig, в зависимости от архитектуры.