본문 바로가기

BE THE SMART (Mobile)

[Be The Smart] ROM Flashing! 플래싱은 뭐하는 거지?


이번 BE THE SMART 포스팅에서는 "플래싱"에 관해서 알아보려 합니다.

[플래싱이란?]
플래싱은 장치에 장착된 메모리 중 ROM(Read Only Memory)에 데이터를 덮어쓰기 하는 기술입니다. 중요한 것은, 덮어쓰기를 하는 과정인데, 별도의 백업이 없다면 기존의 정보는 모두 삭제되게 됩니다. 또한, 플래싱 과정에서는 내장된 정보를 덮어쓰기 위해 많은 전력이 필요하므로 필시 전원에 연결되어 있거나 베터리가 충분하여야 합니다.

[스마트폰과 플래싱, 어떤 관계?]
스마트폰 사용자라면 한번 쯤은 들어봤을 법한 말이 있습니다. 바로 "펌웨어 업그레이드"인데요. 안드로이드 사용자들은 이미 "프로요", "진저브래드" 등의 대규모 업그레이드를 거쳐 갔습니다. 이러한 과정에서 사용된 것이 바로 플래싱입니다. 일반 사용자들은 K***나 여타 제조사 지원 프로그램을 통해 깔끔하게 (사용자와의 질의응답 없이) 업그레이드가 진행이 되기 때문에 그 세부적인 사항을 들여다 볼 수가 없습니다. 자세한 설명에 들어가기 전에, 먼저 업그레이드 과정을 살펴보도록 합시다.

첫번째, 업그레이드 준비 과정
뭐 어찌보면 당연한 과정일 수도 있겠지만 역시 펌웨어 업그레이드에 필요한 바이너리 파일이 무엇인지 파악하고 다운로드하고 파일의 무결성 검사를 하는 과정입니다. 무결성 검사의 경우 네트워크를 통해 패킷이 전송되는 과정에서 패킷이 손상되었을 수 있기 때문에 진행됩니다. 만약, 바이너리 파일에 문제가 있을 경우 바이너리 다운로딩 (플래싱)과정에서 엄청난 문제가 발생할 수 있습니다.
(ex, 오류 발생으로 인해 업그레이드 중도 종료)

두번째, 플래싱 과정
다음 과정이 바로 플래싱 과정입니다. 플래싱 과정은 상당히 복잡하니 몇단계로 나누어 설명하도록 하겠습니다. 먼저, 펌웨어에 기본적으로 설치된 다운로드 모드로 폰을 설정합니다. 이 과정에서는 혹시 모를 상황에 대비해 자체적으로 부트 파일과 같은 주요 파일을 백업해 두고 ROM의 리셋을 위한 준비 과정을 거칩니다. 이러한 준비 과정이 끝나면, ROM 내용을 전체 초기화 시킨 후 (* 또는 그냥 덮어씌우는 경우도 있습니다.) ROM에 새로운 바이너리 파일을 플래싱합니다.

세번째, 마무리 과정
이제 마무리 과정입니다. 만약 플래싱 과정중에 오류가 발생하였다면, 오류 코드를 팝업으로 띄워 줄 것이며 그렇지 않다면 다운로드 받은 임시 파일들을 제거하고 폰을 재부팅 시킵니다. 이 과정까지 성공적으로 마무리 되었다면, 업그레이드 과정을 성공적으로 마쳤습니다.

업그레이드 과정은 이 정도로 정리하도록 하겠습니다. 주저리 주저리 업그레이드 과정에 대해서 설명했던 이유는 아무래도 플래싱이라는 과정 자체가 장치를 업그레이드 하는 과정에서 자주 사용되기 때문입니다. 그렇다면, 다음으로는 수동 플래싱 과정에 대해 살펴보도록 합시다.

첫번째, 플래싱 준비 과정
제목에서 보시다 시피 별로 다른 과정은 없습니다. 다만, 바이너리 파일을 따로 준비해 주셔야 하는데, 이 부분에서는 바이너리 파일이 최신버전이 아니어도 되기 때문에 다운그레이딩도 가능하다는 장점이 있습니다. 물론, 바이너리 파일 자체의 무결성 검사도 수동으로 해 주셔야 하며 (참고! 일반적으로 인터넷 브라우저로 다운로드시 자동으로 무결성 검사가 진행됩니다.) 바이너리 파일에 문제가 있으면 문제가 걷잡을 수 없이 커지기 때문에 바이너리 파일 준비에는 주의를 요합니다.

두번째, 플래싱 (수동 다운로딩) 과정
이번에는 조금 다른 단어를 사용하였습니다. 바로 "다운로드"의 개념인데요. 실제 수동 플래싱 과정에서는 폰을 다운로드 모드로 구동 시켜야 합니다. 다운로드라는 말 그대로입니다. 네트워크 상에서 내 컴퓨터로 데이터를 '다운로드' 하듯이 내 컴퓨터에서 폰의 ROM으로 데이터를 '다운로드'하는 방식이기 때문에 이런 용어를 사용합니다. 아 사설이 너무 길었습니다. 이 플래싱 과정에서는 말 그대로 "플래싱"만 진행합니다. 업그레이드와는 약간 다른 개념으로 인식하셨으면 좋겠습니다. 플래싱의 경우 중간에 오류가 발생하면.. 그냥 멈춰버립니다. (헉..) 이유는, 플래싱에서 사용되는 "다운로더"라는 프로그램의 특성 때문인데, 이 프로그램은 말 그대로 플래싱 (다운로드) 기능만을 지원, 복구, 백업 기능을 지원하지 않기 때문입니다.
처음으로 밝히는 내용이지만, 실제 필자도 한번 플래싱으로 쓴 맛을 본 경험이 있어 말씀드립니다. 국내 웨이브 기종의 경우 해외판 기종의 바이너리에 물려 플래싱하는 경우 플래싱 도중 오류가 나며 멈춰버립니다. 폰 역시 부팅을 하다가 멈춥니다. 이는 분명 제조사의 설명, "국가별로 기기의 스펙이 다를 수 있습니다"에 입각하여 '스펙이 다름 = 펌웨어'가 다름을 분명히 인식하셔야 한다는 점입니다.

마무리 과정은 생략하겠습니다. 위에서 위험성을 제기한 이유는 필자 역시 경험하였고, 개발자들도 한 두번 시행착오를 겪는 부분이기 때문입니다. 그치만 플래싱 도중 오류가 나더라도 "Re-Flashing"은 가능할 수 있습니다. 역시, 주요 부트파일이나 시스템파일 플래싱중 오류가 나지 않은 경우가 이에 해당합니다.

[플래싱 왜 필요하지?]
이러한 위험성에도 불구하고 플래싱이 일반 사용자에게 공개되는 이유는 역시 '개발의 자유성'입니다. 예를 들자면, 안드로이드의 'Custom Firmware (일명 개조 펌웨어, 커펌)'
을 들 수 있겠습니다. 뭐 또는 아이폰의 탈옥 역시 펌웨어에서 시스템 권한을 제거한 후 다시 펌웨어를 플래싱하는 과정이 있습니다. 펌웨어 개발자들에게는 물론이고, 사용자들에게 펌웨어 사용의 폭을 넓혀준다는 점에서 플래싱은 분명히 필요합니다. 그렇지만, 플래싱으로 인한 문제점에 대해서는 사용자가 책임을 져야 한다는 점과 큰 위험성이 따른다는 점을 유의해 주셨으면 좋겠습니다.

※ 플래싱 방법에 대해서는 포스팅 하지 않겠습니다.
※ 오타, 잘못된 사항에 대해 지적 부탁드리며, 삭제 요청은 받지 않겠습니다.
※ 플래싱에 대한 위험성은 글 중간중간에 지적 되어 있으며,
필자는 플래싱으로 인해 발생한
    문제에 대해 일체 책임지지 않습니다.