Professionisti & Consulenti ICT - Italia

Il portale dei Professionisti & Consulenti ICT Italiani! Leggi tutto »

 

Category Archives: Tips & Tricks

Velocizzare la compilazione di Linux

Lavorando con sistemi embedded di diversa natura mi capita spessissimo di dover ricompilare il kernel Linux; una operazione che, di per se, necessita di parecchio tempo.

I PC di ultima generazione, che si usano come sistemi host sui quali gira il cross-compilatore, hanno in genere più di un core e quindi perché non sfruttare la compilazione parallela che make ci mette a disposizione per velocizzare l’operazione?

Riuscire infatti a ricompilare il kernel più velocemente per diminuire i tempi morti che si hanno durante lo sviluppo di un sistema embedded (e chi fa il mio mestiera sa quanto tempo si perde se si deve ricompilare spesso il kernel) è sicuramente importante!

Vediamo allora di trovare una regoletta generale per ricompilare il kernel il più velocemente possibile sfruttando al massimo le risorse del nostro PC di lavoro.

Quando Firefox è lento

E’ da qualche tempo che mi son accorto che Firefox, sulla mia Ubuntu 12.04 64bit, è particolarmente lento… se si aprono molte tab addirittura ci vogliono molti secondi solo per fare lo scroll di una pagina!

Come risolvere il problema?

Come installare un programma da una macchina Debian ad un’altra

Mi è capitato alcune volte di avere la necessità di eseguire il programma strace su di una macchina che presentava delle anomalie. Lavorando con distribuzioni Debian ridotte all’osso, ovviamente, il programma strace mancava e quindi non mi rimaneva che tentare di installarlo coi soliti comandi apt-get et similia…

Ma che succede se, al momento, la rete non è disponibile o, peggio, non si sa bene da quale repository remoto scaricare il pacchetto Debian con il programma che ci interessa?

La cosa più semplice, se si ha un’altra macchina della stessa architettura, è quella di copiare brutalmente l’eseguibile da una macchina all’altra. Operazione facile se il programma in questione è composto da un solo file, un po’ più complessa altrimenti..

Quando manca il comando «ldd»

Mi son trovato in questi giorni a dover lavorare con una distribuzione GNU/Linux veramente minimale sulla quale dovevo far girare una particolare verisone di mplayer. Il programma lo avevo preso da un’altra distribuzione precompilata e quando ho tentato di eseguirlo ha iniziato, ovviamente, a notificare la mancanza delle librerie dinamiche!

In questa situazione utilizzando il comando ldd è facile ottenere la lista delle librerie dinamiche richieste da una applicazione, ma se il comando non c’è?

DLL facili per Wine

Personalmente non uso Windows come sistema operativo ma alcune volte son costretto a farlo! Sembra che chi produce sistemi embedded non usi altro che Windows e quindi la maggior parte dei tool per gestirli sono eseguibili Windows (file EXE, tanto per intenderci).

Molto spesso però si può usare wine per eseguirli evitando quindi di dover ricorrere all’uso di Windows… è anche però abbastanza facile che wine non riesca ad eseguire il famigerato file EXE perché gli manca qualche DLL (libreria dinamica) e quindi il povero utente GNU/Linux deve trovare il modo di dargli la DLL mancante in qualche maniera!

Fino a poco tempo fa ho sempre risolto in maniera artigianale ma poi ho scoperto winetricks. Con winetricks installare una DLL è un gioco da ragazzi! Vediamo un esempio.

Come disabilitare il «Global Menu» in Ubuntu 11.10 e 12.04

global menu

global menuUna delle novità introdotte nelle ultime versioni di Ubuntu (che usano quindi Gnome come sistema grafico) è quella di avere un menu comune per tutte le applicazioni nella barra in alto (chiamato appunto Global Menu). Cosa molto utile se si lavora spesso a tutto schermo, ma piuttosto fastidiosa per chi, come me, usa molte finestre sparse sul desktop!

Dover tutte le volte andare in alto a sinistra per selezionare una opzione del menu dell’applicazione in uso è una vera tortura, e diventa quasi impossibile se si usa il focus che segue il puntatore del mouse anziché usare il classico focus con clic.

C’è però un modo per disabilitare questa nuova funzionalità e ritornare quindi ai vecchi menu, uno per finestra.

Se il Galaxy S2 non va a dormire

Come felice possessore di un Samsung Galaxy S2 appena ho saputo che si poteva aggiornare ad Android 4 ICS ho provveduto subito ad installarlo! Tutto magnifico e fantastico tranne il fatto che la batteria ha iniziato a durare meno ed ho notato anche un anomalo surriscaldamento nella zona vicino alla videocamera posteriore.

Tutto ciò sembra dovuto al fatto che il nuovo aggiornamento non gestisce bene gli stati di funzionamento della CPU, ed in particolare lo stato di deep-sleep (letteralmente sonno profondo) che è proprio quello in cui la CPU dovrebbe andare quando non si usa il telefonino (a display spento, per intenderci).

PHP & Busybox httpd

Esistono diversi web server pensati appositamente per i sistemi embedded, alcuni dei quali piuttosto completi e potenti.

Spesso, però, sul sistema troviamo già installato httpd di Busybox. Se non possimo installarne un altro oppure se le nostre esigenze non sono tali da giustificare l’installazione di un nuovo web server, ma abbiamo ugualmente la necessità di utilizzare PHP, ecco un piccolo workaround che ci permette di farlo direttamente con il minimale httpd.

Generare un file da 10GB in 2 millisecondi!

Chi ha a che fare con le macchine virtuali o deve generare delle immagini di file per poi usarle come dischi virtuali si sarà trovato spesso a generare file vuoti molto grandi.

Ad esempio per generare un file da 10GB può usare il comando:

$ time dd if=/dev/zero of=file.bin bs=1M count=10240

La sua esecuzione però, almeno sul mio sistema, è di ben 2 minuti e 46 secondi!!!

$ time dd if=/dev/zero of=file.bin bs=1M count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 159.831 s, 67.2 MB/s
real    2m46.696s

user    0m0.000s
sys    0m12.345s

C’è un modo però per fare la stessa cosa in circa 2 millisecondi…

Generare un file pieno di 0xff

Per generare in file da 16Kbyte pieno di zeri su di un sistema UNIX/GNU-Linux si può fare:

$ dd if=/dev/zero of=file.bin bs=1024 count=16
16+0 records in
16+0 records out
16384 bytes (16 kB) copied, 0.000112229 s, 146 MB/s
$ od -tx1 < file.bin
0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0040000

Ma se dovessi riempire questo file con tutti 0xff, come potrei fare?

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi