Vestiti da Coccodrilli per nuotare nella melma

Ore 22:14 ~ Dopo una giornata passata a compilare. Compilare qualunque cosa.

Come se avessimo fatto altro negli ultimi tre~quattro giorni. Comunque, fatto sta che oggi io e GODS siamo riusciti, finalmente, a produrre uno strumento che ci permette di compilare applicazioni apposta per la nostra piattaformina pulita pulita che ci tira schiaffi da ormai due settimane.

E quindi cosa farò oggi invece che parlarvi di Exalted, che potrebbe essere più interessante? Vi parlerò di come mascherarvi da Coccodrilli…

Uno screenshot del mio PC con un terminale aperto nella cartella di crosstool...

...ma preparatevi, non sarà carina come cosa.

Perchè dico che vi spiegherò come mascherarvi da Coccodrilli? Facciamo così. Pensate che la vostra piattaforma Xilinx ML310 ultrablindata con sopra un linux commerciale fatto girare su un kernel così vecchio che tutti i sistemi di cross compilazione moderni (fatti apposta per andare su board poco potenti e limitate) si RIFIUTANO di supportare visto le evidenti mancanze, sia un enorme palude nella quale girano coccodrilli (o alligatori?), controllata in ogni momento da delle guardie. Attente ma stupide.

Perciò che fate per attraversarla? Imparate a trattenere il respiro per 10 minuti? La ripulite? No, prendete il vostro cappello da coccodrillo e l’attraversate, spuntando fuori solo con la testa. Ottimo, no? Eh. Peccato che le guardie sappiano riconoscere un alligator mississippiensis da un alligator sinensis. Che, ad occhio, sembrano identici MA! Non lo sono. E quindi…

Illegal Instruction

Stronzo, aggiungerei.

Come fare, dunque? Beh. Basta produrre il cappello corretto, no? Peccato che il cappello sia costruibile solamente usando pelle di dodo.

Ah, cazzo. Ma il dodo si è estinto nel 1758, come facciamo?

Beh. È OVVIO! Prendiamo la nostra macchina del tempo, una Delorean modificata nel 1985, abbandonata là da qualche stronzo perchè andava a carbone ed intanto le altre macchine (anche del tempo) vanno a CO2 (producendo, ovviamente, Ossigeno), torniamo indietro nel 1750 ed anticipiamo di un po’ l’estinzione di questi volatili rincoglioniti.

Pronti?

Bene. Noi lo eravamo. Pronti a qualunque cosa.

Passo uno: sotto consiglio degli utenti della chat room #uclibc, dell’omonimo progetto opensource, ci ficchiamo per la seconda volta nel sito di Crosstool, uno strumento per costruire Toolchains, abbandonato alla fine del 2006. Scarichiamo in tmp, scompattiamo.

Passo due: una volta nella cartella di crosstool bisogna fare alcune modifiche abbastanza fuffa a dei file .dat per dire a tutta la chain di compilazione che cosa si vuole. Facciamolo, mettendo però tutte le cose nuove (vi dico che il compilatore gcc generato da tutto questo è più nuovo di quello che ho sulla mia macchina):

  • Gcc: 4.6.1
  • Binutils: 2.21
  • GDB: 7.3
  • Glibc: 2.3.2
  • Linux Kernel: 2.4.20
Uno screenshot del mio PC mentre modifico i parametri di un .dat file

.dat file

Che è un po’ come dire: ok, producimi una Maserati con l’ultima versione del motore, ma con la carrozzeria di una punto degli anni ’90, plox.

Passo tre: prendere uno degli script demo di compilazione e modificarlo per fargli fare quello che vogliamo. Noi dobbiamo compilare per un PowerPC 405 (Mitico 405, direbbe Sgaggio), quindi modificheremo demo-powerpc-405.sh modificando una delle righe con il nome del nostro dat file.

Uno screenshot del mio PC mentre modifico demo-powerpc-405.sh

Notiamo il secondo blocco di commenti...

Passo quattro: seguiamo il consiglio dei nostri amici e creiamo la cartella /opt/crosstool e chowniamola per farla funzionare col nostro username. Lanciamo ./demo-powerpc-405.sh e, voilà.

Uno screenshot del mio PC di uno dei fallimenti di Compilazione

Magia!

FUCK! FUKKEN SUCKS!

E ora? Come mai cerca quell’ar? Dovrebbe usare quello di sistema, lo stronzo.

Passo cinque: trova ed applica il primo hax!

Uno screenshot del mio PC mentre applico degli hack al file crosstool.sh

Ah, adoro il profumo di hacks al mattino.

Passo sei: Rilanciare la compilazione. OVER NINE THOUSAND file RIscompattati. Ricordati di aggiungere l’opzione –nounpack al file demo-powerpc-405.sh la prossima volta per non avere tutto quell’output, e tempo buttato. Ma adesso va che è una mera…

Uno screenshot del mio PC mentre fallisce ancora la compilazione

...MA CAZZO!

La tua versione del gcc, 4.5.2 è TROPPO VECCHIA?!? Ma scherzi? Stronzo! Sarai stato prodotto per girare con la versione 3.5, tipo. Vaffanculo. Quando è troppo è troppo!

vim build/powerpc-405-linux-gnu/gcc-4.6.1-glibc-2.3.2/glibc-2.3.2/configure

Dove sei, DOVE?

Uno screenshot del mio PC mentre cerco la riga colpevole

Eccoti quì, bastardo.

Delizioso passo sette: Eliminare a mano, anche grazie a Dacav e War, il controllo. Tutti i gcc gli DEVONO andare bene. Rilanciare la compilazione. Che cosa vuoi che…

Uno screenshot del mio PC che si blocca di nuovo con l'ar ma in un altro punto

...Crock.

Passo otto: Incazzarti come una iena, vedere se riesci a combinare qualcosa e scoprire che GODS ha finito di compilare tutto (abbiamo fatto in parallelo). Grazie GODS.

Passo nove: rm -rf /tmp/crosstool-0.43 && rm -rf /opt/crosstool. E vaffanculo.

Passo dieci: compilare a bestemmie Dropbear e, dopo un po’… Vedere che parte sulla piattaforma. Vi farei vedere gli screensshots, ma non ce l’ho quì, quindi nada, cosi.

Ed eccoci alla fine. Come direbbe War… “Beh, allora è fatta.”

Domani aspettatevi altre bestemmie, perchè non riusciamo a far capire a quel Montavista Linux 3.1 Professional che vogliamo far partire in automatico durante le varie fasi di init dropbear. ‘sto Stronzo.

Comunque, siamo andati avanti, ed io sono molto soddisfatto di questo. Oggi abbiamo lasciato da parte la galanteria ed abbiamo ritornato gli schiaffi.

A suon di palle di fango prese dalla palude.

Pubblicato il luglio 27, 2011, in La Storia Vera, Sgaggio Time! con tag , , , , . Aggiungi il permalink ai segnalibri. 5 commenti.

  1. Andrea Bolognani

    Amico, adoro questi post tecnici ma…

    Screenshot a 1366×768 per 6 righe di file .dat? Seriamente? E per vedere cosa cavolo c’è scritto bisogna aprire l’immagine, e poi pigiare un altro link per averla a dimensione originale. Cosa ne pensi di passare ad un semplice copia e incolla della parte interessante dell’output?

    Also, http://img846.imageshack.us/img846/8965/datfile.jpg

    • 😄
      Oh, suvvia, non dirmi che ti muore la connessione per delle immagini 1366×768.
      Also, speravo tu l’avessi capita la cosa del “.dat file”. Ottima immagine di risposta!😀

      • Andrea Bolognani

        No, ovvio che non mi muore la connessione, ma come ti ho spiegato andare a vedere cosa c’è scritto richiede un certo numero di click, e interrompe la lettura. Poi nello screenshot ci sono cose tipo il pannello e i tab di gnome-terminal, che non c’entrano nulla e creano solo rumore visuale. E, spesso, un sacco di output poco interessante prima di quello a cui fai riferimento nel post.

        Non ho nulla contro le immagini, quando sottolineano e complementano l’articolo… Ma mettere l’immagine di una finestra contenente unicamente testo anziché, beh, il testo stesso non può non ricordarmi il Web 0.1 (http://thedailywtf.com/Articles/Web_0_0x2e_1.aspx).

      • Hehe. Effettivamente. Se devo essere sincero, in realtà, all’inizio non volevo mettere questa immagine, perchè era vuota. Però non volevo rompere con la serie d’immagini. Vedrò di evitarlo la prossima volta.
        Quel post su “The Daily WTF” è magnifico!😄 Chi diavolo è quel genio del Web designe [sic.]?

  1. Pingback: [Day Striders] Una volta quì era tutta campagna « NightCrawlers – Jazzinghen's Blog

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: