The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Механизм Kexec HandOver для перезагрузки ядра Linux без потери состояния

15.04.2025 09:46

В списке рассылки ядра Linux представлена шестая версия патчей с реализацией механизма Kexec HandOver (KHO), развиваемого инженерами из компаний Amazon, Microsoft и Google. Патчи уже приняты в ветку mm-everything, в которой осуществляется накопление изменений для будущей ветки ядра 6.16, связанных с управлением памятью. На базе Kexec HandOver компания Google разрабатывает подсистему Live Update Orchestrator (LUO), позволяющую перезагружать ядро без остановки работы устройств.

Kexec HandOver предоставляет возможности для запуска нового ядра из старого без потери состояния системы. В данный момент вызов kexec() работает лишь как загрузчик, просто запускающий новое ядро, которое после этого полностью реинициализирует систему, что эквивалентно перезагрузке, только без участия прошивки. Предлагаемая серия патчей реализует другой подход. До передачи управления новой версии ядра, состояние ключевых подсистем ядра сериализируется в регион памяти, который не будет затронут дальнейшими операциями. Новое ядро, получив управление, восстанавливает сериализированное состояние обратно. С точки зрения остальных программ операция замены ядра является незаметной.

Kexec HandOver может оказаться полезным в ситуациях, когда остановка недопустима и необходимо обеспечить непрерывный цикл работы отдельных устройств. Например, на серверах виртуализации Kexec HandOver может применяться для обновления ядра (и гипервизора KVM), не затрагивая память, занятую виртуальными машинами, и сохраняя состояние их выполнения.

  1. Главная ссылка к новости (https://www.phoronix.com/news/...)
  2. OpenNews: Google развивает систему перезагрузки ядра без остановки работы устройств
  3. OpenNews: Выпуск CRIU 4.1, системы для сохранения и восстановления состояния процессов в Linux
  4. OpenNews: Для ядра Linux предложен livepatch, механизм обновления без перезагрузки
  5. OpenNews: Для ядра Linux предложен livepatch, механизм обновления без перезагрузки
  6. OpenNews: Проект TuxTape для развёртывания инфраструктуры live-патчей к ядру Linux
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63075-kexec
Ключевые слова: kexec, kernel, handover
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (35) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.6, Аноним (6), 10:09, 15/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    В промежутках между рестартами эту область памяти можно править как хочешь и занести троян.
     
     
  • 2.8, pavel_simple. (?), 10:21, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +12 +/
    > В промежутках между рестартами эту область памяти можно править как хочешь и
    > занести троян.

    а чё сразу троян не записать в ядро? Или не записать троян в /dev/mem? А, точно, права же нужны

     
     
  • 3.45, Аномни (-), 13:58, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > а чё сразу троян не записать в ядро? Или не записать троян
    > в /dev/mem? А, точно, права же нужны

    Более того. Если кто-то смог втиснуться куда-то в район kexec() - он и так уже все полномочия давно имел. А /dev/mem можно и зарубить, в режиме lockdown вы фиг пропатчите им память ядра. Даже от рута.

     
  • 2.26, Аноним (-), 11:28, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > можно править как хочешь и занести троян.

    Но зачем?
    Надежнее заносить трояны и бекдоры прямо в ядро.
    Чтобы потом всякие Bvp47 жили по 10 лет.

     
     
  • 3.43, Аноним (43), 13:53, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Надежнее заносить трояны и бекдоры прямо в ядро.
    > Чтобы потом всякие Bvp47 жили по 10 лет.

    Опять этот чудак тут с этим Bvp47, который вообще - совершенно отдельная приблуда и Linux "виноват" только тем что эта штука и его решила поддерживать. Но оно и не только на линухе работает, и это же можно пре.

    Видимо этот горе-анон надеялся что никто не дойдет даже до вики, почитать что такое Bvp47. Но этот хитрый план потерпел неудачу.

     
  • 2.44, Аноним (-), 13:56, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В промежутках между рестартами эту область памяти можно править как хочешь и
    > занести троян.

    Чувак, если у тебя кто-то правит память прямо когда старый кернел отдает управление новому - у тебя в системах и так уже был жирнейший троян, со всеми полномочиями. Более того - этот троян уже имел абсолютный контроль над системой и всяко мог делать все что пожелает.

     

  • 1.7, Аноним (7), 10:16, 15/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    Я не знаю, почему, на опенсурцеры почему то не дружат с сохранением состояний. Может это потому, что они юзают си, где нет ооп в явном виде. При наличии ооп задача сохранения состояния объекта обычно становится тривиальной. Ты запихиваешь все свойства объекта в класс. Когда надо, ты без всякой сериализации просто сохраняешь память объекта куда тебе надо. Хоть в файл, хоть в другую область памяти, хоть куда.
     
     
  • 2.10, pavel_simple. (?), 10:23, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Я не знаю, почему, на опенсурцеры почему то не дружат с сохранением
    > состояний. Может это потому, что они юзают си, где нет ооп
    > в явном виде. При наличии ооп задача сохранения состояния объекта обычно
    > становится тривиальной. Ты запихиваешь все свойства объекта в класс. Когда надо,
    > ты без всякой сериализации просто сохраняешь память объекта куда тебе надо.
    > Хоть в файл, хоть в другую область памяти, хоть куда.

    ну, и где хоть в одной оси написаной на модном ооп-язычке есть что-то типа kexec хотяб в старом виде? Может не в опенсорсной макоси или вынде?

     
     
  • 3.29, нах. (?), 11:53, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Может не в опенсорсной макоси или вынде?

    так они на немодных.

    Надо попробовать на брейнфаке!

     
  • 2.12, Аноним (12), 10:24, 15/04/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 3.20, pavel_simple. (?), 10:57, 15/04/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 4.25, Аноним (12), 11:21, 15/04/2025 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
     
  • 5.31, pavel_simple. (?), 12:50, 15/04/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 6.36, Аноним (12), 13:13, 15/04/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.16, Аноним (16), 10:41, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Когда надо, ты без всякой сериализации просто сохраняешь память объекта куда тебе надо.

    Для этого не нужно ооп. Думаешь структуры нельзя сохранить хоть куда? Звучит по меньшей мере странно.

     
  • 2.17, windows10 (ok), 10:47, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Я не знаю, почему, на опенсурцеры почему то не дружат с сохранением состояний. Может это потому, что они юзают си, где нет ооп в явном виде. При наличии ооп задача сохранения состояния объекта обычно становится тривиальной. Ты запихиваешь все свойства объекта в класс. Когда надо, ты без всякой сериализации просто сохраняешь память объекта куда тебе надо. Хоть в файл, хоть в другую область памяти, хоть куда.

    А кто тебе сказал что проблема в сохранении состояния? Его если нужно - сохранить не трудно, даже на уровне прикладного ПО.

    Проблема  в пересчитывании состояний. Вот возьми любой свой язык (ну желательно конечно из более менее популярных), где есть понятие инклудов.

    Напиши на нем какую-нибудь либу, ну там lib.php, lib.py, lib.c, lib.pas - неважно. В этой либе напиши какую-нибудь функцию. Например function hello_world, которая просто выводит print("Hello World\n") - на любом из твоих ЯП, неважно.

    И напиши программу, которая инклудит эту либу, и скажем так, вызывает в периодическом цикле функцию hello_world() из твоей либы. Запусти ее. У тебя выводится Hello World.

    Потом в своей либе поменяй print("Hello World\n") на print("Привет Мир\n"). Ну то есть мы типа обновили либу.

    И вот тут начинаются проблемы. Ведь твоя программа не стала выводить Привет Мир, она по прежнему выводит Hello World. А ведь здесь по сути даже состояний нет - здесь просто вывод одной строчки.

     
  • 2.18, Аноним (18), 10:52, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > просто сохраняешь память объекта куда тебе надо

    Как сохранить указатель? Вот то-то же и оно. Да и зачем ООП, когда просто структа достаточно? По твоей же логике, просто берем и делаем memcpy всего структа куда надо.

     
     
  • 3.24, nikitron (ok), 11:20, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    да да, ни разу не видел класс без указателей в реальном проекте, а потом появляются разные пергурзки операторов, чтобы его в/из стрима доставать...
     
  • 3.47, Аноним (-), 14:10, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В смысле Берешь и сохраняешь Ессно не трогая регион на который он указывает Е... большой текст свёрнут, показать
     
  • 2.40, Аноним (-), 13:32, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А проприетарщики типа дружат Это кто Винда чтоли, которая я луше знаю - вам п... большой текст свёрнут, показать
     
  • 2.49, OpenEcho (?), 15:20, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Может это потому, что они юзают си, где нет ооп в явном виде.

    Каждый раз думаю, все, хорош читать коменты на опеннете, но блин,  ради таких генальных комментов можно и подсесть :)))

     
  • 2.54, Аноним (54), 17:29, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Троллите, или вам просто лень посмотреть на реализацию сохранения и загрузки объекта? Нихрена там не тривиально, особенно с методами. По сути нужно чуть ли не ELF-файл дампить, чтобы потом обратно ваш "объект" загрузить.
     

  • 1.11, Аноним (11), 10:24, 15/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А можно написать команду как меняется переход то?
     
  • 1.19, Аноним (19), 10:54, 15/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Такое уже было и даже в нескольких видах. И умирало потому что особо никому не нужно было. На самом деле "когда остановка недопустима и необходимо обеспечить непрерывный цикл работы отдельных устройств." _очень_ узкая прослойка, сходу даже и не скажешь, где нельзя остановиться, но, где прям кровь из носу, нужно зачем-то обновиться.
     
     
  • 2.23, Аноним (23), 11:16, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    При чём тут "нельзя"? Просто зачем делать перебой, если его можно не делать?
     
     
  • 3.55, Аноним (54), 17:31, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Решается покупкой второго компьютера и использованием системы с передачей управления в него от выключаемого. Другой вопрос, почему перезагрузка вдруг стала "дорогой", медленной операцией.
     

  • 1.27, Аноним (27), 11:34, 15/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Как по мне это все костыли для монолитного монстра. Нужно сохранять состояния системы, для того что бы обновиться в рилтайм? Используйте QNX или другие системы с модульным микроядром. А если уж приспичело обновлять монолитное ядро то реализацию нужно возлагать на разработчиков модулей и софта, а не патчи придумывать ...
    Взгляд с другой стороны
     
     
  • 2.35, pavel_simple. (?), 13:02, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Как по мне это все костыли для монолитного монстра. Нужно сохранять состояния
    > системы, для того что бы обновиться в рилтайм? Используйте QNX или
    > другие системы с модульным микроядром. А если уж приспичело обновлять монолитное
    > ядро то реализацию нужно возлагать на разработчиков модулей и софта, а
    > не патчи придумывать ...
    > Взгляд с другой стороны

    QNX научился обновлять ядро без остановки приложений?

     
  • 2.41, Аноним (-), 13:41, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И конечно вы нам насыпете сейчас пруфлинк что оно так вообще умеет, прозрачно дл... большой текст свёрнут, показать
     

  • 1.39, Андрей (??), 13:31, 15/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда корпы начинают лезть во что то хорошее, то это хорошее становится злом.Предлоги не важны.
     
     
  • 2.42, Аноним (-), 13:42, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Когда корпы начинают лезть во что то хорошее, то это хорошее становится злом.Предлоги не важны.

    Корпы хотят инфру с минимальными дайнтаймами. Это является мотиватором к вджобу над вон тем. А вы нас за столько лет ничем на эту тему не осчастливили. Поэтому вы ни хорошее, ни плохое. Вы - никакое. Void вообще не подлежит сравнению.

     
  • 2.50, OpenEcho (?), 15:27, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Когда корпы начинают лезть во что то хорошее

    Если бы корпы не влезали в это хорошее, то оно так бы осталось студенческим баловством одного финского студента, вовремя подсуетившегося, пока других студентов нагнула банда "законников"

     
     
  • 3.51, Аноним (12), 16:16, 15/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, до сих пор весь мой прикладной софт написан студентами и/или дилетантами. Ядро большого значения тут не имеет. Ну и толку от корп? Корпы решают только свои задачи.
     

  • 1.56, slavanap (?), 18:19, 15/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А почему нельзя было просто сделать то же самое, корректно написав выгрузку драйвера гипервизора с сохранением состояния? Нафига всё ядро обновлять?
     
  • 1.57, Аноним (57), 23:01, 15/04/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру