
Снимок исходного кода ядра Linux 4.1.15 для анализа и изучения CVE-2022-3564, уязвимости в сетевой подсистеме ядра.
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" отобразят документацию в запрошенном формате.
УСТАНОВКА исходных текстов ядра:
Если вы устанавливаете полные исходные тексты, поместите tar-архив ядра в каталог, где у вас есть права (например, в ваш домашний каталог), и распакуйте его:
xz -cd linux-4.X.tar.xz | tar xvf -
Замените "X" на номер версии последнего ядра.
НЕ используйте область /usr/src/linux! Эта область содержит (обычно неполный) набор заголовочных файлов ядра, которые используются заголовочными файлами библиотек. Они должны соответствовать библиотеке и не должны быть испорчены тем, чем бы ни оказалось ядро-дня (kernel-du-jour).
Вы также можете перейти между выпусками 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" Как указано выше, но не загромождает экран вопросами, на которые уже были даны ответы. Кроме того, обновляет зависимости.