[번역][가이드] 초보자를 위한 원플러스6의 A/B 파티션 및 기타 특이사항에 관한 가이드

이 글은 XDA의 원플러스6 포럼에 있는 글 "https://forum.xda-developers.com/oneplus-6/how-to/guide-noobs-guide-to-b-partitions-op6-t3816123" 을 단순 번역한 것입니다. 이 글의 내용에 관한 모든 저작권은 원작자인 XDA 포럼의 @iElvis 님에게 있습니다. 


원작자의 허락을 받고 작성된 번역글입니다. 이해를 쉽게 하기 위해 의역이 상당 부분 포함되어 있습니다.


---


롬질의 세계에 처음 입문하거나 혹은 다른 폰을 쓰다가 오신 분들이라면, 아마 "A/B 파티션"이라는 걸 처음 들어보실 겁니다. 이 개념은 롬 플래싱이나 업데이트 등과 관련된 기존의 여러 요소들을 근본적으로 변화시키는 것이므로, 만약 기존에 이에 대해 들어본 적이 없는 분이라면 어려울지도 모르겠습니다.


"파티션"이란 무엇인가?


기초부터 시작해 봅시다. 파티션이란, 데이터가 저장되는 휴대폰의 저장공간 내에서, 서로 인접하면서 겹치지 않는 별개의 공간들을 가리킵니다. 휴대폰에는 각각 부트로더, 펌웨어, 유저 데이터, 운영체제 파일 등등을 담고 있는 여러 파티션들이 있습니다. 일반적으로는 이 파일들은 각자 별개의 파티션 내에 들어있고, 따라서 특정 파티션을 수정하거나 포맷하거나 할 때 다른 파티션의 파일들을 건드리지 않고 작업할 수 있습니다.


원플러스6에는 72개의 파티션이 있습니다. 여러분들이 만약 다른 폰에서 관련 작업을 해 보셨다면, "정말 많다" 라고 생각할지 모르겠습니다. 실제로 그렇지만, 여기엔 이유가 있습니다. 바로 상당수의 파티션들은 중복된 것들이기 때문입니다. 바로 여기서 "A/B 파티션" 개념이 등장합니다. 이는 구글이 소위 "끊김없는 업데이트"를 위해 도입한 개념입니다. 다음은 개발자들을 위한 구글의 설명인데, 꽤 간단합니다.


인용:


A/B 시스템 업데이트는 각각 "슬롯"이라고 하는 두 그룹의 파티션들(보통 슬롯 A와 슬롯 B)을 사용합니다. 정상적으로 동작할 때, 하나의 슬롯에서 시스템이 실행되면 다른 하나의 슬롯은 현재 실행중인 시스템에서 접근되지 않습니다. 이 방식은 사용하지 않는 슬롯을 폴백(대비책)으로 사용함으로써 업데이트 실패를 방지합니다. 만약 업데이트가 시작하자마자 또는 진행중에 에러가 발생하면, 예전 슬롯으로 시스템을 되돌리고 정상 작동하게 만들 수 있습니다. 이를 위해서는, 현재 슬롯에서 사용중인 파티션을 OTA 업데이트의 일부로 사용하지 말아야 합니다. (하나의 카피만 있는 파티션 포함)


각각의 슬롯에는 "부팅 가능 속성"이 있는데, 여기에는 각 슬롯에 장치가 부팅될 수 있는 올바른 시스템이 포함되어 있는지의 여부가 표시되어 있습니다. 현재 슬롯은 시스템이 실행될 때 부팅이 가능하지만, 다른 슬롯은 예전 버전(올바르게 작동하는) 또는 새로운 버전의 시스템, 혹은 유효하지 않은 데이터를 담고 있을 수 있습니다. 현재 슬롯이 무엇이든 간에, 한개의 슬롯은 활성 슬롯(부트로더가 다음 부팅시에 부팅할 슬롯) 또는 기본 슬롯입니다.


또 각각의 슬롯에는 해당 슬롯이 부팅 가능할 때만 의미 있는, (사용자 공간에 의해 설정된) "성공 속성"이 있습니다. 해당 속성의 슬롯은 부팅 가능하고, 동작 가능하고, 스스로 업데이트가 가능해야 합니다. 성공으로 표시되지 않은 부팅 가능한 슬롯은(해당 슬롯으로 부팅하려는 여러 번의 시도 이후에) 부트로더에 의해 부팅 가능하지 않음으로 표시되어야 하는데, 여기에는 활성 슬롯을 다른 부팅 가능한 슬롯으로 바꾸는 내용이 포함됩니다. (일반적으로 새로운 활성 슬롯으로 부팅하려는 시도 직전에 실행중인 슬롯에 포함됨) 

(역자 주: 솔직히 뭔소리인지 모르겠네요;; 특히 마지막 문단.. 제가 이해를 못 하다보니 번역도 이상합니다. 능력자분들의 도움이 필요합니다)


이게 뭔말이냐구요? 핵심만 간단히 말해서, 여러분이 휴대폰을 부팅하고 사용하는 도중에(동시에) OTA 업데이트를 할 수 있게 해준다는 말입니다. (루팅된 폰에 대해서도 마찬가지입니다. 다만 이는 잠시 뒤에 좀 더 설명합니다) 시스템 업데이트 엔진이 백그라운드에서 "비활성 슬롯"에 업데이트를 다운로드하고 설치한 다음, 재부팅할 것인지 묻습니다. 재부팅을 하게 되면, 부트로더로 부팅하여 업데이트가 설치되는 것을 기다릴 필요 없이 모든 업데이트가 끝나게 됩니다. 이 방식은 업데이트 과정을 훨씬 안전하게 만드는데, 만약 업데이트 도중에 뭔가가 잘못될 경우, 시스템은 해당 슬롯으로 부팅하지 않고 예전 슬롯으로 돌아와서 업데이트가 실패했다고 알려줄 것입니다. OTA 업데이트를 잘못 받아서 폰이 망가지는 일은 이제 거의 없어졌다는 의미입니다.


내 데이터들은 어떻게 되나요?


많은 파티션들은 두 가지 버전을 갖고 있지만(boot_a, boot_b, system_a, system_b, 기타등등) 유저 데이터 파티션은 하나만 존재합니다. 즉 여러분들의 데이터는 업데이트에 영향을 받지 않습니다.


몇몇 앱들은 처음 실행할 때처럼 재로그인해야 하지만, 여러분들의 데이터와 설정은 모두 OTA를 받기 전 그대로일 것입니다.


A/B 파티션과 루팅과의 관계


하지만, 여러분이 폰을 언락하고 루팅할 땐 문제가 생기기 시작합니다. 이를 이해하기 위해서는 "커널"에 대해 논할 필요가 있습니다. 커널이란 운영체제에서 가장 중요한 부분입니다. 이는 하드웨어와 애플리케이션을 서로 소통시키고, CPU 작동이나 메모리 사용, (휴대폰의 경우) 화면, 통신, 스피커를 비롯한 각종 기능들을 통제합니다. 커널이 없거나 고장났다면 앱이 동작할 수 없습니다. "커널 패닉"이라는 것이 바로 하드웨어 또는 소프트웨어적 문제로 인해 커널이 시스템을 정지시키는 상황을 말합니다.


A/B 파티션 방식이 아닌 안드로이드 폰들은 두 개의 커널 이미지를 갖고 있었는데, 각각 리커버리 파티션과 부트 파티션에 있었습니다. 이를 통해 폰을 리커버리로 부팅해서 나머지 시스템을 수정하는 여러 작업을 할 수 있었습니다. 하지만 A/B 방식으로 인해, 독립된 리커버리 파티션이 사라지고 시스템 파티션으로 통합되었습니다. 왜냐구요? 아마 순정 폰에서는 리커버리는 오직 시스템 업데이트 시에만 사용되었고, A/B 방식으로 인해 (이제 비활성 파티션에 그대로 업데이트가 이루어지므로) 더 이상 분리된 전용 리커버리가 필요 없어졌기 때문일 겁니다.


하지만 이 때문에 롬질을 하기가 힘들어졌습니다. 독립적인 리커버리 파티션이 없이는, 커널이 존재하는 "부트 파티션" 내에 커스텀 커널을 설치(기본 커널과 교체)해야 하는데, 안드로이드에서는 패스트붓을 통해 파티션을 "수정"할 수 없고 오로지 플래시(역주: "롬을 플래시하다" 할 때의 flash를 말합니다) 만 할 수 있기 때문입니다. 그렇기 때문에 TWRP와 같은 커스텀 리커버리를 처음 설치할 때에는 먼저 컴퓨터에서 패스트붓 명령어로 진행해야 하는 것입니다.


또한 문제가 하나 더 있는데, Magisk를 사용하여 루팅하는 방식은 부트 영역을 수정하고, Xposed나 커스텀 커널도 마찬가지입니다. 이제 이들 커스텀 모드들과 리커버리가 모두 같은 파티션을 사용하므로, 어떤 모드가 사용중인 파일을 다른 모드가 덮어쓰게 되는 일이 일어날 수 있습니다. 이것이 바로 커스텀 커널이나 리커버리를 업데이트하고 나서 Magisk를 재설치해야만 하고, 그렇지 않으면 부트루프에 걸리게 되는 이유입니다. Magisk가 루팅을 위해 사용하는 파일들을 덮어씌웠기 때문에, 더 이상 부팅할 수 없는 것입니다. (다만 이제 많은 모드들이 이 문제를 피하는 방식으로 코딩하므로, 모든 모드에서 이런 문제가 발생하지는 않습니다.)


루팅한 원플러스6에서 A/B 파티션을 이용하여 업데이트하기


여기까지 읽으셨다면, 아마 이런 질문을 하게 될 것입니다. "끊김없는 업데이트 방식을 사용할 경우 모든 모드들이 덮어씌워지지 않을까?" 맞습니다. (더 정확하게는, 그것들은 새 슬롯으로 복사되지 않습니다.) 하지만 별로 심각한 문제는 아니므로 걱정할 필요는 없습니다. 사실 여기에는 장점도 있습니다.


여러분들의 원플러스6이 업데이트 알림을 받을 경우 다음과 같은 일들이 일어납니다. 업데이트 엔진이 루팅을 감지하고, 증분 업데이트(역주: 변경점만 업데이트하는 것을 말함) 대신에 풀 업데이트(전체 파일)를 다운로드 받습니다. 이는 매우 중요하고, 여러분은 (twrp를 통해 수동으로 업데이트를 적용하고 싶지 않을 경우에는) 이를 방해하거나 막지 말아야 합니다. 루팅된 폰에서 증분 업데이트를 적용할 경우 벽돌이 될 수 있습니다. 위의 구글 인용문에서 말한 바와 같이, 업데이터는 비활성 슬롯에 새 버전을 설치합니다. 중요한 것은, 완전한 순정롬이 설치된다는 점입니다. 유저 데이터는 그대로 유지되지만, 모든 모드들은 사라지므로 전부 재설치해야 합니다. 이를 하기 위해서는 여러가지 방법들이 존재하므로, 이미 올라온 여러 가이드들을 참고하면 됩니다. 여기서는 단지 그렇게 해야 루팅, twrp, 기타 모드들을 보존할 수 있다는 점만 이해하십시오.


이는 여러분들이 풀 업데이트를 수동으로 다운받아서 twrp에서 플래싱할 때에도 비슷하게 진행됩니다. (현재 슬롯과) 다른 슬롯에 완전한 순정롬이 설치되고, 모드들을 새로 설치하지 않으면 루팅되지 않습니다. 또한, 이 방식은 여러분들이 순정으로 돌아가고 싶을 때 쉽게 돌아갈 수 있게 합니다. 저는 만약을 위해 순정롬 zip 파일을 휴대폰에 따로 보관해둘 것을 권장합니다.


twrp를 통해 활성 슬롯을 수동으로 전환할 수도 있는데, 여러분들이 무엇을 건드리고 있는지 알고 있지 않다면 권장하지 않습니다. 여러 번의 업데이트와 플래싱을 거치게 되면, 비활성 슬롯에 남아있는 것들은 부팅이 되지 않을 수도 있고, 혹은 예컨대 와이파이가 동작하지 않는 상태로 부팅될 수도 있습니다. 그리고 만약 여러분들이 한 번도 업데이트를 하지 않았을 경우, 비활성 슬롯에는 아무것도 없고, 여기로 부팅하게 되면 그냥 검은색 화면만 나오는 상태가 됩니다. (다만 이를 해결할 수 있는 툴이 있습니다. https://forum.xda-developers.com/oneplus-6/how-to/guide-mega-unbrick-guide-hard-bricked-t3796051


여기 제가 추천하는 읽을만한 몇 가지 가이드들이 있습니다


https://forum.xda-developers.com/oneplus-6/how-to/guide-how-to-install-official-twrp-t3801558

https://forum.xda-developers.com/oneplus-6/how-to/official-oxygenos-5-1-5-ota-oneplus-6-t3794232


만약 이 모든 것들이 그저 추가 작업같이 느껴진다면, 그럴 수도 있습니다. 다만 이것은 여러분들이 깨끗하고 완전하게 작동하는 업데이트 시스템을 갖는 것을 보장합니다. (역주: 뒷문장 정확한 번역 불가. 다만 이 방식이 좋다는 뜻으로 보입니다.)


몇 가지 알아둘만한 점


몇가지 변경점에 더해서, 캐시 파티션 또한 제거되었습니다. 이제 캐시는 데이터 파티션에 존재하며 업데이트와 관련해서 더 이상 사용되지 않습니다. 따라서, 이제 twrp에서 캐시를 와이프(wipe, 지우기)하더라도 아무 일도 일어나지 않습니다. 캐시 데이터를 지우고 싶으면, 설정의 저장공간 & 메모리로 들어가서, 하단의 "캐시된 데이터"를 터치하고 OK를 터치하세요.


그렇지 않다면, 이에 대해 그리 걱정할 필요가 없습니다. (역주: 이후 문장 쓸데없는 내용이라 번역안함)


더 알고 싶어요


XDA 포탈의 이 기사(https://www.xda-developers.com/how-a-b-partitions-and-seamless-updates-affect-custom-development-on-xda/)에서 자세히 다루고 있습니다.

TAGS.

Comments