Невозможно обменять два полных ядра. Я уверен, что вы понимаете значение монолитного ядра, такого как Linux, и почему это делает невозможным его простую замену.
Самое близкое, что вы можете получить - это процесс установки патчей с использованием Ksplice . Он преобразует обновления ядра в волшебные прокладки, которые могут закрывать дыры в работающем ядре, позволяя держать компьютер включенным бесконечно без перезагрузки. Для ваших целей он также позволяет вам откатить изменения.
Это бесплатно для выпусков Ubuntu Desktop, так что вы можете поиграть с ним, но вы должны заплатить подписку на серверы (где такие вещи наиболее необходимы).
Только что видел ваши правки. Ksplice, вероятно, не поможет, если вы вручную взламываете и собираете свои собственные Ядра для отладки, поскольку «сервис» состоит в том, что они предоставляют специальные обновления, и вы не можете создавать их самостоятельно.
Если вы просто строите вещи против официального ядра, оно все равно может работать.
Еще одна идея: виртуализация. Вы можете собрать новое ядро, поменять местами на своей виртуальной машине и перезагрузиться. Это все еще займет время, необходимое для перезагрузки, но вы можете сделать виртуальную машину намного более легкой, чем ваша машина разработки (основать ее на Ubuntu Server, отбросить X-сервер, если он вам не нужен, и т. Д.).
Как упоминал Оли , ваш лучший шанс, вероятно, виртуализация.
Тем не менее, если вы работаете с оборудованием, виртуализация может не помочь вам, и в этом случае вы можете использовать
kexec
для замены работающего ядра без полной перезагрузки.Взято со страницы ArchWiki
kexec
:Обратите внимание, что приведенное выше все равно перезапустит все сервисы , включая вашу систему инициализации, сервер отображения, сетевое взаимодействие и т. Д. Однако, если вы используете достаточно быструю систему инициализации, например
systemd
, вы можете загрузить новое ядро через 2-3 секунды, так как вы обходите BIOS / UEFI и загрузчик.Аналогичное описание можно найти на странице RapidReboot Ubuntu Wiki .
источник
Я думаю, что эти ответы должны быть обновлены.
Существует kpatch в настоящее время , что является более родным , чем Ksplice и др.
Он не может изменить структуры данных в ядре, хотя, по понятным причинам, поэтому он в основном полезен для исправлений безопасности.
Общая проблема всегда такова: запущенные процессы по-прежнему поддерживают структуры данных ядра, ожидая, что функции ядра будут ожидать их и возвращать. И без тех процессов, которые были сделаны для этого, на самом деле невозможно узнать, если это так. Таким образом, вы не можете изменить их, пока все процессы, которые их используют, не будут перезапущены. Это также потребовало бы патча всех этих программ.
И я даже не упомянул о смене драйверов, когда оборудование находится в особом состоянии. (Та же проблема, что и с kexec .)
источник