Instalace CarbonROM na Nexus 4 (Mako)

Instalace CarbonROM na Nexus 4 (Mako)

CarbonROM je alternativní (aftermarket) operační systém pro chytré telefony postavený na Androidu podobně jako třeba LineageOS. Zatím co LineageOS už telefon Nexus 4 od cca půlky roku 2019 nepodporuje, CarbonOS podporu má a poslední dostupná verze je jen pár týdnů stará, ta poskytuje Android 9 s “úrovní opravy zabezpečení Android” 5. prosince 2019 (dnes je 7. ledna 2020) což je pro téměř 8 let starý telefon super.

Protože LineageOS který jsem měl na Nexusu doteď už aktualizaci nejspíš nedostane a protože Nexus už dávno není můj primární telefon, rozhodl jsem se dát šanci oné CarbonROM na kterou jsem nedávno náhodou narazil.

Protože CarbonROM nemá na stránkách instalační instrukce (alespoň v současnosti), rozhodl jsem se napsat tento zápisek s poznámkami a seznamem příkazů, které jsem při instalaci použil.

Rychlé odkazy:

Upozornění

Toto není vyčerpávající návod! Kroky co se dělají v grafickém rozhraní TWRP přímo na telefonu tu většinou nezmiňuji, některé další zase nerozebírám. Primárně doporučuji přečíst zmíněný návod na LineageOS wiki. Tato série příkazu co tu uvádím je spíš reference pro mě.

Prerekvizity

  • Odemčený bootloader na telefonu (pokud ještě nemáte mrkněte na návod na stránkách LineageOS).
  • USB kabel pro propojení telefonu s počítačem.
  • Nainstalovaný nástroj ADB (Android Debug Bridge) na počítači – Ve Fedoře poskytovaný balíčkem “android-tools”.
  • Mít na telefonu aktivované “vývojářské možnosti” (Nastavení -> O zařízení a tam 7x stisknout na “Číslo sestavení”) a v nich zapnuté “ladění přes USB”.

Připojení telefonu k systému

$ adb devices
List of devices attached
* daemon not running; starting now at tcp:5037
* daemon started successfully
0172afa28a94ad60	no permissions; see [http://developer.android.com/tools/device.html

Onu “no permissions” chybu vyřešilo restartování adb serveru:

$ sudo adb kill-server

$ sudo adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfully

$ adb devices
List of devices attached
0172afa28a94ad60	unauthorized

Stav “unauthorized” vyřešilo autorizování připojeného počítače přímo na telefonu (Android vyhodil notifikaci, kde se zeptal jestli chci autorizovat nebo ne).

$ adb devices
List of devices attached
0172afa28a94ad60	device

Hotovo, adb už telefon vidí.

Restart telefonu do fastbootu kvůli instalaci TWRP

$ adb reboot bootloader

$ fastboot devices
no permissions; see [http://developer.android.com/tools/device.html]	fastboot

“no permissions” vyřešilo použití sudo:

$ sudo fastboot devices
0172afa28a94ad60	fastboot

Nyní je potřeba nainstalovat TWRP, které jsme stáhli z výše zmíněného odkazu:

$ sudo fastboot flash recovery twrp-3.3.1-0-mako.img
Sending 'recovery' (9376 KB)                       OKAY [  0.299s]
Writing 'recovery'                                 OKAY [  0.503s]
Finished. Total time: 0.805s

A pak restartovat telefon do onoho TWRP recovery jež jsme právě nainstalovali:

$ sudo fastboot boot twrp-3.3.1-0-mako.img
Downloading 'boot.img'                             OKAY [  0.310s]
booting                                            OKAY [  0.027s]
Finished. Total time: 0.346s

Zvětšení systémového oddílu

POZOR: Tato část je víc technická a bylo by dobré aby jste rozuměli tomu co děláte, jinak riskujete, že si rozbijete souborový systém v telefonu!

Celý návod na xda-developers v příspěvku od uživatele bmg1001.

$ adb push parted /
parted: 1 file pushed. 3.2 MB/s (346680 bytes in 0.102s)

Tímto příkazem zkopírujeme binárku nástroje “parted”, který jsme stáhli ze zmíněného příspěvku na xda-developers, do kořene souborového systému na vašem telefonu. Teď některé oddíly odpojíme, odstraníme, a vytvoříme znovu s upravenými velikostmi (vetší systémový oddíl na úkor oddílu pro cache):

$ adb shell

~ # chmod +x parted

~ # ./parted /dev/block/mmcblk0 p
Model: MMC 016G92 (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.2MB  524kB                sbl1
 3      68.2MB  68.7MB  524kB                sbl2
 4      68.7MB  70.8MB  2097kB               sbl3
 5      70.8MB  71.3MB  524kB                tz
 6      71.3MB  94.4MB  23.1MB               boot
 7      94.4MB  117MB   23.1MB               recovery
 8      117MB   118MB   799kB                m9kefs1
 9      118MB   119MB   799kB                m9kefs2
10      119MB   120MB   799kB                m9kefs3
11      120MB   121MB   524kB                rpm
12      121MB   121MB   524kB                aboot
13      121MB   122MB   524kB                sbl2b
14      122MB   124MB   2097kB               sbl3b
15      124MB   124MB   524kB                abootb
16      124MB   125MB   524kB                rpmb
17      125MB   125MB   524kB                tzb
18      125MB   126MB   524kB                metadata
19      126MB   143MB   16.8MB               misc
20      143MB   159MB   16.8MB  ext4         persist
21      159MB   1040MB  881MB   ext4         system
22      1040MB  1627MB  587MB   ext4         cache
23      1627MB  15.8GB  14.1GB  ext4         userdata
24      15.8GB  15.8GB  524kB                DDR
25      15.8GB  15.8GB  507kB                grow

~ # umount /data
~ # umount /sdcard
~ # umount /cache
~ # umount /system

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

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

~ # ./parted /dev/block/mmcblk0 mkpart primary 159 1590
Information: You may need to update /etc/fstab.                           

~ # ./parted /dev/block/mmcblk0 mkpart primary 1590 1627
Information: You may need to update /etc/fstab.                           

~ # ./parted /dev/block/mmcblk0 p
Model: MMC 016G92 (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.2MB  524kB                sbl1
 3      68.2MB  68.7MB  524kB                sbl2
 4      68.7MB  70.8MB  2097kB               sbl3
 5      70.8MB  71.3MB  524kB                tz
 6      71.3MB  94.4MB  23.1MB               boot
 7      94.4MB  117MB   23.1MB               recovery
 8      117MB   118MB   799kB                m9kefs1
 9      118MB   119MB   799kB                m9kefs2
10      119MB   120MB   799kB                m9kefs3
11      120MB   121MB   524kB                rpm
12      121MB   121MB   524kB                aboot
13      121MB   122MB   524kB                sbl2b
14      122MB   124MB   2097kB               sbl3b
15      124MB   124MB   524kB                abootb
16      124MB   125MB   524kB                rpmb
17      125MB   125MB   524kB                tzb
18      125MB   126MB   524kB                metadata
19      126MB   143MB   16.8MB               misc
20      143MB   159MB   16.8MB  ext4         persist
21      159MB   1590MB  1431MB  ext4
22      1590MB  1627MB  37.4MB
23      1627MB  15.8GB  14.1GB  ext4         userdata
24      15.8GB  15.8GB  524kB                DDR
25      15.8GB  15.8GB  507kB                grow

~ # ./parted /dev/block/mmcblk0 name 21 system

~ # ./parted /dev/block/mmcblk0 name 22 cache

~ # mke2fs -b 4096 -T ext4 /dev/block/mmcblk0p21
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
87472 inodes, 349271 blocks
17463 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=360710144
11 block groups
32768 blocks per group, 32768 fragments per group
7952 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/mmcblk0p22
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
2288 inodes, 9128 blocks
456 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=12582912
1 block group
32768 blocks per group, 32768 fragments per group
2288 inodes per group

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

~ # mount -a

Instalace CarbonROM a GApps

Nyní uděláme wipe (smazání) a formátování v TWRP grafickém uživatelském rozhraní přímo na telefonu tak jak popisuje návod na LineageOS wiki a pak nainstalujeme CarbonROM obraz a GApps, které jsme stáhli ze stránek co jsem odkázal výše.

$ sudo adb sideload CARBON-CR-7.0-OPAL-RELEASE-mako-20191220-0303.zip
$ sudo adb sideload open_gapps-arm-9.0-micro-20200107.zip

Hotovo!

Poznámka na závěr, pokud se vám instalace nedaří kvůli nedostatku místa ani po tom co jste zvětšili systémový oddíl, můžete ještě zkusit telefon po zvětšení restartovat (znovu do recovery) a pak zkusit instalaci znovu. V mém případě i když se system/ po “mount -a” připojil, během instalace se sám od sebe zase odpojil. Restart systému pomohl a po rebootu už byl připojen stabilně.

Comments are closed.