Kexec - Kexec

kexec, сокращенно от ядро выполнить и аналогично вызову ядра Unix / Linux exec, это механизм Ядро 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
  • Перенос ядра Функция Linux, в которой ядро ​​может быть скомпилировано для загрузки с различных адресов памяти.
  • kGraft - Технология Live patching для ядра Linux, разработанная SUSE
  • kpatch - Технология Live patching для ядра Linux, разработанная Red Hat
  • Ksplice - Технология Live patching для ядра Linux, разработанная Ksplice, Inc., а затем купленная Oracle

Рекомендации

  1. ^ Харипрасад Неллитерта (4 мая 2004 г.). «Перезагрузите Linux быстрее с помощью kexec». IBM. Архивировано из оригинал 21 января 2013 г.. Получено 5 декабря, 2013.
  2. ^ Дэвид Пенделл (16 августа 2008 г.). "Перезагрузитесь, как гоночный автомобиль, с kexec". linux.com. Архивировано из оригинал 14 февраля 2009 г.. Получено 5 декабря, 2013.
  3. ^ «Ядро Linux 3.17, раздел 1.10. Подписанные ядра kexec». kernelnewbies.org. 5 октября 2014 г.. Получено 3 ноября, 2014.
  4. ^ Джейк Эдж (25 июня 2014 г.). "Переделка kexec для подписей". LWN.net. Получено 9 августа, 2014.
  5. ^ Мэтью Гарретт (3 декабря 2013 г.). "Подрыв безопасности с помощью kexec". dreamwidth.org. Получено 5 декабря, 2013.
  6. ^ Кис Кук (10 декабря 2013 г.). "Живой патч ядра". Outflux.net. Получено 12 декабря, 2013.