
7파운드짜리 고물 킨들, 리눅스 eInk 개발 머신으로 심폐소생술 하기
7파운드짜리 중고 킨들을 분해하고 직렬 포트 납땜과 루트 권한 탈취를 거쳐 나만의 리눅스 eInk 개발 머신으로 부활시킨 엔지니어의 삽질기를 소개합니다.
김영태
테크리드

안녕하세요. 풀링포레스트에서 백엔드와 인프라를 담당하고 있는 테크리드 김영태입니다.
개발자로 일하다 보면 가끔 모니터 속의 쿠버네티스 클러스터나 복잡한 MSA 구조에서 벗어나, 손에 잡히는 무언가를 만들고 싶다는 충동을 느낄 때가 있습니다. 최근 저도 사이드 프로젝트로 eInk 스크린이 필요해졌는데요. 라즈베리 파이 HAT 같은 기성품을 사서 끼우는 건 너무 심심하더군요. 문득 예전에 봤던 낡은 아마존 킨들(Kindle)이 떠올랐습니다. "이것도 결국 리눅스 머신 아닌가?"라는 생각과 함께 말이죠. 오늘은 단돈 7파운드(약 1만 원)짜리 중고 킨들을 해킹해서 나만의 개발 플랫폼으로 탈바꿈시킨 삽질기를 공유하려 합니다.
솔직히 말해, 처음부터 순탄치는 않았습니다. eBay에서 가장 저렴한 'Kindle 4 non-touch' 모델을 주문했는데, 도착한 물건을 켜보니 소위 '데모 모드'에 갇혀 있었습니다. 아마존이 매장 전시용으로 잠가둔 기기라 일반적인 방법으로는 홈 화면조차 나갈 수 없는 벽돌 상태였죠. 싼 게 비지떡이라더니, 순간 "아, 내가 쓰레기를 돈 주고 샀구나" 싶어 막막했습니다.
하지만 우리는 엔지니어 아닙니까. 소프트웨어로 안 되면 하드웨어 레벨에서 접근하면 됩니다. Mobileread 포럼을 뒤져보니 기판 내부에 디버그용 직렬 포트(Serial Port)가 숨겨져 있다는 정보를 찾았습니다. 곧바로 케이스를 열기로 했습니다. 이 과정이 꽤 험난했는데, 나사가 아니라 강력한 접착제와 플라스틱 클립으로 마감되어 있어서 칼을 써서 억지로 뜯어내야 했습니다. 접착제 찌꺼기를 아세톤으로 닦아내니 그제야 영롱한 노란색 직렬 포트 접점이 보이더군요.

여기서부터는 인내심 테스트였습니다. 일반적인 헤더 핀이 있는 게 아니라 보드 위의 아주 작은 접점에 직접 납땜을 해야 했거든요. 0.2mm 굵기의 얇은 선을 사용해 현미경을 보듯 조심스럽게 납땜했습니다. 인프라 운영할 때 트래픽 스파이크 튀는 것보다 손이 더 떨리더군요. 그리고 중요한 점은 킨들의 직렬 포트가 1.8v 전압을 사용한다는 겁니다. 보통 아두이노나 라즈베리 파이에서 쓰는 3.3v/5v 어댑터를 바로 꽂았다가는 보드를 태워먹기 십상입니다. 다행히 제가 가진 USB-Serial 어댑터가 1.8v를 지원해서 전압 레벨을 맞추고 연결할 수 있었습니다.
노트북에 연결하고 터미널을 열어 minicom을 실행했습니다. 킨들을 재부팅하자 화면에 U-Boot 로그와 리눅스 부팅 메시지가 쏟아지기 시작했습니다. 희열을 느끼는 것도 잠시, kindle login:이라는 프롬프트가 저를 가로막았습니다. 루트 비밀번호를 모르니까요.
다시 구글링의 힘을 빌렸습니다. 다행히 킨들의 시리얼 번호를 기반으로 루트 비밀번호를 생성해주는 알고리즘이 이미 분석되어 있더군요. 문제는 USB 연결로는 시리얼 번호를 알 수 없다는 거였는데(데모 모드라 마운트가 안 됩니다), 부팅 로그(dmesg)를 자세히 뜯어보니 USB 장치 초기화 로그에 시리얼 번호가 평문으로 찍혀 있었습니다. 그 번호를 해시 함수에 넣고 돌려서 비밀번호를 얻어냈고, 드디어 로그인을 시도했습니다.
Welcome to Kindle!
이 한 줄이 떴을 때의 쾌감은 운영 환경 배포가 무중단으로 성공했을 때와 비슷했습니다. 이제 저는 이 기기의 root 권한을 가진 관리자가 되었습니다.
가장 먼저 한 일은 시스템 덤프였습니다. 인프라 엔지니어의 기본 소양은 백업이니까요. /proc/mounts와 fdisk로 파티션 구조를 확인해보니, 리눅스 커널, 진단 도구, 설정값, 그리고 사용자 데이터(전자책 저장소) 영역으로 나뉘어 있었습니다. dd 명령어를 사용해 전체 디스크 이미지를 PC로 떠왔습니다. 이제 뭘 하다가 벽돌이 되어도 언제든 복구할 수 있는 스냅샷을 확보한 셈입니다.
이번 경험을 통해 다시 한번 느낀 점은, 우리가 다루는 거대한 클라우드 서버나 낡은 전자책 단말기나 본질은 똑같은 리눅스 머신이라는 것입니다. 레거시 장비를 버리지 않고 밑바닥부터 뜯어보는 과정에서, 부트 로더가 커널을 올리고 유저 랜드로 넘어가는 OS의 기본 원리를 다시금 체감할 수 있었습니다.
여러분도 책상 서랍 속에 잠자고 있는 구형 기기가 있다면 한번 뜯어보시는 건 어떨까요? 최신 기술 스택을 익히는 것도 중요하지만, 가끔은 이렇게 '야생의 리눅스'와 씨름해보는 경험이 엔지니어로서의 근육을 단단하게 만들어줍니다. 저렴한 eInk 개발 머신이 생겼으니, 다음에는 여기에 제가 짠 코드를 올려서 대시보드로 만드는 과정을 공유해보겠습니다.


