예전에 쓰던 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 화면을 확인할 수 있다.
화면 가장 아래에 LOCK STATE - lockecd
로 표시가 되고 있다면 oem unlock
명령으로 락을 푼다. 명령을 실행하면 아래 그림과 같이 물어보는데 볼륨업키로 Yes
를 선택 후에 전원키를 누르면 언록을 실행한다.
언록이 완료되면 아래 그림과 같이 언록상태를 확인할 수 있다.
락을 푼 후에 flash recovery
명령으로 다운받은 TWRP 이미지를 설치한다. 설치 후에 format userdata
명령으로 청소를 해준다.
1
2
3
fastboot oem unlock
fastboot flash recovery twrp-3.3.1-0-hammerhead.img
fastboot format userdata
설치가 완료되면 볼륨 업/다운 키로 상단에 표시되는 버튼명이 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 실행 화면
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 화면이 표시됩니다.