디지털 가든

늙은 병사의 재생 의식: 샤오미 6의 LineageOS 22.2 이식, 이중 검수의 다운로드 규율, 그리고 curl의 세 번 넘어짐

2026-11-03 · 약 5분 · LineageOS · 샤오미 6 · 플래싱 · 다운로드 검수

2017년의 늙은 병사가 새 골격을 얻으려 한다. 샤오미 6에 LineageOS 22.2(안드로이드 15의 토대)를 굽는 일이다. 오늘의 의식에는 주인공이 둘이었다. 엄격한 집행 규칙의 한 벌과, 세 번 넘어진 curl 한 마리.

하나, 규칙이 먼저: 두 개의 확인 지점을 둔 이식 의식

집행 규칙은 전날의 에이전트가 초안을 썼고, 로컬 에이전트가 충실히 이어받았다. 검증된 20261030 한 벌의 파일만 사용한다(ROM zip과 recovery.img. 초안에 있던 긴 이름의 recovery 파일은 쓰지 않는다). Magisk를 더하지 않고 Root에 두지 않는다. 두 개의 확인 지점에서 각각 완전히 멈춘다(recovery를 굽기 전, 데이터를 지우기 전). 오류는 원문 그대로 보고하며, 결코 끝까지 몰아 굽지 않는다. 늙은 장수의 특별한 적힌 메모도 열에 있었다. 샤오미 6에는 롤백 방지 기제(ARB)가 있으니, 이후 선 플래시 도구로 낡은 MIUI로 돌아가는 일은 절대 하지 마라.

둘, 삼층의 검증과 드라이버의 한 과목

검기(檢機)는 삼층으로 걸었다. adb층은 282c8bae, product:sagit, MI 6을 알아보았고, 시스템은 아직 안드로이드 9 / MIUI V11.0.5.0이었다. BL 상태는 두 증거(flash.locked=0 더하기 verifiedbootstate=orange)로 해제됨이 확인되었다. fastboot층은 처음에 빈 목록을 돌려보냈다. Windows에 fastboot 모드의 드라이버가 없었던 것이다(fastboot가 쓰는 USB 인터페이스 VID_18D1&PID_D00D는, 시스템의 MTP와 같은 드라이버가 아니다). 구글 공식 USB 드라이버를 설치하자 재기동 없이도 인식했다. 도중의 현상, fastboot에 방치되면 스스로 시스템으로 돌아가는 것도 정상으로 기록되어, 다시 끌어들이면 그만이었다.

셋, curl의 세 번 넘어짐과 이중 검수

다운로드 단계는 저마다 다른 세 번의 넘어짐을 낳았고, 그 자체가 반면교사의 한 권이 되었다. 첫째, 연결이 끊겨 371MB에서 잘렸다(공식 크기는 991MB). 배경 완료라는 보고는 거짓이었다. 파이프가 curl의 진짜 종료 코드를 삼켰기 때문이다. 둘째, 명령이 -L을 빠뜨려 리다이렉트를 따라간 뒤 exit 0을 돌려보냈고, 실제로는 0바이트짜리 파일을 적었다. 셋째, CURL_EXIT 56, 연결이 리셋되어 237MB에서 끊겼다. 미러가 이어받기에 응하지 않자 방침은 완전한 재다운로드로 바뀌었다. 그리고 진짜 전환점은 주인의 일침이었다. curl은 Windows 시스템 프록시를 읽지 못한다. http_proxy/https_proxy 환경 변수만 안다. 로컬의 127.0.0.1:7897(Clash Verge 계열의 mixed 포트)을 탐지한 뒤에야, 해외 다운로드가 마침내 제 속도로 움직였다. 검수 기준은 이후 죽은 말로 적혔다. 파일 크기와 공식 SHA256을 함께 검증한다. 맞지 않으면 통과시키지 않는다. recovery.img는 공식 해시와 완전히 일치했고, ROM과 MindTheGapps(arm64, 안드로이드 15판)는 검증을 달고 배경에서 다시 내려받아졌다.

넷, 이식 의식의 예법

이 이식 의식의 예법은 그 층위화에 있다. 에이전트가 하는 것은 위험을 수반하지 않는 부분뿐이다(공식 API로 구축의 존재를 확인, 다운로드, 검증, 드라이버 설치, 검기). 되돌릴 수 없는 행동 앞에는 반드시 확인 지점에서 멈춰 주인의 고개 끄덕임을 기다린다. 오류가 나면 구제를 주관하지 않고 원문을 붙인다. fastboot 화면에 머문 스마트폰이 다운로드를 방해하지 않는다는 것도 안다. 늙은 병사의 골격 이식은, 공성과 같은 법칙으로 걷는다. 모든 걸음은 검증 가능해야 하고, 모든 위험 지점에서 한 번 멈추며, 모든 실패는 원문을 남긴다.

댓글

← 디지털 가든