
Linux 内核 4.1.15 源代码,重点关注 CVE-2023-4128,用于漏洞分析和内核安全的教学研究。
Релиз ядра Linux 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 (также известных как стабильные ядра) не являются инкрементальными, а применяются непосредственно к базовому ядру 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, в зависимости от архитектуры.