kexec 이후에 캡처된 커널을 일반 커널로 사용할 수 있나요?

kexec 이후에 캡처된 커널을 일반 커널로 사용할 수 있나요?

kexec/kdump 기능에 대해 읽었으며 충돌/패닉 커널이 /proc/vmcore를 통해 제공된다는 것을 알고 있습니다.

프로덕션 시스템에서 OS 패치 작업 속도를 높이기 위해 kexec 기반 부팅을 사용하여 EFI/BIOS/FW 초기화 단계를 우회하는 사람들에 대해 들었습니다. 이는 이러한 시스템이 나머지 처리/가동 시간 동안 캡처 코어를 계속 사용한다는 것을 의미합니다.

kdump를 수행하기 위해 예약된 오래된 메모리 영역을 회수하는 커널의 기능을 캡처하는 것에 대한 명확한 언급을 찾을 수 없습니다. 덤프를 저장한 후 캡처 커널이 보유된 메모리 내용을 삭제할 수 있습니까?

캡처 커널은 "재배치 가능한" 커널이므로 "비표준" 메모리 위치에서 실행되는 것은 사실입니다. 하지만 다른 모든 메모리를 활용/해제하고 계속해서 프로덕션용 기본 커널로 사용할 수 있습니까?

답변1

표준 kexec 커널과 비상 커널 사이에는 큰 차이가 있습니다.

"일반" kexec 커널은 이전 커널(예: x86 시스템의 E820 맵 또는 IBM POWER의 장치 트리)로부터 완전한 물리적 메모리 맵을 수신하므로 전체 RAM에 대한 모든 메모리 관리 구조를 초기화합니다. .

반면, 패닉 커널은 crashkernel=매개변수로 예약된 첫 번째 커널 영역만 포함하는 수정된 맵을 얻습니다. 원래 커널의 RAM 맵은 ELF 코어 헤더( elfcorehdr=커널 매개변수 참조)에서 별도로 전달되며 패닉 커널은 /proc/vmcore 특수 파일을 통해서만 이에 액세스할 수 있습니다.

이론적으로는 남은 RAM을 어느 시점에 핫스왑할 수 있지만 이는 구현되지 않았으며 내가 아는 한 아무도 이를 실현하기 위해 노력하지 않습니다.

관련 정보