Mai értekezésünk tárgya: miként viszonyulnak az iOS és az Android mobil operációs rendszerek ahhoz a rendszerhez, amire épülnek, a Unix operációsrendszer-családhoz. Spoiler: megcsúfolják a filozófiáját, plusz kis mozdulattal nagy károkat csinálnak.
Nincs filesystem
A minap egy meetingre készültem, pár képet vadásztam le az internetekről, rá is másoltam a telefonomra, hogy azon majd jól megmutatom őket. Rátévedt a tekintetem az asztalomon heverő céges 10"-os The New iPad-ra, gondoltam, mivel nagyobb, jobb lenne azon mutogatni a képeket, nosza, másoljuk fel arra inkább. Rádugtam a gépemre USB-vel az iPad-et, megjelent a file managerben, és itt ugrottam egy csukaseggest a szopórollerre. Röviden: nem sikerült. Pár éve vettem 5 dollárért egy MP3 övre csiptethető lejátszót, arra úgy lehetett file-okat másolni, hogy rádugtam a számítógépre, ekkor megjelent a könyvtára, tolhattam fel a zenéket. Nos, ezt a legújabb iPad nem tudja. A twitteres közösségtől kaptam pár tippet, az egészen rosszindulatúaktól (installjak iTunest), az egészen használhatókig (Dropbox), plusz valaki meg is magyarázta:
Azért nem tudsz ilyet csinálni, mert az iOS-en nincs filesystem.
Elárulom: csak filesystem van. A Unix (alapú, mintájú) rendszerek egyik legszembetűnőbb jellemzője, hogy minden a filesystemben jelenik meg a soros porttól a hálózati meghajtóig, de még a memória is be van mappolva file-ként, konvenciók (eszköz: /dev, hálózati drive: /mnt, cserélhető drive: /media stb.) vagy praktikum szerinti (hálózati drive-on tárolt személyes könyvtárak: /home) path-on.
Jó, értem én, azt akarta mondani a költő, hogy nem elérhető a filesystem. Pedig az nem lenne rossz, ha jól tudom, az iOS power userek a mai napig szenvednek ettől, az eszközre rátöltött file-t nem láthatja, csak egy app, ráadásul a feltöltéshez iTunes kell, ami, hm, az Apple leginkább vitatott eleganciájú terméke.
Pedig a power usereken kívül szinte mindenki, talán még azok is többé-kevésbé tisztában vannak a filesystem mibenlétével, és el tudnak navigálni a könyvtárak és file-ok hierarchiájában, akik a "küldd el ezt a képet" feladatot úgy oldják meg, hogy nyomntak egy screenshot-ot, amit beillesztenek egy docx-be, és ezt csatolják az Outlookkal írt subject nélküli emailhez.
Na, mindegy ha el nem is tudom fogadni, de értem én, az iOS nem ad arra lehetőséget, hogy a felhasználó szabadon garázdálkodjon a filesystem akár csak egy erre kijelölt részén, különben is, nincs rá szüksége, mert mindenre van app, és amúgy meg én tartom rosszul.
Android: a valaha létezett legrosszabb Linux disztró
Egy működő Linuxhoz kell egy boot megoldás (régebben volt a lilo, majd grub és grub2), maga a kernel, aztán az startup rendszer, ami elindítja a szükséges programokat (init, systemd), shell és utility-k, képernyőkezelő (X11), és végül desktop environment, ami magában foglalja a desktop managert, filekezelőt, launch panelt, efféléket. Ezeket nem kell kézzel összeraknunk, léteznek előre legyártott disztrók, amik CD-ről pár kérdés után felmennek a gépre, interneten keresztül érkeznek a karbantartások, és gombnyomásra lehet telepíteni a központi gyűjteményből szövegszerkesztőt, játékot, webservert.
Az egyes disztrók közti legnagyobb különbség a kernelben lehet, pl. precíz ütemezésekhez speciális RT kernel kell, vagy egy kizárólag server rendszerekhez szánt kernelből ki lehet dobálni a grafikus drivereket.
Az Android egy sajátságos disztró, a boot, a kernel és a start mechanizmus kiadnak egy eléggé csupasz Linux rendszert, amire ráépül a Google saját grafikus rendszere, futtatókörnyezete és app-formátuma. Ami miatt egy Android nemigen használható még server Linuxként sem, az a shell és az utility-k hiánya, ha bejelentkezünk egy Android konzolra, nemigen tudunk mit kezdeni a jól megszokott környezet nélkül. Majdnem elfelejtettem: és root, azaz rendszergazdai jogosultságok nélkül.
Sajnos, van más is, ami egyébként egy rendes Linux disztróban nem probléma, de Androidon igen.
Van otthon egy Raspberry PI-m, amire rá van dugva egy 2 TByte-os külső hard disk, fotók, filmek, zenék, miegymás van rajta. Ez az asztali számítógépen automatikusan, a netbookomon kézzel bemountolódik, azaz a /media/storage könyvtárban megjelenik a tartalma, onnan bármilyen program használhatja, akár egyszerre több gépről is. A hard disket samba protokollal osztottam meg (pontosabban azzal is), ami más néven Windows Share, ezt gyakorlatilag minden operációs rendszer ismeri.
Kivéve az Androidot. Bár az összes androidos filekezelő app ismeri a SMB protokollt, és tud csatlakozni, másolni oda s vissza, de ez a legtöbb, amit megtehetnek. Ahhoz, hogy bemountoljam egy könyvtárba a megosztást, hiányzik a cifs.ko kernel modul, és - legalább is az én androidos eszközeimhez - lehetetlen beszerezni. Ha lenne ilyen modulom, bármely androidos app látná a fotókat, PDF-eket, mindent, a megnézni kívánt filmet nem kéne letölteni a tabletre, hanem hálózaton kereszül azonnal lejátszhatnám. (Videókhoz van workaround, a Network Places app a kiválaszott remote file-t bépített SMB kliensével olvassa, közben kistreameli localhostra, és el is indítja a streamre a defaiult playert.)
Egyébiránt nem ragaszkodom a samba protokollhoz: mivel a serverem egy Linux, sokféle file sharing közül választhatnék, de hogy egyik szavamat a másikba ne öltsem, az Android semmiféle hálózati megosztást nem támogat. Érthetetlen, hogy az a rendszer, amely állandóan az interneten csüng, várja a leveleket, Facebook-státuszfrissítéseket, IP-telefonhívásokat stb., nem tud csatlakozni semmiféle helyi hálózatra.
Azt gondoltam, ennél jobban nem lehet használhatatlanná egy Linuxot, de tévedtem.
Már írtam az alapproblémáról, és bár azóta történtek fejlemények (nem lett jobb), most csak röviden: ahhoz, hogy a telepített app-ok minden porcikája az SD kártyára kerülhessen, külön app kell, én már régóta a Link2SD-t használom.
Ennek az appnak kell egy saját partíció az SD kártyán, amit meg is csináltam, FAT32-re formáztam. No, ezt rosszul tettem, mert ahhoz, hogy tényleg minden az SD kártyára kerülhessen, a Linux jogosultsági rendszer használatához ezt a partíciót valamilyen, a Linux rendszereken használt filesystemre kell formázni, a doksija az ext2/ext3/ezt4/f2fs valamelyikét ajánlja.
Ki is másoltam mindent róla, leformáztam ext2-re (ez a legrégebbi igazán elterjedt Linux filesystem-formátum), majd vissza mindent rá: nem látszik. Na, mondom, akkor biztos nincs már ext2 támogatás, legyen ext3, ez a legelterjedtebb, formázás, másolás, nem látszik. Szomorú voltam, visszaformáztam FAT32-re, az legalább látszott.
Még aznap bogarásztam valami után, és egy mélyen eldugott könyvtárban egy file-ra akadtam, amelynek a nevében sok "sys" meg "x" között benne volt az is, hogy ext4. Szagot kaptam, leformáztam az SD kártya partícióját ext4-re, és láss csodát, megjelent a tartalma. Az, hogy egy Linux rendszer nem ismer fel egy ext3 partíciót, ezennel bekerült a karón levő varjú és az éjjeliőr nappali elhalálálozása közé, azaz a ritka, de a különösen tapasztalt személyek által már látott jelenségek sorába.