Installare Linux su RaspberryPi con SD di qualsiasi dimensione

In questo esempio mostro come installare in una qualsiasi SD una distribuzione per la RaspberryPi, senza dover eseguire procedure per per l’espansione delle partizioni e con la possibilità di organizzare le partizioni come si vuole.
Gli esempi sono fatti con la Raspbian (2013-05-25-wheezy-raspbian.zip)

Partizionare (fdisk, parted, cfdisk) la scheda SD e creare due partizioni:

  1. primaria, 64MB, FAT32 LBA (codice 0x0c)
  2. primaria, tutto lo spazio rimanente, Linux (codice 0x83)

Formattare la prima con mkdosfs (FAT32):

Formattare la seconda con mkfs (ext3 o ext4):

Ora è neccessario montare l’immagine su delle directories temporanee per copiare i dati.
Estrarre il file ZIP e verificare gli offset con fdisk:

Nella colonna “Start” abbiamo i valori per montare le partizioni con l’offset.
Creiamo due directories temporanee:

Montiamo le partizioni dell’immagine:

Creiamo la directory per la scheda SD e montiamo le due partizioni:

Copiamo tutti i files del sistema operativo:

Copiamo tutti i files della partizione di boot:

Ora verifichiamo con vim il contenuto del file in /mnt/boot/etc/fstab:

Nella RPi, il device della scheda SD si chiamerà /dev/mmcblk0. Verificate che il tipo di filesystem corrisponda con quello da voi scelto, in questo caso ext4, ed aggiungete eventuali righe per ogni partizioni che avete creato.
Ora smontate tutte le partizioni:

Rimuovete la scheda dal PC e collegatela alla RPi, e tutto dovrebbe andare.

Icecast + MySQL Stats

Icecast è ormai considerato uno dei migliore software per realizzare un server di relay per flussi audio in streaming basato su formati e codice Open Source. Non solo è stato uno dei primi a supportare più flussi su un unico server, ma può essere usato anche con flussi audio/video basati su formati OGG.

Per quanto riguarda le statistiche di ascolto, il software di per se fornisce già alcuni dati come il numero di ascoltatori attuali per ogni flusso e quello del picco massimo, e consente di ottenere informazioni maggiori usando soluzioni esterne, come parser i files di log oppure software esterni che interrogano periodicamente il server.

Faccio parte del Team di UnicaRadio, la webradio degli Studenti dell’Università di Cagliari. Lavorando nell’ambiente ho capito l’importanza di un dato come il tempo medio di permanenza degli ascoltatori. Dopo aver valutato diverse soluzioni e provato diversi software, ho deciso di implementare la cosa lavorando direttamente sul codice sorgente, così da ottenere data ed ora di connessione e disconnessione di ogni singolo ascoltatore.

L’uso di un database esterno mi è sembrata la migliore soluzione, sia per l’inserimento dei dati da parte di Icecast, sia per la consultazione delle statistiche ottenute che può essere implementata anche con un semplice sito internet PHP+HTML.

Ho creato un repository su GitHub, raggiungibile all’indirizzo https://github.com/sardylan/icecast-mysql nel quale a breve riporterò tutte le modifiche che ho fatto fin’ora al sorgente originale.

Stay Tuned…

strlen e puntatori a NULL

Oggi ho scoperto una cosa molto importante sulla strlen() in linguaggio C.
Utilizzo questa funzione in quasi tutte le operazioni che riguardano le stringhe, ma non mi è mai capitato un caso in cui viene richiamata passando un puntatore a NULL come parametro di ingresso.
E non intendo un puntatore ad una stringa vuota (il cui unico elemento è un carattere di NULL), ma proprio un puntatore che in effetti non punta da nessuna parte.
Mentre testavo le nuove modifiche al codice di icecast (che pubblicherò non appena saranno stabili) ottenevo una serie di Segmentation Fault, e grazie a GDB ho scoperto e risolto il problema implementando una nuova funzione:

Nel mio caso, la strlen serve per preparare una query SQL, quindi il problema di un puntatore a NULL può essere risolto considerandolo come una stringa vuota.
In ogni caso si può risolvere la cosa con un semplice if.

Anche la funzione strcpy ha un comportament simile. Alla fine ho gestito la cosa con un if a monte.

Benvenuti

Benvenuti.

Come potete vedere, dopo tanto tempo mi son deciso a dare un aspetto decente al mio sito personale. Dopo aver testato Joomla (vecchie versioni), provato Drupal e dopo aver perfino creato un CMS partendo da zero, ho finalmente preso la decisione finale di installare WordPress.
Questo significa che avrò finalmente un blog serio, con una grafica “decente” e sopratutto facile da usare.

Argomenti e contenuti saranno quelli di sempre, ovvero un po’ di tutto. Guide, notizie, foto, e tanto altro, ma sopratutto tanta tanta roba inutile…