Android: init.d „emuliacija“

Posted: 2015-01-06 in Darbeliai
Žymos:,

init.d | Android | Darau, blėNa va, truputuką papasakosiu daugiau, kaip savo Minix Neo X8-H medijos centrą tiuninau. Prasidėjo reikalas nuo to, kad ten įdiegiau SSH prieigą, bet apie tai bus kitą kartą. O dabar pradėkim nuo pradžių: reikia kažkaip pasidaryti, kad kraudamasis Android įrenginys paleistų kažką „ant startupo“. Tą patį SSH serverį, prijungtų nestandartinius diskus, paleistų torrentų serverį ir taip toliau, ir panašiai.

Beje, iš karto perspėju: kad galėtumėte daryti tai, kas toliau aprašyta, būtinos root teisės.

Linux gyvenime iki systemd iškrypimo gyvavo (ir kažkiek dar tebegyvuoja) SysV įkrovos mechanizmas. Viena iš jo dalių eina į /etc/init.d katalogą ir visus ten rastus skriptus įvykdo tam tikra tvarka. Skriptai paprastai būna pavadinti 01blahaha, 02blaha, 13organasraibas ir taip toliau. Pagal tą pirmą skaičiuką jie ir vykdomi atitinkama eilės tvarka.

Nepamirškime, kad Android — tai ne Linux, nors Linux branduolys ir naudojamas. Tad ir daugybės dalykų, kurie yra Linux, Android nėra. Kad ir įkrovos skriptų paleidimo. Įvairios „šalutinės“ Android distribucijos kartais turi init.d palaikymą savaime (kaip kad koks CyanogenMod), kitoms yra aprašymai kaip kažką panašaus pasidaryti patiems. Minix sistema tokio dalyko neturi, tad aš jį paėmiau ir pasidariau pats.

Pirmiausia, kad galėtumėm paleisti kažką įrenginio įkrovos metu, reikia savo Android distribucijoje susirasti kokį nors skriptą, kuris būtų tuo metu paleidžiamas. Praktiškai visos distribucijos kažką panašaus turi, reikia tik atkapstyti pagal Android versiją ir (galimai) konkretų įrenginį. Minix atveju toks skriptas yra /system/etc/install-recovery.sh. Kitoms Android versiojoms ir įrenginiams atitinkamo skripto ieškokite patys, tikrai rasite.

Taigi dabar jau laikas nerti į Android terminalą. Nesvarbu, koks jis bus: ar Terminal Emulator programėlė, ar SSH prieiga, ar tiesiogiai ADB shell. Svarbu, kad galėtumėte su root teisėmis rinkti komandas.

Kad galėtume sukurti /system/etc/init.d katalogą, /system skirsnį reikia prijungti kaip skaitomą/rašomą. Paprastai jis būna tik su skaitymo prieigomis. Tad pirmiausia, be abejo, vykdom komandą:

mount -o rw,remount /system

O tada sukuriam katalogą init.d:

mkdir /system/etc/init.d

Kaip minėjau, Minix atveju yra vienas skriptas, vykdomas įkrovos metu, jį dabar ir redaguojame bei gale įrašom va tokią eilutę:

/system/xbin/busybox run-parts /system/etc/init.d

Va ir viskas. Dabar jau galite krauti skriptus į /system/etc/init.d katalogą ir jie įrenginio įkrovos metu bus vykdomi. Tik nepamirškite, kad šiems skriptams galioja tam tikros pavadinimų sudarymo taisyklės:

  • Pavadinimas turi prasidėti dviženkliu skaičiumi. Jei tai 1, 2 ir t.t., priekyje būtina įrašyti nulį. Tiesa, čia ne privaloma taisyklė, bet taip paprasčiau susigaudyti eilės tvarkoje.
  • Leidžiami ženklai po dviženklio skaičiaus: lotyniškos mažosios raidės, skaitmenys, pabraukimo ženklas ir minusas. Taškas gali būti leidžiamas, o gali būti ir ne, priklauso nuo runparts komandos versijos.

Pavyzdžiui, kelių mano skriptų vardai yra tokie:

01mount-mydija
02dropbear
03transmission
04samba

Tai va tiek.

Parašykite komentarą

Įveskite savo duomenis žemiau arba prisijunkite per socialinį tinklą:

WordPress.com Logo

Jūs komentuojate naudodamiesi savo WordPress.com paskyra. Atsijungti /  Pakeisti )

Google photo

Jūs komentuojate naudodamiesi savo Google paskyra. Atsijungti /  Pakeisti )

Twitter picture

Jūs komentuojate naudodamiesi savo Twitter paskyra. Atsijungti /  Pakeisti )

Facebook photo

Jūs komentuojate naudodamiesi savo Facebook paskyra. Atsijungti /  Pakeisti )

Connecting to %s

Brukalų kiekiui sumažinti šis tinklalapis naudoja Akismet. Sužinokite, kaip apdorojami Jūsų komentarų duomenys.