Research/Devops

내 맥북에서 dmesg 명령어를 쳐보자

JMcunst 2025. 6. 21. 23:44
728x90

서론

퇴사를 하고 잠시 쉬는 날, 책을 읽으며 여유를 즐기고 있을 때였다.

문득 떠오른 생각 하나.

"파일 시스템이 읽기 전용일 때, 쓰기까지 하려면 어떻게 해야 할까?"

 

보통은 mount 명령어에서 -o remount,rw 옵션을 주면, 읽기 전용 파일 시스템을 다시 쓰기 가능하게 마운트할 수 있다.

하지만, 이렇게 해도 여전히 쓰기가 되지 않는 경우가 있다.

 

왜일까?

 

이럴 땐 시스템이 더 큰 손상을 막기 위해 스스로 파일 시스템을 읽기 전용(read-only)으로 다시 마운트했을 가능성이 있다.

이런 상황을 파악하려면 dmesg 명령어를 통해 커널 메시지를 확인해야 한다.

특히 EXT3-fs error로 시작하는 메시지나 Remounting filesystem read-only와 같은 문구가 있는지 살펴보면 된다.


dmesg란?

dmesgd + mesg의 조합으로, diagnostic message의 약자다.

리눅스에서 커널 메시지 버퍼(kernel ring buffer)의 내용을 출력하는 명령어다.

 

이 메시지들은 시스템이 부팅될 때, 장치 드라이버가 로드되거나, 커널 내부 이벤트가 발생할 때 출력된다.

예를 들어 USB 장치가 연결되거나 디스크 오류가 발생했을 때, 그 내용이 dmesg에 남는다.


실행으로 옮기자

'도대체 어떤 정보들이 보일까?' 궁금해져서 맥북 터미널에서 dmesg를 실행해 보았다.

생각보다 다양한 정보들이 쏟아졌다.

 

네트워크 인터페이스, 디스크 상태, HID 장치(SPI) 이벤트, WiFi 큐 상태 등,

"이런 것까지 보여주다니!" 싶을 정도로 하드웨어 관련 저수준 정보가 자세히 출력되었다.


정리

1. HID 입력 장치 (터치패드/펜/지문센서 등)

[SPI][HIDSPI] 구간

SPI(Serial Peripheral Interface) 버스를 통해 HID(Human Interface Device) 장치와 데이터를 주고받는 로그

장치 예시: 터치패드, 펜, 지문 센서 등

RX: 20 01 00 00 00 00 14 00 10 01 00 B5 00 00 0A 00 [SPI][HIDSPI]
TX: 80 00 00 00 ...
  • SPI(Synchronous Peripheral Interface)를 통해 HID 장치와 주기적으로 상태 데이터를 교환
  • RX 값의 마지막 바이트 증가 (B5, B6, …, CD)는 시퀀스 값으로 보이며,
  • TX는 항상 동일 → 주기적인 상태 질의 또는 keep-alive 전송일 가능성
  • 정상적인 디바이스 동작 시 흔히 보이는 패턴

2. Wi-Fi 및 네트워크 계층

LQM-WiFi 구간

macOS의 Wi-Fi 드라이버의성능 최적화/품질 상태 모니터링용

LQM-WiFi: BE : Count: 59 avgLatencyMs:1 maxLatencyMs:2
LQM-WiFi: BK : Count: 1 avgLatencyMs:1 maxLatencyMs:1
LQM-WiFi: VI : Count: 0 avgLatencyMs:0 maxLatencyMs:0
LQM-WiFi: VO : Count: 1 avgLatencyMs:2 maxLatencyMs:2
  • Wi-Fi 트래픽 클래스별 패킷 수와 지연 시간
  • BE: Best Effort, BK: Background, VI: Video, VO: Voice
  • 예: BE : Count: 59 avgLatencyMs:1 maxLatencyMs:2 → Wi-Fi 트래픽이 주로 일반(BE)이며, 지연도 안정적

wlan0:com.apple.p2p 메시지

AirDrop, FaceTime, Screen Sharing 등에서 주기적으로 평가되는 QoS 제어 로직

wlan0:com.apple.p2p: isInfraRealtimePacketThresholdAllowed allowed:1 option:32 threshold:50 ...
  • macOS의 Wi-Fi 모듈(AWDL 포함)이 실시간 트래픽을 감지하여 QoS 전환이 필요한지 판단 중
  • inputPackets, outputPackets의 수가 threshold(50)에 근접하면 "Idle → RealTime"으로 상태 전환
  • 이후 사용량이 줄면 다시 "RealTime → None" 등으로 트래픽 상태 전환 로깅

DTIM Missed Count 로그

Wi-Fi 드라이버의 내부 상태 점검용 로그

I [dk] <private>@29318: DTIM missed count: p2p(36), iovar(0), scan(3912), roam(0), homechan(4722), sleep(3957597), misc(0)
  • DTIM(Delivery Traffic Indication Map)을 클라이언트가 놓친 횟수
  • 대부분 sleep, scan, homechan 상태에서의 손실 → 정상적인 전력 절약 모드로 인한 것
  • p2p(36)은 Peer-to-Peer 모드에서 손실된 횟수

3. macOS 커널/보안 관리 계층

process_is_plugin_host 메시지

일반적인 시스템 보안 로그이며, 악성 또는 비정상 로그는 아님

process_is_plugin_host: running binary "bash" in keys-off mode due to identity: com.apple.bash
process_is_plugin_host: running binary "sudo" in keys-off mode due to entitlement: com.apple.private.security.clear-library-validation
  • macOS가 특정 바이너리(예: bash, sudo)를 샌드박스 제한 모드(keys-off)로 실행
  • 이는 보안상 제한된 권한에서 실행 중임을 의미 (예: 터미널 내의 제한 세션, 보안 도메인, system integrity 보호 영역 등)
  • com.apple.private.security.clear-library-validation는 SIP(Security Integrity Protection)에서 권한 해제를 의미

AMFI  Corpse 로그

PostgreSQL이 비정상 종료되었고, 시스템은 이를 정상적으로 로깅하고 정리했음

AMFI: Denying core dump for pid 11801 (postgres)
postgres[11801] Corpse allowed 1 of 5
...
Corpse released, count at 0
  • AMFI: Apple Mobile File Integrity → 보안상 core dump(메모리 덤프) 방지
  • Corpse allowed: macOS crash 분석 시스템에서 프로세스의 상태 정보를 최대 5개까지 보관
  • Corpse released: 해당 crash log 정리됨
728x90