Posts LG NEXUS5에 커스트롬(Android 10.0) 설치
Post
Cancel

LG NEXUS5에 커스트롬(Android 10.0) 설치

예전에 쓰던 LG Nexus5에 Android 9.0 Pie 기반의 LineageOS 16 롬을 설치하고자 한다. Android 6.0.1까지 업데이트가 된 상태에서 진행하였다.

Nexus5의 리커버리 진입 키는 볼륨다운+전원 키입니다. 전원키로 다시 시작 선택하여 재부팅 시작하자 마자 계속 누르고 있으면 바이오스 화면으로 들어갈 수 있습니다.

TWRP 설치

Android SDK의 adb와 fastboot를 PC에 설치하고 usb debug 모드로 Nexus5를 pc에 연결하여 작업을 진행한다.

TWRP 이미지 다운로드 사이트에서 최신 twrp 이미지를 다운로드 한다. 파일탐색기에서 다운로드한 폴더로 이동한 후에 shift+우클릭하면 여기에 PowerShell 창 열기 메뉴로 파워쉘을 쉽게 열 수 있다.

아래 명령으로 fastboot 모드로 재부팅한다.

1
adb reboot bootlader

fastboot 모드에서 항목 이동은 볼륨 다운/업키로 하고, 항목 선택은 전원키로 할 수 있다.

재부팅되면 fastboot mode 화면을 확인할 수 있다.

fastboot mode 부팅 화면

화면 가장 아래에 LOCK STATE - lockecd로 표시가 되고 있다면 oem unlock 명령으로 락을 푼다. 명령을 실행하면 아래 그림과 같이 물어보는데 볼륨업키로 Yes를 선택 후에 전원키를 누르면 언록을 실행한다.

fastboot 명령 실행화면

언록이 완료되면 아래 그림과 같이 언록상태를 확인할 수 있다.

fastboot 명령 실행화면

락을 푼 후에 flash recovery 명령으로 다운받은 TWRP 이미지를 설치한다. 설치 후에 format userdata 명령으로 청소를 해준다.

1
2
3
fastboot oem unlock
fastboot flash recovery twrp-3.3.1-0-hammerhead.img
fastboot format userdata

fastboot 명령 실행화면

설치가 완료되면 볼륨 업/다운 키로 상단에 표시되는 버튼명이 Recovery mode가 되도록 하여 전원키로 선택하면 TWRP 화면으로 진입할 수 있다. Recovery mode 화면 TWRP 화면

LineaseOS 16 설치하기

TWRP Wipe 화면에 진입하여 Advanced Wipe을 선택하고 Dlavik / ART Cache, system, data, Internal Storage, cache 항목을 모두 선택하여 Wipe을 진행한다.

TWRP 화면으로 진입된 상태라면 pc에서 adb 명령으로 파일을 복사할 수 있다.

Lineageos 16 다운로드 사이트에서 최신 lineageos 16 파일을 다운한다. 이 글을 작성시에 lineage-16.0-20190926-UNOFFICIAL-hammerhead 버전을 받을 수 있었다. GAPPS 사이트에서 ARM 플랫폼에 해당하는 파일을 받는다. Nexus5는 32bit만 지원한다. ARM platform, Android 9.0, Variant pico 옵선을 선택하여 파일을 받았다.

다운로드한 파일들을 adb push 명령으로 Nexus5로 복사한다.

1
2
adb push lineage-16.0-20190926-UNOFFICIAL-hammerhead.zip /sdcard/os.zip
adb push open_gapps-arm-9.0-pico-20200520.zip /sdcard/gapps.zip

powersehll 실행 화면

powersehll 실행 화면

TWRP 화면에서 Install 화면으로 진입하여 앞에서 복사한 os.zip을 선택하여 설치한다. 설치가 완료되면 Wipe Cache/Dalvik 버튼을 선택하여 청소를 한번 해준다. gapps.zip도 같은 방법으로 설치한다.

LineagesOS 설치는 참고 사이트를 참고하여 진행하고 정리한 것이다. TWRP 설치는 참고 사이트를 참고하여 진행하고 정리한 것이다.

/system 파티션 용량 늘리고 LineageOS17 설치

LineageOS16은 설치하는데 아무 문제가 없었으나 /system 파티션 용량 부족 오류로 인해 gapps 설치를 실패했는데 파티션 재설정 사이트를 참고해서 /system 파티션 용량을 늘려야 합니다. 기존 용량은 1G인데 이 용량으로는 최신 OS를 설치하고 gapps를 설치하기에는 부족하다고 합니다.

gapps를 설치하지 않아도 안드로이드 부팅이나 웹브라우저, 카메라 등 기능은 잘 사용할 수 있지만 구글 플레이 스토어에서 앱을 설치할 수 없으니 별 쓸모가 없습니다.

파티션 용량도 수정하고 이번에는 LineageOS17을 설치해서 안드로이드 10을 써보고자 합니다.

윈도우 파워쉘에서 adb로 장치에 접속하여 파티션 크기를 확인해봅니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
PS D:\00Android\NEXUS5> adb devices                                                                                  
List of devices attached
034cb57e252034b3        recovery

PS D:\00Android\NEXUS5> adb shell                                                                                    

~ # fdisk -l /dev/block/mmcblk0
Found valid GPT with protective MBR; using GPT

Disk /dev/block/mmcblk0: 30777344 sectors, 2740M
Logical sector size: 512
Disk identifier (GUID): 98101b32-bbe2-4bf2-a06e-2bb33d000c20
Partition table holds up to 32 entries
First usable sector is 34, last usable sector is 30777310

Number  Start (sector)    End (sector)  Size       Code  Name
   1            1024          132095       64.0M   0700  modem
   2          132096          134143       1024K   0700  sbl1
   3          134144          135167        512K   0700  rpm
   4          135168          136191        512K   0700  tz
   5          136192          137215        512K   0700  sdi
   6          137216          138239        512K   0700  aboot
   7          138240          142335       2048K   0700  pad
   8          142336          144383       1024K   0700  sbl1b
   9          144384          145407        512K   0700  tzb
  10          145408          146431        512K   0700  rpmb
  11          146432          147455        512K   0700  abootb
  12          147456          153599       3072K   0700  modemst1
  13          153600          159743       3072K   0700  modemst2
  14          159744          160767        512K   0700  metadata
  15          160768          193535       16.0M   0700  misc
  16          193536          226303       16.0M   0700  persist
  17          226304          232447       3072K   0700  imgdata
  18          232448          277503       22.0M   0700  laf
  19          277504          322559       22.0M   0700  boot
  20          322560          367615       22.0M   0700  recovery
  21          367616          373759       3072K   0700  fsg
  22          373760          374783        512K   0700  fsc
  23          374784          375807        512K   0700  ssd
  24          375808          376831        512K   0700  DDR
  25          376832         2473983       1024M   0700  system
  26         2473984         2535423       30.0M   0700  crypto
  27         2535424         3969023        700M   0700  cache
  28         3969024        30777299       12.7G   0700  userdata
  29        30777300        30777310        5632   0700  grow
~ # 

25번 system 파티션 1024M를 늘리기 위해서 28번 userdata 파티션을 줄이기 때문에 그 사이에 있는 26, 27번도 같이 조절해야 합니다.

http://iwf1.com/iwf-repo/parted.rar를 다운로드하여 압축 해제하고 adb로 장치로 전송합니다.

1
2
PS D:\00Android\NEXUS5> adb push .\parted /                                                                          
.\parted: 1 file pushed, 0 skipped. 133.0 MB/s (346680 bytes in 0.002s)

adb로 장치에 접속하여 참조한 사이트와 동일하게 명령을 실행합니다. 단, 내 장치는 16GB 용량이고 참조 사이트는 32GB 용량 기준으로 진행하였기 때문에 userdata 파티션은 사이트와 다르게 16GB 용량 기준으로 설정해야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
PS D:\00Android\NEXUS5> adb shell   

~ # chmod +x parted
~ # ./parted /dev/block/mmcblk0 p
Model: MMC SEM16G (sd/mmc)
Disk /dev/block/mmcblk0: 15.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name      Flags
 1      524kB   67.6MB  67.1MB  fat16        modem
 2      67.6MB  68.7MB  1049kB               sbl1
 3      68.7MB  69.2MB  524kB                rpm
 4      69.2MB  69.7MB  524kB                tz
 5      69.7MB  70.3MB  524kB                sdi
 6      70.3MB  70.8MB  524kB                aboot
 7      70.8MB  72.9MB  2097kB               pad
 8      72.9MB  73.9MB  1049kB               sbl1b
 9      73.9MB  74.4MB  524kB                tzb
10      74.4MB  75.0MB  524kB                rpmb
11      75.0MB  75.5MB  524kB                abootb
12      75.5MB  78.6MB  3146kB               modemst1
13      78.6MB  81.8MB  3146kB               modemst2
14      81.8MB  82.3MB  524kB                metadata
15      82.3MB  99.1MB  16.8MB               misc
16      99.1MB  116MB   16.8MB  ext4         persist
17      116MB   119MB   3146kB               imgdata
18      119MB   142MB   23.1MB               laf
19      142MB   165MB   23.1MB               boot
20      165MB   188MB   23.1MB               recovery
21      188MB   191MB   3146kB               fsg
22      191MB   192MB   524kB                fsc
23      192MB   192MB   524kB                ssd
24      192MB   193MB   524kB                DDR
25      193MB   1267MB  1074MB  ext4         system
26      1267MB  1298MB  31.5MB               crypto
27      1298MB  2032MB  734MB   ext4         cache
28      2032MB  15.8GB  13.7GB  ext4         userdata
29      15.8GB  15.8GB  5632B                grow

~ #                                             
~ # umount /system
~ # umount /data
~ # umount /sdcard
~ # umount /cache
~ # ./parted /dev/block/mmcblk0 rm 25
Information: You may need to update /etc/fstab.

~ # ./parted /dev/block/mmcblk0 rm 26
Information: You may need to update /etc/fstab.

~ # ./parted /dev/block/mmcblk0 rm 27
Information: You may need to update /etc/fstab.

~ # ./parted /dev/block/mmcblk0 rm 28
Information: You may need to update /etc/fstab.

~ # ./parted /dev/block/mmcblk0 mkpart primary 193MB 2291MB
Information: You may need to update /etc/fstab.

~ # ./parted /dev/block/mmcblk0 mkpart extended 2291MB 2322MB
Information: You may need to update /etc/fstab.

~ # ./parted /dev/block/mmcblk0 mkpart primary 2322MB 3056MB
Information: You may need to update /etc/fstab.

~ # ./parted /dev/block/mmcblk0 mkpart primary 3056MB 15.8GB
Information: You may need to update /etc/fstab.

~ # ./parted /dev/block/mmcblk0 p
Model: MMC SEM16G (sd/mmc)
Disk /dev/block/mmcblk0: 15.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name      Flags
 1      524kB   67.6MB  67.1MB  fat16        modem
 2      67.6MB  68.7MB  1049kB               sbl1
 3      68.7MB  69.2MB  524kB                rpm
 4      69.2MB  69.7MB  524kB                tz
 5      69.7MB  70.3MB  524kB                sdi
 6      70.3MB  70.8MB  524kB                aboot
 7      70.8MB  72.9MB  2097kB               pad
 8      72.9MB  73.9MB  1049kB               sbl1b
 9      73.9MB  74.4MB  524kB                tzb
10      74.4MB  75.0MB  524kB                rpmb
11      75.0MB  75.5MB  524kB                abootb
12      75.5MB  78.6MB  3146kB               modemst1
13      78.6MB  81.8MB  3146kB               modemst2
14      81.8MB  82.3MB  524kB                metadata
15      82.3MB  99.1MB  16.8MB               misc
16      99.1MB  116MB   16.8MB  ext4         persist
17      116MB   119MB   3146kB               imgdata
18      119MB   142MB   23.1MB               laf
19      142MB   165MB   23.1MB               boot
20      165MB   188MB   23.1MB               recovery
21      188MB   191MB   3146kB               fsg
22      191MB   192MB   524kB                fsc
23      192MB   192MB   524kB                ssd
24      192MB   193MB   524kB                DDR
25      193MB   2291MB  2098MB  ext4
26      2291MB  2322MB  31.0MB
27      2322MB  3056MB  734MB
28      3056MB  15.8GB  12.7GB
29      15.8GB  15.8GB  5632B                grow

~ # ./parted /dev/block/mmcblk0 name 25 system
~ # ./parted /dev/block/mmcblk0 name 26 crypto
~ # ./parted /dev/block/mmcblk0 name 27 cache
~ # ./parted /dev/block/mmcblk0 name 28 userdata
~ # mke2fs -b 4096 -T ext4 /dev/block/mmcblk0p25
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
128256 inodes, 512222 blocks
25611 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=528482304
16 block groups
32768 blocks per group, 32768 fragments per group
8016 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

~ # mke2fs -b 4096 -T ext4 /dev/block/mmcblk0p27
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
44832 inodes, 179199 blocks
8959 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=184549376
6 block groups
32768 blocks per group, 32768 fragments per group
7472 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

~ # mke2fs -b 4096 -T ext4 /dev/block/mmcblk0p28
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
776720 inodes, 3101068 blocks
155053 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3179282432
95 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

~ # ./parted /dev/block/mmcblk0 p
Model: MMC SEM16G (sd/mmc)
Disk /dev/block/mmcblk0: 15.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name      Flags
 1      524kB   67.6MB  67.1MB  fat16        modem
 2      67.6MB  68.7MB  1049kB               sbl1
 3      68.7MB  69.2MB  524kB                rpm
 4      69.2MB  69.7MB  524kB                tz
 5      69.7MB  70.3MB  524kB                sdi
 6      70.3MB  70.8MB  524kB                aboot
 7      70.8MB  72.9MB  2097kB               pad
 8      72.9MB  73.9MB  1049kB               sbl1b
 9      73.9MB  74.4MB  524kB                tzb
10      74.4MB  75.0MB  524kB                rpmb
11      75.0MB  75.5MB  524kB                abootb
12      75.5MB  78.6MB  3146kB               modemst1
13      78.6MB  81.8MB  3146kB               modemst2
14      81.8MB  82.3MB  524kB                metadata
15      82.3MB  99.1MB  16.8MB               misc
16      99.1MB  116MB   16.8MB  ext4         persist
17      116MB   119MB   3146kB               imgdata
18      119MB   142MB   23.1MB               laf
19      142MB   165MB   23.1MB               boot
20      165MB   188MB   23.1MB               recovery
21      188MB   191MB   3146kB               fsg
22      191MB   192MB   524kB                fsc
23      192MB   192MB   524kB                ssd
24      192MB   193MB   524kB                DDR
25      193MB   2291MB  2098MB  ext4         system
26      2291MB  2322MB  31.0MB               crypto
27      2322MB  3056MB  734MB   ext4         cache
28      3056MB  15.8GB  12.7GB  ext4         userdata
29      15.8GB  15.8GB  5632B                grow

~ #
~ # mount -a
mount: mounting /dev/block/mmcblk0p1 on /firmware failed: Invalid argument
mount: mounting /usb-otg on vfat failed: No such file or directory
~ # exit

여기까지 파티션 용량 수정은 기본적으로 완료했고 다음으로 LineageOS17을 설치하면서 중간에 파티션 관련 작업도 추가적으로 해야 합니다.

LineageOS17 설치 및 파티션 수정

/system 파티션 용량이 원래 1G 이상인 장치라며 TWRP에서 wipe으로 모두 삭제한 후에 OS랑 gapps를 Android 10 버전용으로 설치하면 됩니다.

LineageOS17 설치 가이드 사이트에서 OS 파일과 gapps pico(Android 10 버전용)을 다운받아서 설치하면 됩니다.

파티션 용량을 수정하면서 진행하기 위해서 LineageOS17 설치 가이드 사이트에서 OS 파일과 gapps를 다운받습니다. adb로 장치에 저장합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
PS D:\00Android\NEXUS5> ls                                                                                           

    디렉터리: D:\00Android\NEXUS5

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----     2020-05-18   오후 2:16      450181505 lineage-17.1-20200518-UNOFFICIAL-hammerhead.zip
-a----     2020-05-22  오후 10:52       97281516 open_gapps-arm-10.0-pico-20200522.zip

PS D:\00Android\NEXUS5> adb push .\lineage-17.1-20200518-UNOFFICIAL-hammerhead.zip /sdcard/os17.zip                  
.\lineage-17.1-20200518-UNOFFICIAL-hammerhead.zip: 1 file...pushed, 0 skipped. 3.2 MB/s (450181505 bytes in 133.695s)
PS D:\00Android\NEXUS5> adb push .\open_gapps-arm-10.0-pico-20200522.zip /sdcard/gapps.zip                           
.\open_gapps-arm-10.0-pico-20200522.zip: 1 file pushed, 0 skipped. 3.6 MB/s (97281516 bytes in 25.682s)

먼저 LineageOS17을 TWRP에서 install로 설치합니다.

설치 후에 adb로 장치에 접속해서 파티션 크기를 확인해보면 \system 파티션이 다시 1024M로 돌아간 것을 확인할 수 있습니다. ~ 라고 참조사이트에 나와서 확인해봤는데 내 경우에는 앞에서 설정한 2G로 그대로 유지된 상태입니다. 그래서 참조사이트와 같이 용량을 다시 조정하지 않고 바로 gapps를 설치했더니 오류없이 제대로 설치됩니다.

만약 OS 설치 후에 \system 파티션이 1G로 되돌아 갔다면 아래 명령을 장치에서 실행합니다.

1
2
3
~ # umount /system
~ # resize2fs -f /dev/block/mmcblk0p25 2000M
~ # mount -a

이 후에 gapps를 설치하면 됩니다.

gapps 까지 설치 후에 재부팅하면 LineageOS 부팅화면이 대략 10분 정도 표시된 후에 장치 초기 설정화면으로 진입되니 기다리면 됩니다.

Nexus5에 안드로이드 10을 설치해서 현재까지 아주 잘 쓰고 있습니다.

“hammerhead” for Nexus 5 (GSM/LTE) (공장초기화-OS원복)

Nexus5용 마지막 버전인 OS 6.0.1로 재설치하기 위해서는 구글에서 제공하는 이미지를 사용하면 됩니다.

GIS 구글 사이트에서 Nexus5용 hammerhead 이미지를 다운로드 받아서 설치합니다. OTA 버전을 권장하길래 사용하였습니다.

TWRP에서 Wipe으로 청소를 깨끗히 해주고 설치를 진행합니다. 설치 후에 재부팅하니 익숙한 구글 부팅 화면이 표시됩니다.

재부팅시에 부팅화면이 10분 정도 표시되니 불안해 하지 마시고 잠깐 쉬고 오면 Welcome 화면이 표시됩니다.

This post is licensed under CC BY 4.0 by the author.