1. 개요
- 이 문서는 넥서스 7 2세대(2013년 발매)에 커스텀 롬이나 GApps를 설치할 때 system 파티션의 용량 부족으로 설치가 정상적으로 되지 않는 상황에 대응해 충분한 용량을 system 파티션에 할당하는 방법을 기술하는 문서입니다.
- 리파티션 스크립트를 이용해 system 파티션의 용량을 늘리는 작업은 특별한 설명이 필요치 않고, 스크립트를 수정하지 않는 한 최대 1380MB까지만 확보가 가능하므로 이 문서의 목적에 맞지 않아 별도로 기술하지 않고 링크로 대체합니다. 이 문서는 그 이상의 용량을 확보하는 방법을 기술하려는 목적으로 작성되었습니다.
- 이 문서는 넥서스 7 2세대(2013년 발매) 32GB LTE 모델(기기명 deb)을 기준으로 작성되었습니다. 16/32GB WiFi 모델(기기명 flo)이더라도 기본적인 파티션 구조 자체는 같으므로 작업 방식 또한 같습니다.
- 작업 환경은 윈도우 7 이상이 설치된 컴퓨터를 권장하며 윈도우 XP 이하는 드라이버 호환 문제가 있을 수 있어 추천하지 않습니다. 더불어 작업 중 실수나 예상치 못한 문제가 발생하여 기기가 벽돌(Bricked)이 될 경우[1]에 대한 복구 가이드는 윈도우 환경에서 수행 가능한 내용을 포함하고 있습니다. 리눅스가 설치된 컴퓨터에서도 같은 작업이 가능하지만 윈도우 환경과 다른 부분을 병기하기가 곤란한 부분이 있어 기술하지 않습니다.
- 이 문서에 기술된 작업을 시행하면 기기 내 사용자 데이터가 완전히 지워지므로, 중요한 데이터는 사전에 백업해두시기 바랍니다.
- 이 문서는 2023년 5월 20일에 작성되었습니다.
2. 작업 목표 및 대상
- 작업 목표 : 기기에 설정된 파티션 중 이동이 가능한 파티션을 재배치하고 잉여 공간을 최대한 활용하여 system 파티션에 충분한 용량을 할당하는 것.
-
작업 대상은 아래의 파티션 레이아웃 정보를 참조한다.
{{{#!folding → 순정 상태의 파티션 레이아웃 정보 [펼치기 / 접기]
#!syntax sh Model: MMC MMC32G (sd/mmc)
Disk /dev/block/mmcblk0: 3093713050B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
5120B 67108863B 67103744B Free Space // Start offset에서 17KB 까지 파티션 할당 불가.
1 67108864B 156745727B 89636864B fat16 radio // $$$
156745728B 201326591B 44580864B Free Space
2 201326592B 204472319B 3145728B modemst1 // $$$
3 204472320B 207618047B 3145728B modemst2 // $$$
207618048B 268435455B 60817408B Free Space
4 268435456B 283795455B 15360000B ext4 persist // $$$
283795456B 335544319B 51748864B Free Space
5 335544320B 336343039B 798720B m9kefs1 // $$$
6 336343040B 337141759B 798720B m9kefs2 // $$$
337141760B 402653183B 65511424B Free Space
7 402653184B 403451903B 798720B m9kefs3 // $$$
8 403451904B 406597631B 3145728B fsg // $$$
406597632B 469762047B 63164416B Free Space
9 469762048B 471298047B 1536000B sbl1 // &&&&
10 471298048B 472834047B 1536000B sbl2 // &&&&
11 472834048B 474931199B 2097152B sbl3 // &&&&
12 474931200B 480174079B 5242880B aboot // &&&&
13 480174080B 480698367B 524288B rpm // &&&&
480698368B 536870911B 56172544B Free Space
14 536870912B 553648127B 16777216B boot // $$$
553648128B 603979775B 50331648B Free Space
15 603979776B 604504063B 524288B tz // &&&&
16 604504064B 604505087B 1024B pad // &&&&
17 604505088B 606041087B 1536000B sbl2b // &&&&
18 606041088B 608138239B 2097152B sbl3b // &&&&
19 608138240B 613381119B 5242880B abootb // &&&&
20 613381120B 613905407B 524288B rpmb // &&&&
21 613905408B 614429695B 524288B tzb // &&&&
614429696B 671088639B 56658944B Free Space
22 671088640B 1551892479B 880803840B ext2 system // @
23 1551892480B 2139095039B 587202560B ext4 cache // @
2139095040B 2263875583B 124780544B Free Space
24 2263875584B 2264924159B 1048576B misc // @
25 2264924160B 2281701375B 16777216B recovery // @
26 2281701376B 2281709567B 8192B DDR // &&&&
27 2281709568B 2281717759B 8192B ssd // &&&&
28 2281717760B 2281718783B 1024B m9kefsc // **
2281718784B 2348810239B 67091456B Free Space
29 2348810240B 2348843007B 32768B metadata // **
2281718784B 2415919103B 134200320B Free Space
30 2415919104B 30937169407B 28521250304B ext4 userdata // **
30937169408B 30937181695B 12288B Free Space // End offset에서 12KB 전방까지 파티션 할당 불가.
@ 1순위 작업 대상 : system 파티션과 그에 인접한 파티션으로서, 필수적으로 이동시키거나 크기 조절이 필요한 파티션
** 2순위 작업 대상 : system 파티션 용량 추가 확보를 위해 이동시키거나 크기 조절이 필요한 파티션
$$$ 3순위 작업 대상 : 잉여공간으로 이동이 가능하고 이동하더라도 문제를 일으키지 않는 파티션
&&&& 작업 불가 : 이동이나 변조 시 부팅이 되지 않고 벽돌 상태를 유발하는 파티션
}}}3. 사전 준비
3.1. 준비물
1. 하드웨어- 넥서스 7 2세대 기기
- 윈도우 7 이상이 설치된 작업용 컴퓨터
- USB A to micro B 데이터 케이블
2. 소프트웨어
- 최신 버전의 Android platform-tools 링크
- 적당한 폴더에 압축을 풀고, platform-tools 폴더 내의 파일을 모두 C:\\temp\\ 폴더로 복사한다. 이후 명령 프롬프트에서의 작업은 C:\\temp\\ 디렉토리에서 진행한다.
- 윈도우용 Android 드라이버(ADB/Fastboot) 링크
- 적절한 폴더에 압축을 풀어둔다.
- 최신 버전의 TWRP 리커버리 링크
- 기기명에 맞게 다운로드하여 C:\\temp\\에 복사한다.
- 리파티션 스크립트 zip 파일 링크
- 적당한 폴더에 압축을 풀고, /bin 폴더 내의 parted 파일만 C:\\temp\\에 복사한다. 다른 파일은 필요치 않다.
- 순정 공장 초기화 이미지 LTE 모델 WiFi 모델
- C:\\temp\\에 압축을 풀어둔다.
3.2. 작업 환경 준비
1. 기기를 부트로더로 진입시킨다.- 기기 전원 Off → 전원버튼과 Vol Down 키를 동시에 누르고 있으면 부트로더 상태로 진입한다.
2. 기기 OEM lock 상태를 확인한다.
- 기기 화면 최 하단의 LOCK STATUS가 unlocked라고 표기되어 있는지 확인한다.
- locked일 경우 다음과 같이 실행한다.
- 컴퓨터와 기기를 USB 케이블로 연결한다.
-
\[윈도우키+Pause키]를 눌러 시스템 창 호출 → 장치관리자를 호출하여 \[Android Device - Android Bootloader Interface] 항목이 있는지 확인한다.
만약 \[Other Device]에 노란색 삼각형으로 표기된 Fastboot / Android 등의 장치가 보일 경우 드라이버를 수동으로 설치해준다. -
명령 프롬프트를 열고 fastboot devices를 입력하여 정상적으로 연결되어 있는지 확인한다.
만약 기기 목록이 전혀 뜨지 않을 경우 컴퓨터를 재부팅하고 장치 드라이버가 정상적으로 설치되어 있는지 다시 확인한다. - 명령 프롬프트에서 fastboot oem unlock을 입력하면 기기가 완전히 초기화되는 것을 경고하는 화면이 뜬다. 기기의 Vol Up 키와 전원버튼을 한번씩 눌러 Yes를 선택해주면 LOCK STATUS가 unlocked로 바뀐다.
3. 기기에 TWRP 리커버리를 설치한다.
- 명령 프롬프트에서 fastboot flash recovery C:\\temp\\twrp-3.7.0_9-0-deb_followmsi.img 를 입력한다.
4. 기기를 리커버리로 진입시킨다.
- 기기의 Vol Up/Down 버튼을 사용해 RECOVERY MODE를 선택 후 전원버튼을 한번 눌러주면 리커버리로 진입된다.
5. ADB 연결 상태를 확인한다.
-
\[윈도우키+Pause키]를 눌러 시스템 창 호출 → 장치관리자를 호출하여 \[Android Device - Android Composite ADB Interface] 항목이 있는지 확인한다.
만약 \[Other Device]에 노란색 삼각형으로 표기된 Android Device 등의 장치가 보일 경우 드라이버를 수동으로 설치해준다. -
명령 프롬프트에서 adb devices 를 입력한다.
만약 기기 목록이 전혀 뜨지 않을 경우 컴퓨터를 재부팅하고 장치 드라이버가 정상적으로 설치되어 있는지 다시 확인한다.
6. parted 실행파일을 기기에 복사하고 Shell로 진입하여 실행권한을 준다. 기기에 복사한 parted 파일은 기기 재부팅 시점에 삭제되므로 새로이 리커버리에 진입해 parted 작업을 해야 할 경우 반복하여 실행한다.
- 다음의 명령을 명령 프롬프트에서 입력한다.
{{{#!syntax sh > adb push C:\temp\parted /sbin
adb shell
~ # chmod +x /sbin/parted}}}3.3. 작업 중 사용할 ADB shell 내 명령 숙지
1. mount/umount 명령- 파티션을 특정 디렉토리에 연결시키거나 연결을 해제하는 명령이다. 다음의 예시를 참조한다.
- mount /dev/block/mmcblk0p22 /mnt : 22번 파티션을 /mnt 디렉토리에 연결한다. 하나의 파티션을 여러 디렉토리에 동시에 연결할 수 있지만 여러 파티션을 하나의 디렉토리에 연결할 수는 없다.
- umount /mnt : /mnt 디렉토리와의 연결을 해제한다. 파티션 정보는 입력하지 않는다.
2. dd 명령
- 파티션을 통째로 이미지화해 파일로 저장하거나 파일을 파티션에 덧씌워주는 명령이다.
- dd if=\[파티션 또는 이미지파일] of=\[이미지파일 또는 파티션] 형식으로 입력되며, 다음의 예시를 참조한다.
- dd if=/dev/block/mmcblk0p1 of=/sdcard/01radio.img : 1번 파티션 전체를 /sdcard/01radio.img 라는 파일로 이미지화하여 저장한다. 이 때 해당 파티션의 비어있는 공간도 모두 파일 내에 기록된다.
- dd if=/sdcard/29metadata.img of=/dev/block/mmcblk0p29 : /sdcard/29metadata.img 라는 이미지 파일을 29번 파티션에 덧씌워준다.
3. parted 실행 파일 사용방법
- GPT 파티션 정보를 다루고 편집하는 실행 파일이다.
- parted는 두가지 방법으로 사용할 수 있다.
- parted /dev/block/mmcblk0 을 입력해 (parted) 프롬프트를 호출하여 명령을 입력하는 방법. 이 경우 별도로 설정한 변수는 parted를 종료할 때 까지 유지된다.
- parted /dev/block/mmcblk0 \[명령] 을 입력하여 명령을 한번만 실행하는 방법. 이 경우는 parted 프로세스가 종료됨과 동시에 변수 설정도 종료된다.
- (parted) 프롬프트 내 명령은 다음과 같다. 이 명령들은 한번의 명령줄에 연속하여 입력하면 동시에 실행시킬 수 있다.
-
unit \[B/KB/KiB/MB/MiB/GB/GiB/s] : 파티션 정보를 표시할 때 보여줄 용량 단위를 지정한다.
뒤의 옵션은 바이트를 1 / 10^3 / 2^10 / 10^6 / 2^20 / 10^9 / 2^30 / 512로 나눈 값으로 표시하는 옵션이다. - p \[free] : 파티션 레이아웃 정보를 출력한다. free 옵션을 줄 경우 비어있는 잉여 공간을 포함해 출력한다.
- rm \[파티션 번호] : 해당 번호를 가지는 파티션을 삭제한다. 파티션이 마운트되어 있는 상태에서는 삭제되지 않으며, Shell에서 umount \[마운트 지점] 을 입력하여 마운트를 해제하면 삭제할 수 있다.
-
mkpart primary \[시작 지점] \[끝 지점] : 새로운 파티션을 생성한다.
시작 지점과 끝 지점은 현재 할당되어 있지 않은 Free space 내 지점을 입력해야 하며, 반드시 단위를 붙여줘야 한다. 단위는 unit 명령 참조.
새로 생성되는 파티션은 작은 순서대로 비어 있는 번호가 부여된다. - name \[파티션 번호] \[파티션 이름] : 해당 번호를 가지는 파티션에 이름을 지정한다.
- q : (parted) 프롬프트를 종료한다.
3.4. 리커버리 상태에서 기기와 컴퓨터 간 파일 복사 관련 사항 숙지
- 기기가 리커버리에 막 진입한 상태이고 컴퓨터와 USB 케이블로 연결되어 있을 경우 \[내 컴퓨터] - \[Nexus 7] - \[내부 저장소]는 기기 내부의 /sdcard와 연결되어 있는 상태가 된다. 일반적인 윈도우 환경 내에서 파일을 다루는 방식을 그대로 쓸 수 있으니, dd 명령으로 만들어진 파티션 이미지 파일을 컴퓨터에 백업하는 데에 유용하다. adb push / adb pull 명령을 쓸 수도 있지만 매우 번거롭다.
- 만약 리커버리에서 userdata 파티션의 마운트를 해제하고 파티션을 새로 쓰는 작업을 했을 경우 기기를 재부팅해 리커버리로 재진입하기 전에는 컴퓨터에서 내부 저장소에 접근할 수 없다.
3.5. 파티션 이동 방법 숙지
- 파티션 이동은 ADB Shell에서 시행하며 다음의 방법으로 실행한다.
-
system/cache/userdata 파티션
파티션 삭제 → 번호 오름순에 따라 순차적으로 파티션 할당 → 할당된 파티션 이름 지정 → 기기 재부팅 및 리커버리 재진입 → 파티션 포맷
{{{#!syntax sh ~# parted /dev/block/mmcblk0 rm [22/23/30]
~ # parted /dev/block/mmcblk0 name [22/23/30] [system/cache/userdata]
리커버리 재진입
~ # mke2fs -q -t ext4 -E discard /dev/block/mmcblk0p[22/23/30]}}}
-
그 외의 파티션
파티션 이미지 백업 → 파티션 삭제 → 번호 오름순에 따라 순차적으로 파티션 할당 → 할당된 파티션 이름 지정 → 파티션 데이터 복구
{{{#!syntax sh ~ # dd if=/dev/block/mmcblk0p[파티션 번호] of=/sdcard/[이미지이름].img
~ # parted /dev/block/mmcblk0p mkpart primary [시작 지점] [끝 지점]
~ # parted /dev/block/mmcblk0p name [파티션 번호] [파티션 이름]
~ # dd if=/sdcard/[이미지이름].img of=/dev/block/mmcblk0p[파티션 번호]}}}
4. 실제 작업
4.1. 기기 파티션 정보 백업
- 기기를 리커버리 상태로 진입시키고, 컴퓨터에서는 명령 프롬프트를 열어 adb shell 명령을 입력한다.
- ADB Shell로 접속이 되면 다음 내용을 복사해 명령 프롬프트에 붙여넣기 한다.
{{{#!folding → [펼치기 / 접기]
#!syntax sh dd if=/dev/block/mmcblk0p1 of=/sdcard/01radio.img
dd if=/dev/block/mmcblk0p2 of=/sdcard/02modemst1.img
dd if=/dev/block/mmcblk0p3 of=/sdcard/03modemst2.img
dd if=/dev/block/mmcblk0p4 of=/sdcard/04persist.img
dd if=/dev/block/mmcblk0p5 of=/sdcard/05m9kefs1.img
dd if=/dev/block/mmcblk0p6 of=/sdcard/06m9kefs2.img
dd if=/dev/block/mmcblk0p7 of=/sdcard/07m9kefs3.img
dd if=/dev/block/mmcblk0p8 of=/sdcard/08fsg.img
dd if=/dev/block/mmcblk0p9 of=/sdcard/09sbl1.img
dd if=/dev/block/mmcblk0p10 of=/sdcard/10sbl2.img
dd if=/dev/block/mmcblk0p11 of=/sdcard/11sbl3.img
dd if=/dev/block/mmcblk0p12 of=/sdcard/12aboot.img
dd if=/dev/block/mmcblk0p13 of=/sdcard/13rpm.img
dd if=/dev/block/mmcblk0p14 of=/sdcard/14boot.img
dd if=/dev/block/mmcblk0p15 of=/sdcard/15tz.img
dd if=/dev/block/mmcblk0p16 of=/sdcard/16pad.img
dd if=/dev/block/mmcblk0p17 of=/sdcard/17sbl2b.img
dd if=/dev/block/mmcblk0p18 of=/sdcard/18sbl3b.img
dd if=/dev/block/mmcblk0p19 of=/sdcard/19abootb.img
dd if=/dev/block/mmcblk0p20 of=/sdcard/20rpmb.img
dd if=/dev/block/mmcblk0p21 of=/sdcard/21tzb.img
dd if=/dev/block/mmcblk0p24 of=/sdcard/24misc.img
dd if=/dev/block/mmcblk0p25 of=/sdcard/25recovery.img
dd if=/dev/block/mmcblk0p26 of=/sdcard/26DDR.img
dd if=/dev/block/mmcblk0p27 of=/sdcard/27ssd.img
dd if=/dev/block/mmcblk0p28 of=/sdcard/28m9kefsc.img
dd if=/dev/block/mmcblk0p29 of=/sdcard/29metadata.img
}}}- 내 컴퓨터 - Nexus 7 - 내부 저장소 내에 생성된 파일들을 컴퓨터에 백업해둔다.(TWRP 폴더는 백업 불요)
4.2. 리파티션 작업
- 작업 환경 준비의 6항을 참고하여 parted 파일을 기기에 복사하고 ADB Shell에 접속해 실행권한을 준다.
- 작업 시퀀스는 두가지 방향으로 나뉜다.
-
재할당이 가능한 1~8, 23~25, 29번 파티션을 9번 파티션 이전의 공간에 몰아서 할당하고, system 파티션과 userdata 파티션을 기존 공간의 전/후로 확장하여 재할당하는 방식.
system 파티션 최대 용량은 1590MB, userdata 파티션 최대 용량은 27328MB까지 확보 가능하다.
28번 파티션은 이동시켜도 무방하지만 1KB밖에 되지 않는 작은 공간이라 별 의미가 없다. - 1~8번, 23~25번, 29번 파티션을 9번 파티션 이전의 공간에 할당한다. 이 때, 23번 cache 파티션은 9번 파티션 이전의 Free space 공간이 최대한 남지 않도록 할당한다.
- 22번 system 파티션을 21번 파티션과 26번 파티션 사이에 Free space가 남지 않도록 할당한다.
- 30번 userdata 파티션을 28번 파티션 이후부터 eMMC 디스크 끝까지 할당한다.
{{{#!folding → 작업 후 파티션 레이아웃 정보(예시) [펼치기 / 접기]
{{{#!syntax sh Model: MMC MMC32G (sd/mmc)
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
5120B 18431B 13312B Free Space1 18432B 89655295B 89636864B fat16 radio // $$$2 89655296B 92801023B 3145728B modemst1 // $$$3 92801024B 95946751B 3145728B modemst2 // $$$4 95946752B 111306751B 15360000B ext4 persist // $$$5 111306752B 112105471B 798720B m9kefs1 // $$$6 112105472B 112904191B 798720B m9kefs2 // $$$7 112904192B 113702911B 798720B m9kefs3 // $$$8 113702912B 116848639B 3145728B fsg // $$$
24 116848640B 117897215B 1048576B misc // $$$29 117897216B 117929983B 32768B metadata // $$$
25 117929984B 134707199B 16777216B recovery // $$$
23 134707200B 469762047B 335054848B ext4 cache // @@
9 469762048B 471298047B 1536000B sbl1
10 471298048B 472834047B 1536000B sbl211 472834048B 474931199B 2097152B sbl3
12 474931200B 480174079B 5242880B aboot
13 480174080B 480698367B 524288B rpm
480698368B 536870911B 56172544B Free Space
14 536870912B 553648127B 16777216B boot
553648128B 603979775B 50331648B Free Space
15 603979776B 604504063B 524288B tz16 604504064B 604505087B 1024B pad
17 604505088B 606041087B 1536000B sbl2b
18 606041088B 608138239B 2097152B sbl3b
19 608138240B 613381119B 5242880B abootb
20 613381120B 613905407B 524288B rpmb
21 613905408B 614429695B 524288B tzb
22 614429696B 2281701375B 1667271680B ext2 system // @@
26 2281701376B 2281709567B 8192B DDR
27 2281709568B 2281717759B 8192B ssd
28 2281717760B 2281718783B 1024B m9kefsc
30 2281718784B 30937169407B 28655450624B ext4 userdata // @@
30937169408B 30937181695B 12288B Free Space
@@ 이동 및 용량을 변경한 파티션
$$$ 단순 이동한 파티션}}}}}}
-
userdata 파티션이 존재하는 공간을 분할하여 일부를 system 파티션에 할당하고 나머지를 userdata 파티션으로 할당하는 방식.
system + userdata 합산 최대 용량이 27328MB가 되며, system 파티션은 그 범위 내에서 자유롭게 용량 할당이 가능하다. - 29번 파티션을 9번 파티션 이전의 공간에 할당한다.
- 22번 파티션을 삭제한다.
- 30번 userdata 파티션을 삭제하고, 그 자리를 적절히 분할하여 22번 system 파티션과 userdata 파티션을 할당한다.
- 23번 cache 파티션을 삭제하고 잉여공간을 충분히 활용할 수 있도록 파티션을 다시 할당한다.
{{{#!folding → 작업 후 파티션 레이아웃 정보(예시) [펼치기 / 접기]
{{{#!syntax sh Model: MMC MMC32G (sd/mmc)
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
5120B 67108863B 67103744B Free Space
1 67108864B 156745727B 89636864B fat16 radio
156745728B 201326591B 44580864B Free Space
2 201326592B 204472319B 3145728B modemst13 204472320B 207618047B 3145728B modemst2
207618048B 268435455B 60817408B Free Space
4 268435456B 283795455B 15360000B ext4 persist
283795456B 335544319B 51748864B Free Space
5 335544320B 336343039B 798720B m9kefs16 336343040B 337141759B 798720B m9kefs2
337141760B 402653183B 65511424B Free Space
7 402653184B 403451903B 798720B m9kefs38 403451904B 406597631B 3145728B fsg
406597632B 469729279B 63131648B Free Space
29 469729280B 469762047B 32768B metadata // $$$9 469762048B 471298047B 1536000B sbl1
10 471298048B 472834047B 1536000B sbl2
11 472834048B 474931199B 2097152B sbl3
12 474931200B 480174079B 5242880B aboot
13 480174080B 480698367B 524288B rpm
480698368B 536870911B 56172544B Free Space
14 536870912B 553648127B 16777216B boot
553648128B 603979775B 50331648B Free Space
15 603979776B 604504063B 524288B tz16 604504064B 604505087B 1024B pad
17 604505088B 606041087B 1536000B sbl2b
18 606041088B 608138239B 2097152B sbl3b
19 608138240B 613381119B 5242880B abootb
20 613381120B 613905407B 524288B rpmb
21 613905408B 614429695B 524288B tzb
23 614429696B 2263875583B 1649445888B ext4 cache // @@
24 2263875584B 2264924159B 1048576B misc
25 2264924160B 2281701375B 16777216B recovery
26 2281701376B 2281709567B 8192B DDR
27 2281709568B 2281717759B 8192B ssd
28 2281717760B 2281718783B 1024B m9kefsc
22 2281718784B 4429202431B 2147483648B ext2 system // @@
30 4429202432B 30937169407B 26507966976B ext4 userdata // @@
30937169408B 30937181695B 12288B Free Space
@@ 이동 및 용량을 변경한 파티션
$$$ 단순 이동한 파티션}}}}}}
- 22/23/30번 파티션을 작업하였다면 기기를 재부팅하여 리커버리에 재진입해야 정상적으로 마운트가 가능하고 이후 컴퓨터와의 연동이나 파티션 포맷 작업 등이 가능하다. 리커버리 재진입 시 parted 파일 복사 및 실행권한을 부여하는 작업이 누락되지 않도록 한다.
- 9~13, 15~21번 및 26~27번 파티션은 이동 작업 시 벽돌이 되므로 작업하지 않는다. 만약 이 파티션들 중 일부라도 건드렸다면 벽돌 복구 항목을 참조하여 복구작업을 진행한 뒤 다시 파티션 할당 작업을 시행한다.
- 파티션 정리 작업이 끝나면 부트로더로 재부팅해 순정이미지를 적용하거나 리커버리로 재진입해 커스텀롬을 설치한다.
5. 벽돌 복구
5.1. 벽돌 상태의 정의
- 부팅에 필수적인 파티션 중 일부를 건드려 아예 화면이 들어오지 않고 부트로더 상태로도 진입하지 못하는 상태를 이야기한다.
- 이 문서에서 다루는 대상은 기기의 전원을 켜둔 상태(전원버튼 누른 상태를 10초 이상 유지)에서 컴퓨터에 연결했을 때 USB 장치 연결음이 들리고 장치관리자에 QHSUSB_DLOAD 라는 이름의 기기가 보일 경우로 한정한다.
5.2. 소프트웨어 준비
- MiFlash 링크
- Qualcomm Serial Port 드라이버 링크
- 적당한 폴더에 압축을 풀어둔다.
- 넥서스 7 2세대용 부트로더 플래시 이미지 링크
- 적당한 폴더에 압축을 풀어둔다.
- 넥서스 7 2세대 eMMC용 GTP 테이블 바이너리 링크
- 적당한 폴더에 압축을 풀고, Restock - data 폴더 내의 gpt_both0.bin 파일만 C:\\temp\\에 복사한다.
- 순정 공장 초기화 이미지에서 추출한 부트로더 이미지 및 최신 버전의 TWRP 리커버리
- 준비물 항목의 상태를 그대로 사용한다.
5.3. 작업 순서
1. 기기를 컴퓨터에서 분리시키고 전원버튼 누른 상태를 10초 이상 유지한다. 기기 화면은 변화가 없으나 재부팅된다.2. 기기를 컴퓨터에 연결했을 때 USB 장치 연결음이 들리고 장치관리자에 노란색 삼각형과 함께 QHSUSB_DLOAD 라는 장치가 보이면 기기 드라이버(Qualcomm Serial Port)를 설치한다. 장치 관리자에 보여지는 장치 이름에 Qualcomm HS-USB QDLoader 9008 (COMx) 이 보여야 제대로 통신이 가능한 상태이다. 만약 Qualcomm HS-USB Diagnostics 9006 (COMx) 이 보인다면 외장 디스크로 인식되는 상태이니 \[디바이스 제거]-\[기기 재부팅]-\[컴퓨터 재부팅]-\[드라이버 설치] 과정을 반복한다.
3. MiFlash를 설치한다.
4. MiFlash를 실행하고 Refresh 버튼을 눌러 기기 목록이 갱신되는지 확인한다. Device 항목에 COMx 형식으로 표기되어야 하며, ₩?₩... 형식으로 알아보기 어려운 문자열이 뜬다면 2번 항목에서 언급한 외장 디스크 상태이므로 \[디바이스 제거]-\[기기 재부팅]-\[컴퓨터 재부팅]-\[드라이버 설치] 과정을 반복한다.
5. MiFlash의 Browse를 눌러 부트로더 플래시 이미지가 있는 폴더를 지정한다.
6. Flash all except storage를 선택해두고 Flash 버튼을 누른다. 약 85~90초 뒤에 기기를 분리하고 기기 전원버튼과 Vol Down 버튼을 동시에 10초 이상 누르고 있으면 부트로더로 진입하게 된다.
7. 명령 프롬프트에서 GPT 바이너리와 순정 부트로더, TWRP 리커버리를 설치한다.
{{{#!syntax sh fastboot flash gpt C:\temp\gpt_both0.bin
fastboot flash bootloader C:\temp\bootloader-deb-flo-04.08.imgfastboot flash recovery C:\temp\twrp-3.7.0_9-0-deb_followmsi.img}}}
8. 리커버리로 진입이 가능한지 재차 확인하고, 부트로더로 재부팅해 순정이미지를 적용하거나 리커버리에서 수동 리파티션 작업과 커스텀롬 설치를 진행한다.
6. 참고 사이트 링크
- [ROM][flo|deb][UNOFFICIAL][LineageOS 20.0]
- System repartitioning / Opengapps: Error 70 - Part 3
- [+]RESTOCK - stock restore, repartition, repair and reset, including USB driver fix
- Nexus 7 2013 Unbricking Guide for Windows 10 x64 - revised and simplified
[1]
하드웨어적인 문제가 없고 단순히 작업 중 문제가 생겨 부트로더 모드 진입이 되지 않는 경우에 한정