Vánoce s Jablkem, aneb co dovede T-Mobile Dongle

Tak včerejší odpoledne a noc jsme s kamarádem Kaajem strávili online přes půl našeho kraje s nápravou věcí nedobrých na macbooku.
Jak se to stalo.

Vánoce s ApplemKaaj odjel na vánoce k rodičům jako čerstvý switcher, on i jeho manželka si vezli nové MBP po párdenním zaškolení v teple domova. V šumavském městečku u rodičů není žádné wifi, žádný ethernet ani nic jiného k připojení k Síti, kterou kaaj pro práci potřebuje a z časů PC si s sebou vzali T-Mobile USB Stick MF626, který hrdě hlásá, že ovládací SW pro Mac OS X má v ovládací paměti, žel jen pro Leoparda.

Čerstvý switcher měl radost, instalace proběhla v pořádku, internet začal pěkně chodit, ale co to, po chvilce zjistil, že nefunguje spuštění terminálu. Nefunguje spuštění žádného nového programu. Tak jak již byl zvyknutý z jiného OS, provedl restart. Restart však neproběhl nový macbook pro prostě nenaběhl, geeci tomu říkají že byl bricknutý (angl. brick=cihla, tedy z pěkného HW akorát tak těžítko). Tož provedl instalaci na manželčine druhém macbooku pro, nerestartoval a v tom velmi nerovnovážném stavu, kdy jakákoli nepřeloženost mohla znamenat další brick začal googlit a vygooglil několik stránek upozorňujících na to, že SW tohoto konrétního USB sticku přepíše systémovou dynamickou knihovnu (obdoba DLLka z win) libcurl.4.dylib její 32bitovou upravenou verzí od T-mobile. Avšak snow leopard vyžaduje 64bitovou verzi této knihovny. Tímto přepsáním systémové knihovny se tedy i všechny programy, které tuto knihovnu pro svůj běh potřebují, úplně vyřadí z činnosti – včetně terminálu, diskových utilit atp. Více o problému zde a nebo zde.

Co v takovém případě dělat? Macky vládnou tzv. target módem, kdy se z vašeho HW stane externí firewire disk pro nějaký jiný počítač. Kritickou knihovnu pak stačí prostě přepsat novou, lepší verzí ( tu stáhnete třeba tady odtud). Řeklo by se, tak to by šlo, máme brick a skoro běžící mac, ale kde v šumavském městečku ve sváteční den sehnat firewire 9pinový kabel? Bylo jasné, že tudy to nepůjde. Wifi ani ethernet připojení také není k dispozici, takže jsme na to šli nakonec takto – využili jsme informací z výše uvedných návodů a pak ještě z návodu tohoto (thank you Mike!, you saved our day :D).

  1. Zásadní bylo nabootovat bricknutý stroj do jednouživatelského režimu (single user mode). To se, chvála Pánu, podařilo.
    Do single user mode se dostaneme tak, že při bootování stroje držíme stisknuté klávesy ⌘-S (tedy klávesu cmd současně s klávesou S).
    Pozn.: v single user mode Mac OS X fungují jen některé řádkové příkazy. Žel např. program diskutil potřebuje tu nabořenou knihovnu, takže jej v tomto stavu počítače nemůžeme užít.
  2. Dostat do stroje správnou knihovnu libcurl.4.dylib. Tak toto se zdá být jednoduchý krok, ale byl to krok nejobtížnější. A. Protože jsme neměli k dispozici žádnou síť, nešlo v plnosti použít Mikeův popis. B. Když jsme pro přenos užili USB flashdisku, naformátovaného FAT32, tak se nezadařilo systému zavézt modul jádra obsluhující msdosFS (zřejmě zavaděč je závislý na nabořené systémové knihovně). C. Na druhém polobricknutém stroji nešlo flasku naformátovat v nativním mackovském HFS a linuxový notebook o HFS neměl ani tuchu.

    Co tedy teď? Provedli jsme to následovně. Nejprve přítel na iChatu (tedy já) vytvořil obraz flasky s filesystémem HFS u sebe na zdravém notebooku, tento obraz jsme přes GPSRS/EDGE dostali do polobricknutého mabooka, odtud jsme jej vložili na VFATkovou flasku, přes ní na HDD linuxu a z linuxové příkazové řádky jsme tímto obrazem přepsali právě použitou flasku. Tím jsme dostali flashku s HFS, na kterou jsme na polobricknutém mabooku nakopírovali funkční knihovnu libcurl.4.dylib.

    Takže, máme flashku s HFS s knihovnou. A bricknutý stroj v single user mode. Flashku zasuneme do bricknutého, stroje a provedeme příkazy, kterými překontrolujeme filesystém na bricklém stroji a hlavní disk přimountujeme v režimu pro zápis (r/w mode):

    fsck -fy

    mount -uw /

    na systému pak vytvoříme přípojný bod pro flashku a flashku přimountujeme k systému:
    mkdir /Volumes/F

    mount -t hfs /dev/disk1s1 /Volumes/F

    Takže máme na bricklém systému přístup ke správné knihovně.

  3. Knihovnu překopírujeme na správné místo v systému tak, že jednoduše z flashky překopírujeme knihovnu do adresáře /usr/lib, příkazem:

    cp /Volumes/F/libcurl.4.dylib /usr/lib/

    případně, máme-li na flashce jen zaBzip2povanou verzi, přímo staženou z libcurl.4.dylib.bz2, musíme tuto rozBzip2povat a teprve pak nakopírovat, k tomu užijeme serii příkazů:

    cp /Volumes/F/libcurl.4.dylib.bz2 /tmp

    cd /tmp

    bunzip2 libcurl.4.dylib.bz2

    cp libcurl.4.dylib /usr/lib/

    rm /tmp/libcurl.4.dylib

  4. Systém rebootujeme a radujeme se, že vše funguje. Reboot provedeme sledem následujících příkazů:

    cd /

    umount /Volumes/F

    rmdir /Volumes/F

    reboot

    No a to radování už necháme na vás :), my jsme po takové anabázi měli radost velikou, že oba stroje fungují zase jak mají.

Takže, Veselé Vánoce a moc pěkný celý nový rok 2010!

Tags: , , , ,

Comments are closed.