кексек
kexec ( выполнение ядра ), аналог вызова exec ядра Unix/Linux , представляет собой механизм ядра Linux , который позволяет загружать новое ядро из текущего ядра.
Подробности
[ редактировать ]По сути, kexec пропускает этап загрузчика и этап инициализации оборудования , выполняемый системной прошивкой ( BIOS или UEFI ), а напрямую загружает новое ядро в основную память и немедленно начинает его выполнение. Это позволяет избежать длительного времени, связанного с полной перезагрузкой, и может помочь системам удовлетворить требования высокой доступности за счет минимизации времени простоя . [1] [2]
Хотя реализация такого механизма, как kexec, вполне осуществима, она порождает две основные проблемы:
- Память текущего ядра перезаписывается новым ядром, в то время как старое продолжает выполняться.
- Новое ядро обычно ожидает, что все аппаратные устройства будут находиться в четко определенном состоянии, в котором они находятся после перезагрузки системы, поскольку системная прошивка сбрасывает их в «нормальное» состояние. Обход реальной перезагрузки может оставить устройства в неизвестном состоянии, и новому ядру придется восстанавливаться после этого.
Поддержка возможности только подписанных загрузки ядер через kexec была включена в версию 3.17 основной ветки ядра Linux , выпущенную 5 октября 2014 года. [3] Это не позволяет пользователю root загружать произвольный код через kexec и выполнять его, дополняя безопасную загрузку UEFI и механизмы безопасности внутри ядра, гарантирующие, что только подписанные модули ядра Linux . в работающее ядро можно вставлять [4] [5] [6]
Kexec используется LinuxBoot для загрузки основного ядра из ядра Linux, расположенного в прошивке.
См. также
[ редактировать ]- kdump (Linux) — механизм аварийного дампа ядра Linux, который внутри использует kexec.
- kGraft — технология оперативного обновления ядра Linux, разработанная SUSE.
- kpatch — технология оперативного обновления ядра Linux, разработанная Red Hat.
- Ksplice - технология оперативного исправления ядра Linux, разработанная Ksplice, Inc. и позже купленная Oracle.
Ссылки
[ редактировать ]- ^ Харипрасад Неллитерта (4 мая 2004 г.). «Перезагружайте Linux быстрее с помощью kexec» . ИБМ . Архивировано из оригинала 21 января 2013 года . Проверено 5 декабря 2013 г.
- ^ Дэвид Пенделл (16 августа 2008 г.). «Перезагрузитесь, как гоночная машина, с помощью kexec» . Linux.com . Архивировано из оригинала 14 февраля 2009 года . Проверено 5 декабря 2013 г.
- ^ «Ядро Linux 3.17, раздел 1.10. Подписанные ядра kexec» . kernelnewbies.org . 5 октября 2014 года . Проверено 3 ноября 2014 г.
- ^ Джейк Эдж (25 июня 2014 г.). «Переработка kexec для подписей» . LWN.net . Проверено 9 августа 2014 г.
- ^ Мэтью Гарретт (3 декабря 2013 г.). «Подрыв безопасности с помощью kexec» . Dreamwidth.org . Проверено 5 декабря 2013 г.
- ^ Кис Кук (10 декабря 2013 г.). «Живое исправление ядра» . outflux.net . Проверено 12 декабря 2013 г.