Hacker News

The Curse of Soldered RAM

납땜 RAM의 저주

Lenovo X1 Carbon에서 메모리 오류가 발생하자 글쓴이는 Linux 커널의 memmap 옵션으로 문제가 있는 물리 메모리 구간을 제외했습니다. GRUB 설정에서 달러 기호가 변수로 처리되는 문제를 우회해 Fedora 부팅에 성공했지만, 메모리나 파일 시스템을 복구한 것은 아닙니다.

에디터 노트

memmap은 고장 난 RAM을 수리하지 않고 해당 주소를 운영체제 사용 대상에서 제외하는 임시 우회책입니다. 글쓴이는 Memtest86+가 찾은 주소를 커널에 전달했고, GRUB가 주소 속 달러 기호를 바꾸는 문제도 변수 저장과 이스케이프로 해결했습니다. 이 절차는 오류가 난 메모리 구간을 식별하고 부팅에 반영하는 구체적인 사례지만, BTRFS 손상이 복구됐는지나 기기가 장기간 안정적으로 동작하는지는 아직 확인되지 않았습니다. 댓글은 납땜이 얇은 기기와 저전력 메모리 설계에 기여한다는 설명, 수리와 업그레이드를 어렵게 한다는 비판, BGA 칩을 전문 수리점에서 교체할 수 있다는 경험을 함께 제시합니다. LPCAMM2를 탑재한 제품 사례도 언급되지만, 이번 사례처럼 메모리 고장이 생겼을 때 사용자가 직접 교체할 수 있는 구조가 얼마나 널리 보급될지는 별도 문제입니다. memmap이 급한 데이터 손실을 늦출 가능성은 있어도, 메모리 오류와 파일 시스템 오류를 해결했다고 볼 근거는 아직 없습니다.

AI 요약

Lenovo X1 Carbon에서 브라우저 탭이 자주 종료되고 루트 파일 시스템이 읽기 전용으로 바뀌었습니다. 로그에는 BTRFS 체크섬 오류와 손상 기록이 나타났습니다. 글쓴이는 메모리 오류를 의심해 USB로 Memtest86+를 실행했고, 검사 초기에 여러 오류를 확인했습니다. 예전처럼 고장 난 DIMM을 찾아 교체할 수 없었습니다. 이 노트북의 RAM은 메인보드에 납땜되어 있기 때문입니다.

고장 구간을 메모리에서 제외하기

새 노트북이 도착하기 전까지 기기를 안정적으로 쓰려고 Linux 커널이 불량 메모리 주소를 사용하지 않게 하는 방법을 찾았습니다. 후보는 badram과 memmap이었습니다. badram은 별도 커널 패치가 필요한 기능이라 Fedora에서는 쓰기 어려웠고, 커널에 포함된 memmap을 택했습니다. memmap 옵션에는 제외할 메모리 구간을 길이$주소 형식으로 지정합니다. Memtest86+가 두 형식의 값을 출력하지만, 글쓴이는 Ventoy USB에 넣은 이미지에서 결과를 파일로 저장하지 못해 화면을 촬영한 뒤 주소를 직접 옮겼습니다.

GRUB에서 달러 기호 처리하기

처음에는 주소 목록을 /etc/default/grub의 GRUB_CMDLINE_LINUX에 넣고 grub2-mkconfig를 실행했습니다. 재부팅이 실패해 GRUB 화면에서 실제 커널 명령줄을 확인하니 주소 안의 $0가 grub2-mkconfig 실행 과정에서 다른 값으로 바뀌어 있었습니다. 글쓴이는 Red Hat 버그 보고서에서 찾은 방법을 적용했습니다. grub2-editenv로 주소 목록을 memmap_val 변수에 저장하고, 각 달러 기호 앞에 역슬래시를 넣었습니다. 이어 GRUB_CMDLINE_LINUX에는 memmap=$memmap_val만 지정하고 설정을 다시 생성했습니다. 이번에는 부팅에 성공했고 /proc/cmdline에서도 원래 주소 목록을 확인했습니다.

글쓴이는 값을 USB에 보관해 운영체제를 재설치할 때 다시 적용할 계획입니다. 이 조치가 유지될지는 지켜봐야 하며, 다음으로 필요한 파일을 백업한 뒤 btrfs check --fix를 실행해 파일 시스템 메타데이터를 복구할지 확인하겠다고 밝혔습니다.

Hacker News 반응

  • @potamic — LPCAMM2 소켓은 납땜의 장점을 유지하면서 소켓을 제공하려던 방식입니다. 보급 상황을 아는 분 있나요?
    • @noman-land — 새 Framework 13 Pro 노트북은 LPCAMM2를 씁니다.
    • @mrheosuper — Lenovo도 최신 ThinkPad T14에 사용합니다.
  • @GeekyBear — LPDDR의 LP는 얇은 기기를 뜻하지 않습니다. 전력을 덜 쓰고 배터리 수명을 늘리려는 저전력 메모리입니다.
    • @actionfromafar — 배터리 수명이 길어질 수도 있고 배터리가 얇아질 수도 있겠네요.
  • @ethin — 납땜하지 않은 부품과 SoC 설계로 원하는 성능을 낼 방법이 없는지 궁금합니다. 물리 법칙의 한계인지, 수리를 어렵게 하려는 업체의 핑계인지 모르겠습니다.
    • @bigstrat2003 — 납땜 메모리가 더 빠를 수는 있지만, 업체가 납땜하는 이유는 메모리를 더 많이 넣은 제품을 팔아 이익을 얻기 위해서입니다. 데스크톱은 메모리를 소켓에 꽂아도 성능이 좋습니다.
    • @crote — LPDDR을 쓰는 보드는 CPU도 소켓형이 아닙니다. 커넥터는 신호 무결성에 부담을 주며 빠르고 수리 가능하고 저렴한 조건을 모두 만족하기는 어렵습니다.
  • @swiftcoder — 충분히 의지가 있다면 납땜된 RAM 칩을 떼어 교체할 수 있나요?
    • @ACCount39 — HBM이 아닌 메모리 칩은 교체할 수 있습니다. 다만 시간과 기술이 많이 들고, 새 메모리 용량을 기기가 인식하도록 조정하는 방법도 모델마다 다릅니다.
  • @dddnzzz334 — BGA 칩을 떼고 새 칩을 붙이는 일은 전문 수리점에서 합니다. 인도에서는 교체용 칩을 직접 구하면 5~10달러에 해주는 사람도 있습니다.
    • @GeekyBear — 보드 수준 수리가 수리점에서 당연히 이뤄지던 시절을 기억하나요?
  • @crote — 32GB를 쓰는 7년 된 컴퓨터를 바꿀 때 64GB를 원해도 지금은 감당하기 어렵습니다. 최소 용량으로 산 뒤 나중에 메모리를 늘리는 선택지가 매력적입니다.

원문: Hardill / 번역·요약: Trawling