16 839
Tesztek Android Google Apple Microsoft Samsung Huawei Linux Okostelefon Biztonság Tudomány Facebook Videojáték Film
https://lh4.googleusercontent.com/-mfUupcFQb_w/URj70EvG3vI/AAAAAAAADAQ/iEO13O4Jnx4/s800/image.jpg

Android terminál parancsok

2013.02.11. 15.32
https://lh4.googleusercontent.com/-mfUupcFQb_w/URj70EvG3vI/AAAAAAAADAQ/iEO13O4Jnx4/s800/image.jpgBizonyára kevesen tudják, hogy nemcsak az asztali - Linux alapú - operációs rendszerek rendelkeznek hatékony grafikus és terminálos kezelőfelülettel. A szintén Linux alapokon futó Android is adminisztrálható lokális és távoli terminálemulátorok segítségével egyaránt, amivel mélyen belenyúlhatunk a rendszer lelkébe.

Ez a cikk elsősorban a ZTE Blade-en futó Android operációs rendszerhez készült, ugyanakkor számos ismertetésre kerülő parancs és eljárás alkalmazható másik androidos okostelefonon, sőt asztali gépen futó Linux (pl. Ubuntu, Debian) terminálban is.

Az Android Linux kernele és speciális üzemmódok

Az Android Linux alapú operációs rendszer: tehát Linux kernel (rendszermag) töltődik be indításkor a memóriába (a RAM-ba). A boot.img lemezképfájl tartalmazza a bootloader nevű partíción a normál rendszerindításkor inicializált kernelt (ugyanis pl. a Clockworkmod recovery is tartalmaz egy egyszerűsített kernelt; a kernel mérete Android esetén néhány MB.
Aki már felrakta a Clockwork recoveryt a ZTE Blade-re, a recovery indításakor láthatott egy fekete képernyőn megjelenő

A N D R O I D . . .

szöveget (fejjel lefelé); a recovery kernele éppen ekkor töltődik be.

További érdekességek:
- normál boot (elérése: a Power gomb nyomva tartása a splash kép megjelenéséig): legelőször a splash partíción található bitképet látjuk, ezután/közben a bootloader partícióról betöltődik a kernel (plusz a ramdiszk) és a firmware egy része, ezután felcsatolódnak a system, userdata, cache stb. partíciók csak olvashatóan, és elindul a grafikus felület.

- recovery boot (elérése: Power gomb + hangerő MÍNUSZ gomb nyomva tartása a splash kép eltűnéséig): szintén a splash tartalmát látjuk, majd a recovery partícióról betöltődik egy speciális, "csökkentett tudású" kernel, majd betöltődik a recovery menüje is (ha felraktuk a Clockwork-öt; egyébként 3 betűt látunk (FTM-mód), és semmi különöset nem tudunk csinálni PC-s diagnosztikai program nélkül).

- bootloader mód (elérése: Power gomb + hangerő PLUSZ gomb nyomva tartása ~ 10 másodpercig): ekkor a splash után látszólag megáll a rendszer, ugyanis nem töltődik be a kernel. Ekkor PC-ről ADB-n keresztül olyan diagnosztikai beavatkozásokat hajthatunk végre, amelyeket futó (betöltött) rendszer alatt nagyrészt csak root jogkörrel tudnánk végrehajtani. Ebben az üzemmódban a telefon keres a fájlrendszerben a /mnt/sdcard/image helyen mbn fájlokat: ezekkel alacsony szintű műveletek automatizálhatók (pl. partícióátméretezés, partíciók tartalmának flashelése (felírása, azaz EEPROM-ba programozása), boot, recovery csere stb.) Az eljárás neve: Total Phone Transfer (TPT), a ZTE Blade mobilarénás fórumán csodazip-nek hívják a zipet, amely tartalmazza az image mappát, ami tartalma (mbn és img fájlok) az előbb említett helyre írható, ha low-level módosításokat szeretnénk végrehajtani (módosított verziói: csudazip, csudazip2).

Figyelem! A low-level (TPT) beavatkozások különös körültekintést, figyelmet kívánnak: ugyanis elképzelhető (ha a felhasználó nem követi PONTOSAN a leírásokat), hogy a készülék a végfelhasználó számára visszafordíthatatlanul károsodik, helyreállítása csak szakszervízben lehetséges! TPT beavatkozás előtt a szkriptek (image.rar) md5 hasheinek kiszámítása, összevetése a fájlokat publikáló által közzétett ellenőrzőösszeggel kritikus fontosságú!


A rendszerhéj és hogyan beszélgessünk vele

Az ún. parancsértelmező (ha elindítjuk) egy burkot (shell; rendszerhéj, héj) formál a rendszermag (kernel) körül: rajta keresztül közvetlenül (alacsony szinten) parancsokat adhatunk ki a rendszermag számára.

Miért is jó ez nekünk? A shell segítségével közvetlenül kommunikálhatunk a kernellel, sok műveletet egyszerűbben/gyorsabban végrehajthatunk a parancssorban, mint a grafikus felületen; sőt sok -- jellemzően alacsony szintű -- művelet (pl. partíciók teljes adattartalmának kiolvasása ("dump"), illetve felülírása (bekapcsolt rendszeren) kizárólag a shellen keresztül -- parancsok kiadásával -- hajtható végre. Továbbá készíthetünk shell szkripteket, amelyek futtatásával összetett, sokszor időigényes, ismétlődő műveletsorokat automatizálhatunk. A parancssor használata először kissé nehézkesnek tűnhet, azonban tanulás, gyakorlás után természetesnek fog tűnni.


A legtöbb androidos okostelefon az ash shellt (parancsértelmező) tartalmazza. Az asztali Linux disztribúciókban alapértelmezés szerint általában a bash-t találjuk. A bash és az ash igen sok hasonlóságot mutat: tekinthetünk az ash-ra, mint a bash kisebb tudású változatára, amely kis méret- és alacsony erőforrásigénye miatt hordozható (és egyéb beágyazott) eszközök számára ideális. Természetesen a "tudása" is szerényebb a bash-hoz képest. Azonban a legtöbb parancs (főleg az egyszerűbbek) működik mindkét shellben.

Ezen leírás nem titkolt célja az, hogy a Linux terminál használatának alapjait az átlagos felhasználó is megismerhesse; mivel igen nagy átfedés van egy asztali Linux rendszeren futó bash shell és egy Android telefonon futó ash shellen futtatott parancsok között, főleg az alapvető (pl. fájlmanipuláló) parancsokat illetően. Ha valaki az egyik shell-lel már megismerkedett, nem fog neki gondot okozni a másik használata sem.
A jelen leírás az androidos telefonok shelljének használatára fókuszál, de a parancsok nagy része nem Android-specifikus, így azok működnek asztali gépen futó Linuxon (pl. Ubuntu) is.

A parancsok lehetnek belsők vagy külsők. A belső parancsok szorosan a shellhez tartoznak, azok szerves részei (konkrétan a shell binárisa fut, ha meghívjuk őket). Ezzel szemben a külső parancsok nem mások, mint az adott architektúrára (esetünkben: armv61) portolt futtatható programok (programforrásból az adott CPU-nk számára "megemészthető" formátumra fordított bináris, közvetlenül végrehajtható kódok, persze maga a shell is egy ilyen programkód). A formátumuk a jelen esetben ELF (ez hasonló a windowsos exe fogalmához, linuxos rendszereken még az a.out végrehajtható formátum is elterjedt).

Megjegyzés: az Android több architektúrára elérhető (pl. arm, x86 stb). Tehát akár asztali PC-n is natívan (és/vagy virtuális gépen) futtatható az x86-os verziója. Fontos megjegyezni, hogy az APK kiterjesztésű Android programok nem platform-specifikusak (lásd a Java alapokat)!

A két kategória (belső, külső parancs) között a valóságban nincs éles határvonal. Például az Android esetében a legtöbb "külső" parancs egy univerzális bináris programra (busybox a neve) mutató "parancsikon" (szaknyelven: szimbolikus link). A busybox ideális korlátozott erőforrású (hordozható) rendszerek számára, mivel alacsony az erőforrásigénye -- így igen sok beágyazott (embedded) Linux rendszer szerves része, működésük gyakran elképzelhetetlen nélküle, ahogyan sok rootolt appé is. Ami "asztali" terminálokon belső parancs, sokszor beágyazott eszközökben, így a telefonunkban is külső parancs. Ez nem meglepő, hiszen az asztali shell kisebb tudású, lebutított testvére kerül gyakran a hordozható készülékek ROM-jába -- a hiányzó funkcionalitás opcionális külső programokkal (pl. busybox) modulárisan pótolható. Épp annyi funkció adható hozzá, ami mindenképpen szükséges, ezáltal a ROM mennyisége minimalizálható, nem kell felesleges adatokat tárolni.

A következőkben ismertetek belső és külső parancsokat, amelyeket beírhatunk közvetlenül a telefonba (Terminal Emulator szükséges, a Play Store-ból ingyenesen letölthető); vagy ha PC közelben vagyunk, USB, vagy Wifi kapcsolaton keresztül elküldhetünk parancsokat a telefonnak Windows/Linux operációs rendszer alól is. Természetesen az utóbbi megoldás sokkal kényelmesebb a PC billentyűzete miatt. Ez utóbbi esetben is választhatunk, hogy az ADB (Android Debug Bridge) egy funkcióján keresztül férünk hozzá a készülékünk shelljéhez (USB vagy Wifi (lásd az ADB Wireless ingyenes programot a Play Store-ban) szükséges), vagy esetleg egy SSH (Secure SHell) szervert telepítünk a telefonra, és PC-ről (LAN-on belül) SSH-n csatlakozunk a telefonunk SSH szerveréhez, ami hozzáférést biztosít a telefonunk shelljéhez is, többek között.

Ekkor az SSHDroid nevű programot kell telepítenünk, ingyenesen elérhető a Play Store-ból: a dropbear nevű SSH és SFTP szerver démont tartalmazza, aminek igen alacsony az erőforrásigénye (az SSH-hoz Wifi szükséges!). Természetesen az ADB és az SSHDroid is lehetővé teszi számunkra, hogy a telefonunk tetszőleges partíciójára (beleértve az SD-kártyát is) fájlokat írjunk PC-ről, illetve azokról fájlokat PC-re másoljunk (az SSHDroid az SFTP és/vagy SCP révén biztosítja ezt). Sőt az SSHDroid esetén egy másik telefonról is másolhatunk oda-vissza fájlokat a készülékünkre/(ről). Figyeljünk arra, hogy mindig van egy "szerver", amin az SSH démon fut, és egy kliens, amin pl. az SSH terminálja fut; persze a szerepek megcserélhetők, ha mindkét készüléken van SSH szerver démon illetve SSH kliens, azaz ügyfélprogram is. Az SSH használata esetén a PC-n kliensnek Windows esetén a PuTTY ajánlott, a legtöbb Linux disztribúció pedig tartalmazza az OpenSSH kliensét.

Az SSH előnye (most fájlkezelésnél SFTP), hogy egyszerűen manipulálhatjuk a telefon összes fájlját PC-n keresztül egy intézőszerű nézetben a WinSCP windowsos SFTP/SCP kliens segítségével. Továbbá SSH-n keresztül akár egy földrajzilag távoli gépről is küldhetünk parancsokat a telefonunkra, természetesen megfelelő beállítások után. Sőt, akár egy földrajzilag távol lévő mobil eszközről (pl. Android okostelefonról) is küldhetünk fájlokat a telefonunkra, persze mindkét irányba is (természetesen a shell (paranccsor) is használható távolról). Az SSH hátránya, hogy kezdők számára nem biztos, hogy jó választás, mivel kicsit több szakértelmet kíván a konfigurálása, mint az ADB-é.

Összefoglalva tehát, ha
- telefonon szeretnénk parancsokat beírni: telepítsük a Terminal Emulatort (ingyenes) (ez a legegyszerűbb megoldás kezdőknek, ugyanakkor a parancsok bevitele lassú a telefon kicsi billentyűzete miatt);

- PC-n szeretnénk parancsokat bevinni és az ADB-t választjuk, telepítsük a szükséges drivereket (Linuxnál a drivereket a kernel már tartalmazza) és adb szoftvert a PC-re, -- és csatlakoztassuk a telefont USB-n (az usb debugging mode legyen aktív a telefonon!), vagy telepítsük az ADB Wireless apk-t (lásd a Play Store-ban), és csatlakozzunk wifin keresztül (természetesen az adb démonjának az utóbbi esetben is futnia kell a PC-n).

- PC-n szeretnénk dolgozni és az SSH-t választjuk, telepítsük az SSHDroid alkalmazást a Play Store-ból, és PC-re a PuTTY-ot töltsük le, vagy Linux alatt virtuális terminálban adjuk ki az

ssh -l root -p port_száma telefon_lan_ip_címe

parancsot (az SSH kizárólag wifin keresztül működik).

A kapcsolat típusa szerint összefoglalva tehát:
- Közvetlenül a telefonon szeretnék dolgozni -> Terminal Emulator (lokális);
- USB-n szeretnék dolgozni -> ADB shell (lokális);
- Wifin szeretném elküldeni a parancsokat a telefonnak -> ADB Wireless (lokális) VAGY SSHDroid (akár távolról is elérhető).

Felhívnám a figyelmet, hogy mindegyik módszer lokális (tehát nálunk kell lenni a telefonnak), kivéve az SSH, ami -- megfelelő konfiguráció (router, tűzfal, portbeállítások stb.) után -- távoli PC-ről (vagy Android telefonról) (természetesen megfelelő autentikációt -- jelszó vagy publikus kulcs azonosítás -- követően) is működik.

Fontos! El kell kerülnünk, hogy a telefon (mély) standby módba lépjen, miközben a parancsértelmezőnek PC-n keresztül küldünk parancsokat. Ugye USB-kapcsolat esetén a telefon általában töltődik, így akkor nem kerül standby-ba. Viszont a wifi esetében a standby-ba kerüléskor megszakadhat a vezeték nélküli kapcsolat, főleg, ha egy ideig azt nem használjuk (energiatakarékosság miatt a driver kikapcsolja a wifi rádiót); ezt megelőzendő csatlakoztassuk a gyári adapterrel az elektromos hálózathoz a telefont! Így egy csapásra két-három legyet ütünk:

1. nem fog megszakadni a wifi a shell használata közben,
2. a wifi által felvett többletenergia rögtön pótlásra kerül, így nem merül a telefonunk.
3. Mivel a töltés az elektromos hálózatról zajlik, az gyorsabb, mint a PC-s töltés, továbbá egyenletesebb is, ami hozzájárulhat az akkumulátorunk élettartamának növeléséhez.

Fontos megjegyezni, hogy a parancsok döntő részének futtatásához rootolt rendszer szükséges (a főzött/custom romok szinte kivétel nélkül ilyenek): ugyanis a legtöbb parancs (program) futtatásához rendszergazdai (root user) jogok szükségesek. A "rootolt" rendszeren bármiféle jelszó megadása nélkül, szabadon hozzáférhetünk az eredetileg zárolt rendszergazdai (root) felhasználói fiókhoz, tehát adminisztrátori jogkörrel tevékenykedhetünk a rendszeren. Tehát bármit megcsinálhatunk (akár kitörölhetünk rendszerfájlokat is, ami megbéníthatja a telefon működését), ezért nagy felelősséggel jár: a stock/gyári romokban nem véletlenül nem férhetünk hozzá alapértelmezés szerint a root jogkörhöz.

Miután elindítottuk a parancsértelmezőt (pl. PC-n adjuk ki a következő parancsot a Windows parancssorban:

adb shell

vagy indítsuk el a Terminal Emulator appot), szinte azonnal megjelenik a prompt, jelezve, hogy a Linux rendszer (pontosabban az ash interaktív rendszerhéj) készen áll a parancsaink fogadására, ami természetesen a telefonon fut. A prompt utolsó karaktere először $ jel. Ez jelzi, hogy normál (nem root) userként vagyunk bejelentkezve (pontosabban az app vagy szolgáltatás, ami a virtuális terminált biztosítja nekünk). A legtöbb parancshoz viszont root-nak kell lennünk, ezért indítsunk el egy újabb (gyermek, child) héjat, amiben már rootként tekint ránk a rendszer: ehhez írjuk be az su (switch user: null, azaz semmi argumentummal rootra vált) parancsot! Ekkor a következő sorban, megjelenik egy # jel (akkor és csak akkor, ha rootolt a készülékünk!): ez a root prompt (a normál user elindított tehát egy újabb parancsértelmezőt a munkamenetében). Ekkor természetesen a Super User program megkérdezi, hogy rendszergazdai jogkörrel tevékenykedhet-e a Terminal Emulator nevű program (az adb root hozzáférése sokszor alapértelmezés szerint engedélyezett, ha nem, általában a Beállítások appban megadhatjuk neki); ezt most engedélyezzük, hiszen ezt mi kezdeményeztük. Kilépni a munkamenetekből a logout vagy exit parancsokkal, vagy Ctrl+D billentyűkombinációval tudunk.


Alapvető parancsok, avagy Bash gyorstalpaló

- pwd (print working directory: az aktuális mappa elérési útjának/útvonalának kiírása),
- ls (list: az aktuális mappa tartalmának rövid listázása),
- ls -l ( = ls --long (POSIX konvenció, beágyazott eszközökön nem mindig támogatott): hosszú, bővített mappalistázás),
- ls -a ( = ls --all (POSIX konvenció): rejtett fájlokat is kilistáz, amelyek neve .-tal kezdődik, ide tartozik az aktuális mappa . és az egy szinttel feljebbi mappa .. jele is).
A parancsok kapcsolói kombinálhatók: ls -l -a = ls -a -l = ls -al = ls -la (a kapcsolók összevonása az egyszerűbb/kisebb shellekben nem mindig lehetséges).

A parancsot és a kapcsoló(ka)t (opció(ka)t) és/vagy argumentumot (a parancs tárgyát) mindig min. egy szóközzel válasszuk el egymástól. Ha a parancs paraméterei nem összefüggőek (tehát van benne szóköz, pl. mivel olyan fájlnév, amiben van szóköz), akkor érdemes az argumentumot ", illetve ' jelek közé rakni. cd (change directory) paranccsal válthatunk mappát: pl. egy szinttel feljebb lépés: cd .. Fontos a parancs és argumentuma közötti szóköz; DOS-ban ez nem volt fontos, nem tökéletes a másolat...

Elemezzük egy kicsit az ls -l parancs kimenetét!

-rw-r--r-- 1 angler angler 0 febr 10 18:53 regularis_fajl

Minden sor egy 10 karakterből álló sorozattal kezdődik. Az első helyen álló "d" betű azt jelenti, hogy könyvtárról (directory) van szó, a - jel pedig (reguláris, egyszerű, szabványos) fájlra utal. (Időnként más is előfordul ott, de az kevésbé lényeges, most azzal nem foglalkozunk.) A következő 3 karakter a tulajdonos (user) engedélyeit kódolja. Az utána következő három a fájl/könyvtár csoportjának (group), az utolsó három pedig mindenki másnak (other) a jogosultságait írja le. A fájl tulajdonosát a harmadik oszlopból olvashatjuk ki, a tulajdonos csoportot pedig a negyedikből. (A csoportoknak a mindennapi életben elég kevés szerepe van, de bizonyos esetekben nagyon praktikusak lehetnek.)

Egy fájl esetén az "r" az olvasásengedélyt (readable), a "w" az írási engedélyt (writable), "x" pedig a végrehajtási engedélyt (executable) jelenti (a Linux rendszerekben tehát nincsenek .exe fájlok (meg kiterjesztések sincsenek, pontosabban nem szükségesek a rendszer számára, ellentétben a Windows-zal), itt ettől az engedélytől függ, hogy futtathatjuk-e az elméletileg végrehajtható típusú fájlt/szkriptet, vagy sem).

Könyvtárak esetén egy kicsit bonyolultabb a helyzet. Itt az "r" azt jelenti, hogy a könyvtár tartalma kilistázható (readable=listázhatóság). A "w" azt, hogy a könyvtárban írási engedényünk van. Míg "x" jelentése most nem az, hogy futtatható (mivel ez az attribútum ilyen formában könyvtárra nem értelmes), hanem az, hogy hozzáférhetünk a könyvtár fájlaihoz (tipp a megjegyzéshez: X-ray, azaz röntgen sugár módjára beleláthatunk a fájlok belsejébe, azaz olvashatjuk őket).
Tehát pl. az r-- engedélynél látjuk a könyvtár tartalmát, ki is tudjuk listázni, de a benne szereplő dologhoz egy ujjal sem nyúlhatunk. Nem is olvashatjuk a fájlokat. A --x engedélynél pedig nem listázhatjuk ki a könyvtár tartalmát, tehát nem nézhetünk bele a könyvtárba, de ha mégis tudjuk, hogy milyen fájl van ott, akkor azt használhatjuk (olvashatjuk, futtathatjuk).
Ha egy könyvtárra nincs írási jogunk, akkor nem tudunk semmit módosítani a könyvtáron belül, még akkor sem, ha pl. egy ottani fájlra lenne írási engedélyünk (hasonlat: hiába van érvényes belépőnk egy múzeumba, mikor az adott országba, ahol a múzeum van nem léphetünk be). Tehát vigyázat, a "w" engedély felülírja a fájlok írhatósági engedélyét. Ez azt is jelenti, hogy ha a könyvtárnak van "w" engedélye, de egy benne levő fájlnak nincs, akkor is lehet törölni (mivel a törlés is írás). A törlés előtt azonban (általában) megkérdez minket a rendszer, hogy biztosak vagyunk-e a szándékunkban.
Az ls -l parancs kimenetében a második oszlopban egy szám áll. Fájloknál ez mindig 1 (definíció szerint), könyvtáraknál pedig annyi, ahány alkönyvtára van a könyvtárnak. Mivel a "." és a ".." szimbólumokat is számolja, ez üres könyvtár esetén is 2. (Ezeket az ls nem listázza ki, mert rejtett könyvtáraknak számítanak, mint minden .-tal kezdődő könyvtár. Hasonlóan, a .-tal kezdődő fájlok a rejtett fájlok. A -a (--all, minden) opcióval (kapcsolóval) ezeket is láthatjuk). Itt már érezhetjük, hogy semmi lényegi külsönbség nincs a fájlok és könyvtárak között, mivel a könyvtárak (és még sok minden más) speciális fájlok, de a lényeg, hogy fájlok.
Az 5. oszlopban a fájl mérete szerepel. Könyvtárak esetén általában egy konstans számot kapunk, nem azt, hogy mekkora a könyvtár tartalma (szerk.: a könyvtáraknál ez a logikai blokkmérettől és az alkönyvtárak számától is függ, létezik maximális érték). Utána a fájl(/könyvtár) utolsó módosításának dátuma szerepel.

Másolni a cp (copy) paranccsal, áthelyezni/átnevezni mv (move) paranccsal (argumentumaik (2 db): 1.: mit, 2.: hova), törölni rm (remove) paranccsal tudunk fájlokat. A fájlok (a parancsok argumentumában/argumentumaiban) hivatkozhatók abszolút vagy relatív elérési úttal. Az abszolút elérési út mindig a kályhától, a fájlrendszer gyökerétől, azaz a /-től indul. Figyelem! Itt nincs backslash (csak a Microsoftnál)! A relatív pedig az adott munkakönyvtártól indul (pl. a két szinttel fentebbi mappa relatív elérési útja: "../.." (DOS-ban erre volt "..." is...). Üres könyvtár létrehozható, illetve törölhető rendre az mkdir illetve az rmdir parancsokkal. A törlés Linux rendszereken végleges! Tényleg!

Az echo paranccsal a standard outputra (általában a kijelző, stdout) írhatunk ki szöveget. Ha a kimenetet átirányítjuk (> operátor, ami egy parancs), akkor szöveges fájlt hozhatunk létre a munkakönyvtárunkban. Pl. echo 'Hello World!' > proba. Szöveges fájl végéhez hozzáfűzhető szöveg a >> operátorral. Szöveges (ASCII) fájlok tartalma megtekinthető a cat (concatenate, konkatenáció szép magyar szóval) paranccsal (is). Egyszerű szöveg szerkesztésére használható a vi vagy a nano szerkesztő program. A nano-t nem minden rom tartalmazza (figyelem: a futtatásához megfelelő kernel szükséges a szükséges függvénykönyvtárak miatt!).
Figyelem! A Linux rendszerek megkülönböztetik a kis- és nagybetűket (case-sensitive)!

A szabad memória (RAM) kapacitás megtekinthető a free paranccsal. A szabad háttértár kapacitás (ROM + SD-kártya) megtekinthető a df paranccsal (partíciókra lebontva). A legfontosabb partíciók a bootloader, system, userdata, cache (kevésbé fontosak: persist, misc, splash). A mount paranccsal megtekinthetők a fájlrendszerünkhöz különböző csatolási pontokban mountolt (felcsatolt) partíciók (köztük az SD-kártya is).


Kis kitérő a partíciókról, avagy mi hol van

- a bootloader partíció tartalmazza a feltelepített rom zip fájljában, a gyökérben található boot.img fájl tartalmát (kernel+ramdiszk);
- a system partíció tartalmazza a feltelepített rom zipjében található system mappa teljes tartalmát (csatolási pont: /system).
- a userdata partíció alapértelmezés szerint általában üres, a rendszer berendezi magának: a felhasználói adatok (apk, stb) kerülnek ide (csatolási pont: /data).
- a cache partíció átmeneti információkat tárol (a futtatott programok írhatják elsősorban).
- a splash partíció tartalmazza az indításkor, a kernel bootja előtt/közben megjelenő bitképet, amely mérete jól definiált (nem tévesztendő össze a /system/media/bootanimation.zip opcionális bootanimációval, amely később jelenik meg, és animált általában!).
- ezeken túl van számos virtuális rendszerpartíció (pl. dev, root, persist stb), sőt alkalmazások is létrehozhatnak maguknak pl. az SD-kártyán.

Partíció leválasztható (pl. eltávolításhoz, hibaellenőrzéshez) a fájlrendszerről az umount paranccsal (nem elírás). A rendszerpartíciók általában csak olvashatóként (r/o, read/only) vannak mountolva. Tartalmuk módosításához szükséges az újramountolásuk írhatóként (r/w, read/write):

mount -o remount,rw /dev/block/mtdblock5 /system

VAGY adb remount a PC-n. A megfelelő módosítások után mountoljuk r/o-ként a partíciót, tehát:

mount -o remount,ro /dev/block/mtdblock5 /system

VAGY adb remount a PC-n, feltéve, ha az 5. mtdblock eszköz tartalmazza (mount-tal ellenőrizhetjük) a rendszerpartíciót (system). Figyelem! A rendszermappák tartalmának módosítása könnyedén használhatatlan rendszerhez, illetve adatvesztéshez vezethet! A fentebb tárgyalt parancsok futtatása (a fájlműveletek gyakorlása/tesztfájlok létrehozása előtt érdemes az alapértelmezett "/" (gyökér) munkakönyvtárból az SD-kártyára lépni (ehhez parancs: cd /mnt/sdcard vagy cd /sdcard (az utóbbi szimbolikus link az előzőre)). Ha pendriveként csatlakoztatva van a telefon PC-hez, akkor a telefon fájlrendszerén keresztül az SD-kártyához nem férhetünk hozzá (mivel ekkor át van adva kizárólagosan a PC fájlrendszerének, egyszerre csak egy eszköz használhatja).

Megjegyzés: ha telefonunkat USB-n csatlakoztatjuk PC-hez, akkor alapértelmezés szerint (ha a tárolás/storage módot kiválasztjuk) a telefon fájlrendszeréről lecsatolódik automatikusan az SD-kártya, majd a PC operációs rendszere azt automatikusan felcsatolja a saját fájlrendszeréhez. Ezután PC-ről szabványos USB Mass Storage interfészen keresztül látjuk az SD-kártyát. Fontos, ha befejeztük a munkát, akkor mindig leválasszuk (Hardver biztonságos eltávolítása.../umount+sync/eject) a PC operációs rendszerében az SD-kártyához társított meghajtót. Ha ezt elmulasztjuk, akkor könnyedén írási/olvasási problémákkal, sőt ezen keresztül hibás rom frissítéssel találkozhatunk! A biztonságos eltávolítás azért fontos, mivel a rendszer írási gyorsítótárakat használ az általános rendszerteljesítmény (válaszidők) optimalizálásához: azaz, nem íródnak rögtön a fizikai lemezre a módosítások: előfordulhat, hogy az SD-kártyára ténylegesen sok adat az eltávolítási engedélyt megelőző néhány másodpercben kerül (disk flush)!


További hasznos parancsok

- uptime (az utolsó indítás óta eltelt idő + rendszer erőforrás/rendelkezésre állási adatok. figyelem: a telefonos (arm-es) terheltségi (load) adatok közvetelenül nem összehasonlíthatók az x86-os architektúra hasonló adataival),
- ping (szerver pingelése, ICMP echo diagnosztikai speciális csomagok küldése),
- wget (fájl(ok) letöltése szerverről),
- chmod (jogosultságok módosítása, pl. tegyük kizárólag a tulajdonos számára futtathatóvá (executable) a "teszt" nevű állományt: chmod u+x teszt),
- traceroute (útvonalkövetés egy szerverhez ICMP csomagok segítségével),
- cal (naptár, pl. cal -y 2013),
- date (dátum, idő megjelenítése),
- uname -a (Linux kernel verzió (build dátum stb), architektúra megjelenítése),
- du (disk usage, fájlok lemezen elfoglalt helyének megtekintése),
- reboot (újraindítás),
- reboot recovery (újraindítás recovery üzemmódban)
- reboot bootloader (újraindítás bootloader üzemmódban),
- ether-wake (magic packet küldése távoli PC felébresztéséhez),
- whoami (melyik felhasználóként vagyunk bejelentkezve),
- diff <1._fájl> <2._fájl> (2 fájl tartalmának összehasonlítása),
- touch (üres fájl létrehozása adott névvel, illetve már létező fájl argumentum esetén az utolsó módosításnak a jelenlegi dátum/időre állítása),
- chown (change owner, fájl tulajdonosának megváltoztatása),
- top (az éppen futó processzek (folyamatok) megjelenítése, valós időben frissül, kilépés q billentyűvel),
- wc (szöveges fájl sorainak, szavainak, karaktereinek megszámolása),
- dmesg, logcat (diagnosztikai információk megjelenítése; fájlba kiírhatjuk: pl. dmesg > ; kereshetünk benne: dmesg | grep , ahol a "|" karakter egy virtuális csővezeték (tee): a dmesg kimenete azon keresztül átfolyik a grep bemenetébe),
- ash, sh, esetleg bash (újabb shell indítása a jelenlegi shellen belül),
- find (fájl keresése),
- grep (a parancsnak irányított szövegben szó keresése),
- ssh -l -p (ha telepítve van a dropbear ssh és sftp szerver és kliens, továbbá szerepel az ssh binárisra (a /data partíción van) mutató szimbolikus link valamelyik, a PATH nevű környezeti változóban szereplő könyvtárban. Lásd:

echo $PATH

akkor ssh kapcsolat kezdeményezése egy ssh szerverrel,
- tty (az aktuálisan aktív termináleszköz (teletype) nevének megjelenítése),
- reset (a kijelző letakarítása, alaphelyzetbe állítása),
- sort (adatok rendezése különböző szempontok szerint),
- head / tail (szöveges fájl elejének / végének megjelenítése),
- ln -s (szimbolikus link (~parancsikon) létrehozása egy fájlhoz)
- zip, unzip, gzip, gunzip (fájlok tömörítése, archívum kicsomagolása)
- flash_image (lemezképfájl (img fájl) kiírása partícióra pl. boot, recovery; használatával PC kapcsolat nélkül (tehát driverek nélkül, USB-kábel nélkül) flashelhető recovery a telefonra; pl.

flash_image recovery /sdcard/recovery.img

parancs az SD-kártya gyökerében lévő recovery.img-vel felülírja a recovery partíció jelenlegi tartalmát)
- md5sum, sha1sum az argumentumként megadott fájlok MD5-, illetve SHA1-ellenőrzőösszegének (hash)kiszámítása
- dd alacsonyszintű, közvetlenül a kernel által vezényelt írás/olvasás, pl.

dd -bs=4M if=forrás of=cél

- kill a megadott azonosítószámú folyamat (Process IDentifier, PID) "kilövése" a memóriából, -9 opcióval feltétel nélküli leállítás
- lsmod a betöltött kernelmodulok (kernel object, .ko fájlok) listázása
- insmod/modprobe kernelmodul betöltése a kernelbe
- rmmod kernelmodul eltávolítása a memóriából (a kernelből)
- history a korábban beírt parancsok (általában a legutolsó 500, a FEL/LE billentyűkkel is lépkedhetünk közöttük)

Figyelem! A legtöbb parancs számos kapcsolóval rendelkezik, azokkal a parancsok működése finomhangolható. Itt -- hely hiányában -- a legtöbb parancsnál nem szerepelnek a kapcsolóik! Nagyon sok információt megtudhatunk a parancsokról a man program segítségével (man ). A man általában beágyazott eszközökön nem található meg érthető okok miatt, ezért PC-hez forduljunk a használatához.

Jelenleg közel 50 parancs szerepel ezen leírásban (ne feldjük, hogy a többségük paraméterezhető, lásd a man lapjaikat): láthatjuk, hogy a parancsértelmező révén sok, változatos, sokszor érdekes műveletet végrehajthatunk, gyakran igen elegánsan. Természetesen a parancsok listájának közel sincs itt vége, igyekszem bővíteni azokat (az Android specifikus parancsokra fókuszálva).

Mivel néhány parancs nem megfelelő használata révén használhatatlanná tehetjük a rendszerünket (a csodazippel ZTE Blade-nél azért szinte mindig visszaállítható a gyári állapot), illetve személyes adataink elveszhetnek, ezért kénytelen vagyok közzétenni a következő üzenetet:
FIGYELEM! AZ ESETLEGES ADATVESZTÉS VAGY A TELEFONBAN KELETKEZŐ KÁROKÉRT SEMMILYEN FELELŐSSÉGET NEM VÁLLALOK!

MINDENKI CSAK SAJÁT FELELŐSSÉGÉRE FUTTASSA A PARANCSOKAT, ILLETVE, HA BIZONYTALAN EGYES PARANCSOK HATÁSAIT ILLETŐEN, MINDIG NÉZZEN UTÁNA, VAGY KÉRDEZZEN ITT (HOZZÁSZÓLÁSBAN), MIELŐTT FUTTATNÁ!
Kattints ide  ➜

Az Androbit technológiai és tudományos magazinnál hiszünk abban, hogy az információ mindenkit megillet. Hosszú évek munkájával megszerzett hírnevünknek köszönhetően megadatott számunkra az a lehetőség, hogy műszaki témájú médiumként is elérhessünk minden internetező korosztályt. Tesszük ezt olyan hírekkel és cikkekkel, amik között egyaránt szerepel nagyobb tömegeket és kisebb szakmai csoportokat érintő tartalom is.

A témák gondos összeválogatásának és a cikkek minőségi kidolgozottságának hála mára Magyarország egyik legnépszerűbb technológiai és tudományos információforrásává váltunk – fejlesztéseinkkel és kutatásainkkal pedig igyekszünk mindig egy lépéssel a versenytársak előtt járni.

A weboldalunkon található, szerkesztőségünk által készített tartalmakra vonatkozó összes felhasználási jogot az Androbit technológiai és tudományos magazin birtokolja. A tartalmak egyes részleteinek felhasználását kizárólag látványos (vagy jól hallható) forrásmegjelöléssel engedélyezzük. A feltételek megszegésének jogi következményei lehetnek. A feltételektől eltérő tartalomfelhasználás kizárólag megegyezés útján lehetséges.
Copyright © 2007-2016 – Makay József (makay@androbit.net)
Sokat fejlődik az új frissítéssel a Google Duo
Régóta várt funkciók debütálnak az új Instagramban
2016 legjobb okostelefonjai ‑ Sebességteszt
Itt az új Pókember film első előzetese
Amazon Go ‑ Csak kisétálsz a boltból, fizetés nélkül
A dohányzás sejtmutációs hatásai
Felkapott témák
Az egyik legnépszerűbb antivírus egyben a legrosszabb is
Ezek a jelenleg kapható legerősebb okostelefonok
2016 legjobb okostelefonjai - Sebességteszt
Sokan fognak kiakadni a Samsung Galaxy S8-ra
Android 1.0 Apple Pie vs. Android 7.1 Nougat
Melyik lesz 2017 legjobb okostelefonja?
Állásajánlatok
Tesztmérnök TESK-6207-15
German Speaking Project Coordinator Telekom IT TSI Budapest
Business System Analyst Szeged
Gépészmérnök csoportvezető HF 11-7927
Ügyfélszolgálati és marketing koordinátor
Dutch speaking Creative Copywriter - VOC0001PX
Scala Developer