blog.stackframe.dev

리눅스 부팅 시 NVMe 장치를 찾지 못할 때

이번에 노트북을 새로 샀는데 여러모로 시행착오를 많이 겪었다. 그 중 하나는 부팅 할 때 리눅스 커널이 NVMe에 설치된 파티션들을 하나도 찾지 못했던 것이다.

늘 하던 것처럼 아치리눅스를 설치하고 부팅했는데 root 파티션을 찾지 못하는 문제가 발생했다. 분명 UUID도 확실하게 넣었고 커널 파라미터도 오타없이 적었는데도 찾지 못하고 장치를 기다리기만 했다.

몇 번 시도해보면서 리눅스 initramfs에서 NVMe 장치 자체를 찾지 못하고 있다는 것을 알아낼 수 있었다. 이를 토대로 인터넷에 검색해보니 vmd 커널 모듈을 추가하니 해결되었다는 글이 나왔다. VMD는 Volume Management Device의 약자이고 설명에는 NVMe 장치를 CPU에서 직접 제어하는 기능이라고 되어있다. 자세한 동작 원리는 잘 모르겠지만 부팅을 위한 초기 root 파일시스템인 initramfs에 이 VMD 기능을 지원하는 vmd 모듈이 없어서 NVMe 장치를 찾지 못하는 것으로 보인다.

해결 방법은 간단하게 /etc/mkinitcpio.confvmd 모듈을 추가하면 된다:

...
MODULES=(vmd)
...

그 다음 아래 명령을 실행하여 initramfs를 다시 만들고 재부팅 해보면 장치를 제대로 찾는 것을 볼 수 있다:

# mkinitcpio -P

댓글