
Анализирует и демонстрирует уязвимость ядра Linux CVE-2023-28772, предоставляя пропатченный или уязвимый исходный код ядра для исследований в области безопасности и образовательных целей.
Релиз ядра 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-разрядных ПК на базе 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). Пример:
kernel source code: /usr/src/linux-4.X
build directory: /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" Как выше, но не засоряет экран уже отвеченными вопросами. Кроме того, обновляет зависимости.