Linux에서 의도적인 커널 패닉이 발생합니까?

Linux에서 의도적인 커널 패닉이 발생합니까?

Linux에서 커널 패닉을 일으킬 수 있는 방법이 있습니까? 나는 들었다

echo c > /proc/sysrq-trigger

하지만 그냥 멈춘 것 같습니다. 커널 패닉인지는 확실하지 않습니다. 커널 패닉을 일으킬 수 있는 루트로 실행할 수 있는 C 프로그램이 있습니까?

답변1

죽여 사용하다

다음을 시도해 볼 수 있다고 생각합니다.

$ kill -6 1

이는 신호 #6을 프로세스 #1(init 프로세스)로 보냅니다. 신호 매뉴얼 페이지를 읽는 경우:휴먼시그널 No.7:

   Signal     Value     Action   Comment
   -------------------------------------------------------------------------
   SIGHUP        1       Term    Hangup detected on controlling terminal
                                 or death of controlling process
   SIGINT        2       Term    Interrupt from keyboard
   SIGQUIT       3       Core    Quit from keyboard
   SIGILL        4       Core    Illegal Instruction
   SIGABRT       6       Core    Abort signal from abort(3)

프로세스가 다양한 신호를 처리하는 방법을 배울 수 있습니다( cat /proc/$PID/status). 자세한 내용은 이 U&L Q&A를 참조하세요.프로세스가 어떤 신호를 듣고 있는지 확인하는 방법은 무엇입니까?.

메모리 오버플로

또 다른 접근 방식은 메모리 오버플로로 인해 커널 패닉이 발생하는 것입니다. 먼저 스왑을 비활성화해야 합니다.

$ swapon -s
Filename                Type        Size    Used    Priority
/dev/mapper/VolGroup00-LogVol01         partition   14352376    3177812 -1

$ swapoff /dev/mapper/VolGroup00-LogVol01

이제 모든 메모리를 소비합니다.

$ for r in /dev/ram*; do cat /dev/zero > $r; done

인용하다

답변2

당신은 시도 할 수 있습니다 sudo kill -SEGV 1. 그러면 마치 MM 오류(커널의 분할 충돌과 동일)가 발생한 것처럼 init가 즉시 중단됩니다.

답변3

일부 인텔 하드웨어에는 NMI 버튼(마스크 불가능 인터럽트)이 있습니다.NMI 워치독 활성화됨. NMI 워치독 패닉을 발생시키는 여러 가지 다른 방법이 있습니다.

관련 정보