카테고리 없음

[리눅스커널] vmcore를 받기 위한 kdump 설정 방법 I (크로뮴 OS) !

AustinKim 2023. 4. 18. 11:20
vmcore를 받으려면 적절히 커널 코드를 수정해야 합니다.
이번 포스트에서는 크로뮴 OS 환경에서 vmcore를 받는 방법을 공유합니다.
 
커널 코드 수정 및 설치 과정
 
1. Ram Reserve
 
second kernel 부팅을 위해서 ram을 reserve해야 합니다.
(/proc/iomem 에서 Crash kernel 영역)
 
이를 위해 커멘드 라인에 crashkernel 아규먼트를 추가해야 합니다.
 
+CONFIG_CMDLINE="crashkernel=512M"
+CONFIG_CMDLINE_BOOL=y
 
위 코드는 커널 컨피그에 커널 커멘드를 추가하는 루틴입니다.
 
2. kexec tool를 활성화
 
이어서 kexec tool을 활성화해야 하는데요. 이를 위해 다음과 같은
컨피그를 활성화해야 합니다.
 
+CONFIG_KEXEC=y
+CONFIG_KEXEC_FILE=y
+CONFIG_CRASH_DUMP=y
 
3. kexec-tools 설치
 
kexec-tools을 설치하는게 마지막 난관인데요.
사실 크로뮴 OS에서 Default로 kexec-tools가 설치돼 있지 않습니다. kexec-tools을 설치하려면 2가지 방법을 적용하면 됩니다.
 
   * 크로뮴 OS 에서 빌드 후 시료에 push
   * 우분투에 존재하는 kexec-tools를 시료에 push 
 
크로뮴 OS에서 kexec-tools를 빌드하는 커멘드는 다음과 같습니다;
~/trunk/src/third_party/portage-stable/sys-apps/kexec-tools $ ebuild kexec*.ebuild digest
~/trunk/src/third_party/portage-stable/sys-apps/kexec-tools $ ebuild kexec*.ebuild compile
~/trunk/src/third_party/portage-stable/sys-apps/kexec-tools $ ebuild kexec*.ebuild install
~/trunk/src/third_party/portage-stable/sys-apps/kexec-tools $ cp -r /var/tmp/portage/sys-apps/kexec-tools-2.0.17/image ~/trunk/src/
 
커널 크래시 유발
 
1. kexec 실행
 
부팅한 다음에 아래 커멘드를 입력합니다.
 
kexec -p -s --reuse-cmdline --append="1 irqpoll max_cpus=1 reset_devices" /boot/vmlinuz
 
2. panic 발생
 
아래 커멘드를 입력하면 커널 패닉이 유발됩니다.
 
echo c > /proc/sysrq-trigger