Com rdiff-backup salvà el meu Mac OS X

L’altre dia, provant d’instaŀlar al meu ancià iBook G4 el GRUB2 (que, per cert, no funciona), vaig matxucar per accident la partició on tinc el Mac OS X que encara mantinc per a poder vore vídeos en streaming (no hi ha Flash per a Linux sobre PowerPC i Gnash no sembla rutllar —encara no he provat Swfdec). Afortunadament tenia una còpia de la partició, feta des de la meua Debian amb rdiff-backup combinat amb Backupninja mitjançant uns scripts que vaig escriure fa un temps (i que podeu trobar a aquest repositori de Bazaar), però mai havia provat a fer una restauració i no sabia si funcionaria. I vaja que ho vaig aconseguir! Gràcies a rdiff-backup i a eixa meravella que és Open Firmware.

Vaig començar reinstaŀlant Mac OS X sobre la partició interfecta per a recuperar‐la (però podria haver sigut suficient amb crear un nou sistema de fitxers HFS+ buit des de l’eina Utititat de discos del disc d’instaŀlació). Com que Linux no pot escriure a una partició HFS+ que tinga el registre actiu (necessari per a restaurar OS X sobre la instaŀlació neta), vaig haver d’inhabilitar‐lo executant sota OS X:

$ sudo diskutil disableJournal /Volumes/macosx_root

On macosx_root és el nom del volum a restaurar. Ara el problema era com iniciar Debian per a restaurar el contingut de la partició, ja que després de reinstaŀlar l’OS X arrencava aquest directament sense mostrar el menú d’inici de Yaboot (no es podia esperar menys d’Apple!). Més tard vaig aprendre que podria haver emprat el selector gràfic d’Open Firmware —prement Alt durant la campanada d’inici—, però durant la instaŀlació de GRUB2 vaig aprendre a llançar manualment diferents gestors de càrrega i sistemes operatius des de la consola d’Open Firmware. De veres, si teniu un ordinador amb Open Firmware (p.ex. un Mac PowerPC), recomane encaridament llegir Understanding the yaboot bootstrap process per a comprendre com funciona: vos pot salvar el dia!

El truc està en saber a quina partició i directori es troba i quin fitxer conté el carregador que volem llançar. Per exemple, al meu ordinador Yaboot es troba a la partició 2 del disc intern, al directori principal, fitxer yaboot. Així, després d’entrar a Open Firmware (Alt+Logo+o+f durant la campanada d’inici) vaig escriure:

> boot hd:2,yaboot

(Com a apunt diré que el carregador de Mac OS X al meu ordinador seria hd:3,\System\Library\CoreServices\BootX.) Una volta a Linux i amb la partició del Mac OS X (amb el registre inhabilitat, recordem) muntada a /mnt, ja podia restaurar la còpia de seguretat a l’últim estat conegut, sobreescrivint el contingut existent i esborrant allò que ja no existia:

# rdiff-backup -r now --force còpia/de/macosx_root /mnt

Després d’una bona estona de raca‐raca de discos durs, la partició de Mac OS X ja estava restaurada, però quedava el detall de tornar a fer OS X arrencable, perquè rdiff-backup no sap copiar i restaurar els atributs d’HFS+ necessaris com el directori beneït i el tipus de fitxer (vegeu l’article anterior). Vaig fer açò emprant el disc d’instaŀlació de Mac OS X i l’eina Discos d’arrencada. Després ja vaig poder tornar a arrencar OS X, que per a la meua alegria estava exactament igual que abans del desastre. Visca! Ja posats, vaig aprofitar per a tornar a habilitar el registre del sistema de fitxers:

$ sudo diskutil enableJournal /Volumes/macosx_root

Finalment, vaig tornar a arrencar Debian emprant el procediment anterior, per a restaurar l’arrencada de Yaboot executant ybin com a root. Alehop, sistema restaurat! Tant de maldecap per a recuperar un sistema propietari que a penes use, però volia comprovar que podia restaurar una còpia realitzada amb rdiff-backup i… ja sabeu, havia de fer‐ho! ;)