Il n'y a aucun moyen d'échanger deux noyaux complets. Je suis sûr que vous pouvez comprendre l'importance d'un noyau monolithique comme Linux et pourquoi il est impossible de le remplacer simplement.
Le plus proche que vous pouvez obtenir est un processus de correction en direct à l'aide de Ksplice . Il convertit les mises à jour du noyau en cales magiques qui peuvent boucher les trous dans un noyau en cours d'exécution, vous permettant de garder l'ordinateur allumé indéfiniment sans avoir besoin d'un redémarrage. Pour vos besoins, il vous permet également d'annuler les modifications.
Il est gratuit pour les éditions Ubuntu Desktop, vous pouvez donc jouer avec mais vous devez payer un abonnement pour les serveurs (où ce genre de chose est le plus nécessaire).
Je viens de voir votre montage. Ksplice ne va probablement pas aider si vous piratez et construisez manuellement vos propres noyaux pour le débogage en tant que "service", c'est qu'ils fournissent les mises à jour spéciales et qu'ils ne sont pas quelque chose que vous pouvez générer par vous-même.
Si vous construisez simplement des choses par rapport à un noyau officiel, cela pourrait toujours fonctionner.
Une autre idée: la virtualisation. Vous pouvez créer votre nouveau noyau et échanger des éléments dans votre machine virtuelle et redémarrer. Cela va encore prendre le temps nécessaire pour redémarrer, mais vous pourriez rendre la machine virtuelle beaucoup plus légère que votre machine de développement (basez-la sur Ubuntu Server, supprimez le serveur X si vous n'en avez pas besoin, etc.).
Comme Oli mentionné, votre meilleur coup est probablement la virtualisation.
Cela dit, si vous bricoler avec le matériel, la virtualisation pourrait ne pas le couper pour vous, dans ce cas, vous pouvez utiliser
kexec
pour échanger le noyau en cours d' exécution sans un redémarrage complet.Tiré de la ArchWiki la
kexec
page :Notez que l'alambic redémarrer au- dessus de tous les services , y compris votre système d'initialisation, le serveur d'affichage, la mise en réseau, etc. Cependant, si vous utilisez un système init assez vite, comme
systemd
, votre pouvez démarrer dans votre nouveau noyau en 2-3 secondes, depuis vous sans passer par le BIOS / UEFI et le bootloader.Une description similaire se trouve sur la page par Ubuntu RapidReboot Wiki .
la source
Je pense que ces réponses doivent être mis à jour.
Il est kpatch maintenant , ce qui est plus originaire que ksplice et al.
Il ne peut pas changer les structures de données dans le noyau si, pour des raisons évidentes, il est surtout utile pour les hotpatches de sécurité.
Le problème général est toujours: processus en cours gardent encore des structures de données noyau autour, en attendant les fonctions du noyau pour les attendre et leur redonner. Et sans ces processus en cours pour, il est pas vraiment possible de savoir, si tel est le cas. Vous ne pouvez donc pas les modifier tant que tous les processus qui les utilisent ne sont pas redémarrés. Il faudrait en direct ragréage tous ces programmes aussi.
Et je ne mentionne même pas les changements de pilote, lorsque le matériel est dans un état particulier. (Même problème que avec kexec .)
la source