Kar nekajkrat se mi je že zgodilo, da se je OpenELEC med nadgradnjo sistema sesul iz neznanega razloga. Prvič sploh nisem vedel zakaj gre in sem namesto iskanja neke uporabne rešitve, celoten sistem le prepisal, saj se mi je zdelo, da drugega kot to enostavno ne morem narediti. Naslednjič se mi je to zgodilo ravno takrat, ko sem imel popolnoma skonfiguriran sistem, s posodobljenimi medijskimi knjižnicami, varnostne kopije pa se nisem spravil delati. Tako mi ni preostalo nič drugega, kot da sam poiščem rešitev za tovrstne težave, pred tem pa odkrijem krivca, ki povzroča nevšečnosti, saj konfiguriranje sistema in posodabljanje knjižnic lahko traja kar nekaj časa. Celotna zgodba se vleče še od takrat, ko OpenELEC za Raspberry Pi ni imel prenovljenega programa z nastavitvami in je bilo potrebno sistem posodabljati še preko Sambe, sedaj pa se še vedno kljub avtomatizirani nadgradnji preko sistema, rado zgodi, da se le-ta med posodabljanjem obesi. To je tudi razlog, da sem se odločil spisati kratek vodič in opisati, kar mi je uspelo najti pri popravljanju operacijskega sistema OpenELEC.
Težava, ki jo opisujem se mi je vedno zgodila med nadgradnjo OpenELEC sistema na novejšo različico. Nadgradnja se je vedno pričela izvajati do posodobitve jedra sistema, nekajkrat pa še do samega sistema, v obeh primerih pa je bilo sporočilo o posodabljanju prisotno nekje okoli 10 do 20 minut. Kasneje je bila možnost, da je logotip OpenELEC in opis postopka nadgradnje izginil in vse kar je bilo videti, je bilo črno ozadje. Sistem se sam od sebe ni nikoli ponovno zagnal, zato sem moral vse skupaj izklopiti tako, da sem izklopil napajalnik in ga čez nekaj časa vklopil. Po vklopu le-tega pa me je pričakalo naslednje sporočilo:
*** Error in prepare_sysroot: mount_common: Could not mount /flash/SYSTEM ***
### Starting debugging shell… type exit to quit ###
sh: can’t access tty; job control turned off
Tako je bilo takoj lažje slutiti kje je težava, saj mi je sistem sporočil, da ne more zagnati datoteke, ki je ena izmed najbolj pomembnih za zagon sistema. Celoten postopek popravljanja, ki je opisan spodaj, sem izvajal na operacijskem sistemu Ubuntu 13.04, s pomočjo bralnika SD kartic. V kolikor boste preko mojega postopka popravljali sistem, za kakršnekoli nastale težave ne odgovarjam. Če je postopek pravilno izveden, se iz SD kartice ne izbrišejo nobeni podatki, tudi informacije o knjižnicah ostanejo takšne kot pred posodobitvijo – v primeru, da sama nadgradnja ni poškodovala omenjenih datotek.
1. Najprej je potrebno prenesti arhiv OpenELEC in sicer tisto različico na katero ste nadgrajevali. Če je to namesto vas delal sam sistem, potem bo različica najbrž kar tista, ki je najnovejša. Odpravimo se na uradno stran pod prenose za Raspberry Pi in prenesemo ustrezno različico. Ko se paket prenese, ga na poljubno mesto razpakiramo.
2. Odpremo ukazno lupino oziroma terminal in se postavimo v mapo, ki smo jo prej razpakirali ter poženemo naslednja dva ukaza.
$ md5sum target/KERNEL $ md5sum target/SYSTEM
S tem smo pridobili md5 vrednosti obeh datotek, kateri pa bomo morali primerjati z drugima dvema datotekama, ki sta prav tako v mapi target. Ti datoteki se imenujeta KERNEL.md5 in SYSTEM.md5, vsebujeta pa md5 vrednost, ki mora biti popolnoma enaka tisti, ki smo jo dobili z zagonom prejšnjih dveh ukazov. Če se vrednosti ujemata najlažje preverimo tako, da preberemo obe datoteki.
$ cat target/KERNEL.md5 $ cat target/SYSTEM.md5
V kolikor ste dobili ujemajoče vrednosti lahko nadaljujete na naslednji korak, sicer pa še enkrat prenesite paket iz uradne strani, saj je po vsej verjetnosti pokvarjen in datoteke, ki jih potrebujemo ne bodo delovale pravilno.
3. Preden v bralnik SD kartic vstavimo SD kartico na kateri je OpenELEC nameščen, seveda pravilno izklopimo Raspberry Pi, da ne bi prišlo do poškodb. Nato iz reže vzamemo SD kartico in jo vstavimo v bralnik. Priklopita se nam dve particije, Storage in System. Tokrat bomo delali samo s particijo imenovano System, saj se nam je po vsej verjetnosti nekaj zalomilo tu, vsaj glede na sporočilo, ki nas je ob začetku pričakalo ob vklopu.
4. Odpremo particijo System in pogledamo kaj je šlo narobe. To bomo ugotovili s pogledom na velikost datotek kernel.img in SYSTEM, ki sta v primeru posodobitve tudi ključni datoteki. Po ogledu velikosti obeh datotek, odpremo brskalnik datotek in map ter se postavimo v mapo, ki smo jo razpakiral ter nato v njeno podmapo target. Vidimo, da so tukaj datoteke, s katerimi smo delali v drugem koraku, se pa ime ene izmed datotek razlikuje od tistih, ki jih imamo na particiji System, SD kartice sistema. Tudi v tej mapi preverimo velikost datotek KERNEL in SYSTEM ter ju primerjamo s tistimi od prej. Ugotovili smo, da se velikosti ene izmed datotek razlikujeta, prav pri tisti datoteki pa se nam je ustavila tudi nadgradnja sistema. Čaka nas le še najenostavnejši del celotnega postopka, ki bo tudi popravil OpenELEC, da bo ponovno deloval.
V mojem primeru se je nadgradnja sistema zaustavila pri posodabljanju sistema samega, zato je bila tudi velikost datotek SYSTEM iz paketa različna tisti na SD kartici.
5. Kot sem že omenil se ime ene izmed datotek na particiji System razlikuje od tiste v podmapi target, vendar to ni noben problem. Na particiji System najdemo datoteko z imenom kernel.img, v podmapi target pa datoteko z imenom KERNEL. Gre za povsem enaki datoteki (če se je posodobitev zalomila že pri jedru, potem je možnost, da je velikost datoteke kernel.img manjša od datoteke KERNEL iz podmape target), ki pa imata le različno ime. V kolikor boste razpakiran paket OpenELEC še potrebovali, potem datoteko KERNEL prekopirajte izven paketa, najbolje na namizje, da ne bomo spreminjali vsebine mape. Sedaj datoteko KERNEL preimenujemo v kernel.img in izbrišemo datoteki kernel.img ter SYSTEM iz particije System na SD kartici. To smo storili zaradi tega, ker v primeru kopiranja obeh datotek iz lokalnega diska zmanjka prostora na particiji System, ker je njena velikost le okoli 131 MB. Sedaj lahko kernel.img in SYSTEM iz podmape target (oziroma kernel.img iz druge lokacije, če ste ga prej skopirali drugam) skopiramo na particijo System ter počakamo, da se kopiranje konča.
6. Particiji Storage in System pravilno odklopimo iz sistema ter pravilno odklopimo tudi SD kartico. Sedaj SD kartico vzamemo iz bralnika in jo vtaknemo v režo na Raspberry Piju, nato pa vse skupaj priklopimo in ga prižgemo.
7. OpenELEC bi se sedaj moral brez težav zagnati in delovati, povrhu pa imamo še posodobljeno različico.
Želim vam veselo uporabo sistema OpenELEC še naprej!
Pingback: Pregled leta 2013 | jodlajodla´s blog