답변:
두 개의 완전한 커널을 바꾸는 방법은 없습니다. 나는 당신이 리눅스와 같은 모 놀리 식 커널의 중요성을 이해하고 그것이 왜 간단하게 교체 할 수 없는지 이해할 수 있다고 확신합니다.
가장 가까운 것은 Ksplice를 사용한 라이브 패치 프로세스 입니다. 커널 업데이트를 실행중인 커널에 구멍을 뚫을 수있는 마법의 심으로 변환하여 컴퓨터를 재부팅하지 않고도 무기한으로 유지할 수 있습니다. 목적에 따라 변경 사항을 롤백 할 수도 있습니다.
Ubuntu Desktop 에디션의 경우 무료이므로 사용할 수 있지만 서버에 대한 구독료를 지불해야합니다 (이 종류의 항목이 가장 필요함).
편집 내용을 보았습니다. "서비스"는 특별한 업데이트를 제공하고 스스로 생성 할 수있는 것이 아니라는 이유로 Ksplice는 디버깅을 위해 직접 커널을 해킹하고 직접 빌드하는 경우 도움이되지 않을 것입니다.
공식 커널 에 대해서만 빌드하는 경우 여전히 작동합니다.
한가지 더 아이디어 : 가상화. 새로운 커널을 구축하고 VM에서 주변 환경을 바꾸고 재부팅 할 수 있습니다. 여전히 재부팅하는 데 시간이 걸리지 만 VM을 개발 시스템보다 훨씬 가볍게 만들 수 있습니다 (Ubuntu 서버 기반, 필요하지 않은 경우 X 서버 삭제 등).
으로 OLI가 언급 한, 당신의 최선은 아마도 가상화입니다.
즉, 하드웨어를 다루는 경우 가상화로 인해 하드웨어가 잘리지 않을 수 있습니다 kexec.이 경우 전체 재부팅없이 실행중인 커널을 교체하는 데 사용할 수 있습니다 .
ArchWiki kexec페이지 에서 가져온 것 :
kexec -l /boot/new-kernel --initrd=/boot/new-initrd --reuse-cmdline kexec -e
위의 방법으로 init 시스템, 디스플레이 서버, 네트워킹 등 모든 서비스를 다시 시작할 수 있습니다 . 그러나 init 시스템과 같은 빠른 init 시스템을 사용하면 systemd2-3 초 안에 새로운 커널로 부팅 할 수 있습니다. BIOS / UEFI와 부트 로더를 우회합니다.
비슷한 설명은 RapidReboot Ubuntu Wiki 페이지 에서 찾을 수 있습니다 .
이 답변을 업데이트해야한다고 생각합니다.
이 kpatch 지금 보다 더 기본 인 Ksplice에서 등.
커널 내부 데이터 구조를 변경할 수는 없지만 분명한 이유로 보안 핫 패치에 유용합니다.
일반적인 문제는 항상 다음과 같습니다. 프로세스를 계속 실행하면 커널 데이터 구조를 계속 유지하면서 커널 함수가이를 기대하고 되돌려 줄 수 있습니다. 그리고 그러한 프로세스가 이루어지지 않으면 그것이 사실인지 알 수 없습니다. 따라서이를 사용하는 모든 프로세스가 다시 시작될 때까지 변경할 수 없습니다. 모든 프로그램을 라이브 패치해야합니다.
그리고 하드웨어가 특별한 상태에있을 때 드라이버 변경에 대해서는 언급하지 않았습니다. ( kexec 와 동일한 문제 )