시리얼 포트
직렬 포트는 컴퓨터 간의 간단한 저수준 통신 메커니즘입니다.
장점 :
- 한 번의 간단한 설정 (하드웨어가있는 경우)
- 데이터 전송은 단순한 와이어 및 커널 API에만 의존하기 때문에 TCP / IP 하위 시스템보다 패닉의 영향을 덜받습니다.
단점 :
- 대부분의 최신 랩탑에는 공간을 절약하기 위해 더 이상 직렬 포트가 없습니다 (노출 되었습니까?). 그러나 데스크톱과 가상 머신은 여전히 그렇습니다.
- 또한 데이터를 수신하려면 직렬 포트가있는 두 번째 컴퓨터가 필요하지만 기본적으로 Raspberry Pi와 같은 모든 내장 개발 보드의 경우입니다.
- 무제한 TCP / IP 네트워크와 달리 물리 계층 직렬 케이블의 길이에 의해 제한됩니다. 그러나 이것은 직렬과 TCP / IP 사이에서 인터페이스하는 장치로 해결할 수 있습니다. 그러나 둘 사이를 변환하는 장치가 있습니다.
직렬 포트는 다음과 같습니다.
RPI에서 GPIO를 통해 사용할 수 있습니다.
그런 다음 필요한 하드웨어가 있으면 다음을 사용하여 두 번째 컴퓨터에서 기본 컴퓨터로 연결하십시오.
screen /dev/ttyS0 115200
이것은 실제로 쉘을 제공합니다.
그런 다음 주 시스템에서 패닉 작업을 시작하십시오.
패닉이 발생하면 패닉 덤프가 두 번째 머신으로 스트리밍되고 터미널에서 위로 스크롤하여 모두 볼 수 있습니다.
다른 방법
더 복잡하고 신뢰성이 떨어지면서 위에서 언급 한 하드웨어 제한을 극복하는 다른 방법들도 있습니다. 주목할만한 방법 :
- netdump : TCP / IP를 통해 패닉을 스트리밍합니다. 손상되지 않은 TCP / IP 서브 시스템에 의존합니다.
- kdump : https://askubuntu.com/a/104793/52975 다음에 언급 된 linux-crashdump의 기본 메커니즘 인 것으로 보입니다 . 충돌 한 커널을 검사하기 위해 두 번째 Linux 커널을 부팅합니다. 무엇이 잘못 될 수 있습니까?! :-)
이 위대한 답변을 참조하십시오 : https://unix.stackexchange.com/questions/60574/determining-cause-of-linux-kernel-panic
단계 디버깅
궁극적으로 패닉 출력을 얻으려면 일부 커널 기능이 작동해야하며 모든 커널 기능이 패닉에 의해 손상 될 수 있습니다.
그러나 커널에서 GDB를 사용할 수 있다면 누가 패닉을 필요로합니까? 그 하드 코어라면 다음을 살펴보십시오.
가시성이 충분하고 시간이 충분하면 모든 문제가 해결됩니다.