임베디드 트랙 스터디 5주차 - 인터럽트 후반부 기법 3종 비교 과제 준비
리눅스 커널 인터럽트 처리의 top half/bottom half 구조를 실제로 구현해보는 최종 과제를 시작했습니다. 타이머 인터럽트로 접근하기로 했는데, 하드웨어 IRQ 라인이 없는 상황에서 어떻게 인터럽트를 만들지부터 막혔습니다.
운영하면서 막힌 문제와 공부한 내용을 다른 사람도 읽을 수 있게 정리한 글입니다.
리눅스 커널 인터럽트 처리의 top half/bottom half 구조를 실제로 구현해보는 최종 과제를 시작했습니다. 타이머 인터럽트로 접근하기로 했는데, 하드웨어 IRQ 라인이 없는 상황에서 어떻게 인터럽트를 만들지부터 막혔습니다.
라즈베리파이 인터럽트 드라이버 스터디 4주차 과제를 받았는데, 처음엔 뭘 해야 하는지조차 감이 안 왔다. 과제 zip 파일을 열어보고 나서야 dts, c, Makefile, ko 같은 파일들이 각각 어떤 역할을 하는지, 그리고 이것들이 어떻게 연결되는지를 파고들게 됐다.
집에서 라즈베리파이로 돌리고 있는 NAS(samba)와 WireGuard VPN이 갑자기 외부에서 안 열려서 급하게 원인을 추적했습니다. 결론부터 말하면 하루 전에 방화벽 규칙을 정리하다가 실수로 VPN 포트 하나를 빠뜨린 게 원인이었습니다.
집에서 라즈베리파이로 운영하는 NAS에 외부에서 갑자기 접속이 안 돼서 원인을 찾아봤습니다. 결론적으로는 방화벽 규칙 하나가 빠진 게 문제였는데, 그 과정에서 네트워크 문제를 진단하는 순서에 대해 다시 생각해보게 됐습니다.
과거 PR 기록을 되짚어 라즈베리파이 클러스터에서 겪은 사건들을 정리하다가, 실제 운영 중인 nginx 설정과 배포 스크립트에서 위험 요소를 발견해 함께 고친 하루를 정리했습니다.
블로그 서버에 ufw를 켜는 단순한 작업이었는데, 알고 보니 SSH 접속이 끊길 수도 있고 쿠버네티스 파드 통신이 깨질 수도 있는 꽤 위험한 작업이었습니다. 왜 그런지, 어떻게 안전하게 처리했는지 정리해봤습니다.
라즈베리파이가 며칠 간격으로 이유 없이 재부팅되거나 전원이 내려가는 것처럼 멈추는 문제를 겪었습니다. journalctl 로그를 파고들어 원인을 찾아낸 과정을 정리합니다.
라즈베리파이에 커스텀 커널을 올렸다가 부팅이 먹통이 되어버린 사건을 처음부터 끝까지 복구한 기록입니다. 커널 모듈 버전 불일치라는 원인을 찾아내고, SD카드를 Windows에서 포렌식하듯 뜯어보며 정상 커널을 되살린 다음, 결국 원래 하려던 커스텀 커널 배포까지 완주했습니다.
임베디드 리눅스 스터디 1주차 과제로 라즈베리파이 커널을 직접 크로스 컴파일해서 보드에 올려봤다. 결과부터 말하면 빌드는 성공했는데 파이가 먹통이 되는 사고를 쳤고, 그 원인을 추적하는 과정에서 커널-모듈 관계를 훨씬 제대로 이해하게 됐다.
라즈베리파이에서 `sudo reboot` 명령을 실행했는데 부팅이 멈추는 황당한 경험을 했습니다. 전원선을 뽑았다 다시 꽂아야만 정상적으로 부팅되는 현상 때문에 처음에는 SD카드 문제라고 생각했지만, 진단 과정에서 예상치 못한 근본 원인을 발견하고 해결책까지 찾아나섰던 경험을 공유하려고 합니다.
SD카드가 갑자기 말썽을 부린다면, 안에 담긴 소중한 데이터와 지금 당장 필요한 프로그램들까지 모두 날려버릴까 봐 얼마나 불안할까요. 저도 비슷한 상황을 겪을 뻔해서, 혹시 모를 사태에 대비해 SD카드 손상 시 데이터를 안전하게 옮기는 방법을 직접 알아보고 정리해봤습니다.