Der er mange skjulte fastboot-kommandoer på din enhed. For at finde dem, bliver vi nødt til at dumpe bootloaderen og undersøge indholdet!
I min søgen efter at opdage så meget om Android-tilpasning, som jeg overhovedet kunne, har jeg gjort mange obskure, men alligevel interessante opdagelser. Jeg har vist dig, hvordan du får adgang skjulte menuer på din enhed ved at gennemgå alle de skjulte applikationsaktiviteter på din telefon. For nylig har jeg vist dig, hvordan du får adgang til skjult hardware-diagnoseværktøj på visse smartphones. Nu er jeg klar over, at nogle af jer var skuffede over, at din smartphone ikke var dækket af den forrige artikel, og det beklager jeg.
For at råde bod på det, vil jeg guide dig gennem noget langt, langt mere avanceret og spændende: dumpe din enheds bootloader for at opdage skjulte fastboot-kommandoer. Denne guide, selvom den er lavet på min Nexus 6P, er absolut replikerbar på de fleste smartphones. Hvilke kommandoer du vil have adgang til vil dog variere betydeligt mellem enheder. De fleste kommandoer vil ikke rigtig hjælpe dig i nogen virkelig situation, men ikke desto mindre er det ret interessant at dykke så dybt ned i din telefons indstillinger. Lad os komme igang.
Ansvarsfraskrivelse: Så længe du ved, hvad du laver og kan følge instruktionerne korrekt, bør der ikke ske noget dårligt med din enhed. Men vi roder stadig rundt med vores enhedspartitioner og bootloaderen, så der er ingen at sige, hvad der kunne ske, hvis du indtaster den forkerte kommando. Sørg for, at du har en sikkerhedskopi uden for enheden klar!
Forberedelse
Før vi går i gang, er der en virkelig, virkelig vigtig ting at bemærke. For at udpakke din enheds bootloader, du skal bruge root-adgang på din telefon. Hvis du ikke har root-adgang, kan du fortsætte med at læse denne vejledning til uddannelsesformål, men du vil ikke være i stand til at udføre nogen af de nødvendige kommandoer. Forstået? Godt. En anden forudsætning, du skal opfylde, er at sikre, at din computer har alt korrekte ADB/fastboot-drivere. Hvis du ikke har ADB/fastboot binære filer, så anbefaler jeg at installere Minimal ADB & Fastboot fra vores fora. Hvad angår driverne, kan du få fat i de nødvendige drivere til Google Nexus-enheder her og for alle andre enheder fra her. Hvordan ved du, om du er god til at gå? Tilslut din enhed, aktiver USB-fejlfinding under udviklerindstillinger, åbn en kommandoprompt, og skriv:
adb devices
Hvis du ser din enheds serienummer poppe op, så har du de rigtige drivere.
Dumper bootloaderen
Vores første skridt er at åbne en shell på vores enhed, så vi kan køre kommandoer over ADB. Det er bedst, at vi kører kommandoer over ADB, fordi vi er meget mere tilbøjelige til at lave fejl, når du skriver på et virtuelt tastatur, og at lave fejl er ikke noget, du vil gøre her. Den første kommando du skal køre i din kommandoprompt er:
adb shell
Hvis du ser kommandoprompten skifte fra at vise den binære ADB-mappe til at vise kodenavnet for din Android-enhed, så har du indtastet din enheds lokale kommandolinjeskal. Nu, for at få adgang til de partitioner, vi skal dumpe, skal du bruge superbrugeradgang. For at gøre det skal du skrive følgende:
su
Symbolet foran din enheds kodenavn skulle ændre sig fra $ til # indikerer, at du nu kan køre kommandoer med forhøjede privilegier. Vær nu forsigtig!
Dernæst vil vi finde ud af den nøjagtige placering af din enheds bootloader-billede. For at finde den nøjagtige mappe, vil vi udskrive en liste over alle partitionerne og deres mapper ved navn, og lede efter en, der især hedder 'aboot.' Du skal indtaste to kommandoer som følger:
cd /dev/block/bootdevice/by-name
ls -all
Som du kan se ovenfor, udskrives en kæmpe liste over partitionsmapper. Disse partitioner er sorteret efter navn, så vi nemt kan skelne placeringen af vores bootloader-partition. I mit tilfælde bootloaderen, som er 'aboot' i ovenstående billede, kan findes på /dev/block/mmcblk0p10. Det her vil variere afhængigt af din enhed, så det er vigtigt, at du følger disse instruktioner for at finde ud af den sande mappe, hvor din bootloader er placeret. Vær dog opmærksom på denne mappe, da vi vil referere til den i følgende kommando for at dumpe bootloaderen:
dd if=/dev/block/{YOUR ABOOT PARTITION} of=/sdcard/aboot.img
Når det er lykkedes, bør du finde en fil kaldet 'aboot.img' placeret på roden af dit interne lager. Nu hvor vi har dumpet bootloaderen, er vi nødt til at undersøge den for at finde ud af, hvilke skjulte kommandoer vi kan finde.
Skjulte Fastboot-kommandoer og deres anvendelser
Du er måske bekendt med nogle af de mere almindelige fastboot-kommandoer, som f.eks fastboot flash eller fastboot boot. Der er mange flere fastboot-kommandoer som defineret i open source fastboot-protokol. Her er en liste over de fastboot-kommandoer, der er tilgængelige på hver enhed med en bootloader baseret på den seneste AOSP-kode:
Hvad der mangler på denne liste er fastboot oem kommandoer. Disse kommandoer er bestemt til Android-enhedsproducenter, og der er ingen omfattende liste eller dokumentation nogen steder for, hvilke fastboot oem-kommandoer der er tilgængelige. Nu, hvis din enhedsproducent var venlig nok til at give en fastboot-kommando, der viser alle oem-kommandoer (prøv fastboot oem ? og se om det virker), så behøver du ikke at gøre mere. Hvis der ikke er nogen kommando, der udskriver en liste over tilgængelige fastboot oem-kommandoer, så skal du udskrive en liste over strenge fra aboot.img og søg efter oem kommandoerne manuelt.
'strings' er en linux-kommando, hvor dokumentationen er tilgængelig her. Som du kan se, bruger jeg personligt en Windows-maskine, så i stedet har jeg brugt en program, der efterligner 'strenge' fra Linux. Det rå output af 'strings'-kommandoen på en aboot.img-fil vil være ret rodet, men hvis du blot CTRL+F for 'oem' skulle du finde det, du skal bruge. Hvis du vil forfine din søgning, kan du prøve denne kommando (for den Windows-version, jeg linkede til):
strings * | findstr /i oem
Til Nexus 6P kompilerede jeg følgende liste over fastboot oem-kommandoer:
fastboot oem unlock-go
fastboot oem frp-unlock
fastboot oem frp-erase
fastboot oem enable reduced-version
fastboot oem device-info
fastboot oem enable-charger-screen
fastboot oem disable-charger-screen
fastboot oem enable-bp-tools
fastboot oem disable-bp-tools
fastboot oem enable-hw-factory
fastboot oem disable-hw-factory
fastboot oem select-display-panel
fastboot oem off-mode-charge enable
fastboot oem off-mode-charge disable
fastboot oem ramdump enable
fastboot oem ramdump disable
fastboot oem uart enable
fastboot oem uart disable
fastboot oem hwdog certify begin
fastboot oem hwdog certify close
fastboot oem get-imei1
fastboot oem get-meid
fastboot oem get-sn
fastboot oem get-bsn
fastboot oem get_verify_boot_status
Vær advaret om, at du ikke bør prøve nogen af de ovennævnte kommandoer eller nogen af de kommandoer, du opdager på din enhed, medmindre du er villig til at acceptere risiciene. Der er en grund til, at disse kommandoer er skjult for brugeren.
Når det er sagt, har jeg tænkt på nogle pæne anvendelser for nogle af disse fastboot-kommandoer, jeg har fundet (som måske eller måske ikke er findes på din enhed, så følg instruktionerne ovenfor for at tjekke!), som burde have lyst til den mest hardcore Android entusiast. Der er to kommandoer her, som kunne have en praktisk nytte.
Først ud er fastboot oem (aktiver|deaktiver)-oplader-skærm kommando. Hvad dette gør, er at deaktivere opladningsskærmen, der dukker op, når din enhed er slukket. Hvis du ikke er fan af den blændende lysstyrke på opladningsskærmen, når din telefon er slukket, så kan du deaktivere den via denne skjulte fastboot-kommando!
Dernæst er der fastboot oem off-mode-charge (aktiver|deaktiver) kommando. Denne kommando bestemmer, om din enhed automatisk tænder, når en strømkilde registreres. Som standard er den indstillet til 'deaktiver'. Jeg vil indrømme, at denne kommando ikke har meget brug for telefoner, men hvis du planlægger at montere din tablet i din bils instrumentbræt, vil du finde denne kommando utroligt nyttig. Du vil være i stand til at indstille din enhed til straks at tænde, når tabletten modtager strøm, f.eks. når dit bilbatteri starter. Omvendt er det ret nemt at slukke for tabletten, når strømmen går tabt, ved at bruge en automatiseringsapp som Tasker. Denne kommando fungerer i øvrigt nøjagtigt som skrevet på Nexus 7 (2013).
Det var det for denne lektion i Android-tilpasning. Del de kommandoer, du opdager (ideelt set i et pastebin-link) i kommentarerne nedenfor!
Tak til XDA Senior Recognized Developer Dees_Troy for hans hjælp til at lave denne artikel!