mainSlogopaceclick Blog  · informatica · elettronica · astronomia..

Creare sparse files, con lunghezza a piacere in Windows e Linux

Un file sparso (dall'inglese sparse file), è un tipo di file per cui si cerca di occupare in maniera più efficiente lo spazio del file system nei casi in cui il file sia prevalentemente vuoto.

Il vantaggio dei file sparsi consiste nel fatto che lo spazio fisico nel file system viene allocato solo quando è effettivamente necessario: si risparmia spazio e si possono creare file di grandi dimensioni anche se lo spazio libero nel file system è insufficiente.

undefined

Tra gli svantaggi dell'uso di file sparsi:

Essi possono diventare frammentati, in quanto lo spazio nel file system viene allocato a mano a mano che le aree vuote sono riempite, e quindi non è necessariamente contiguo. Le informazioni sullo spazio libero nel file system possono essere fuorvianti se si considera la dimensione apparente dei file sparsi.

Uso

Un uso tipico dei file sparsi è per il testing delle connessioni di rete o per i benchmark degli hard disk: si creano file di grandi dimensioni con un semplice comando, che poi saranno utilizzati per capire la velocità di copia/trasferimento dei vari dispositivi.

Creazione su Windows

Da prompt dei comandi, dirigersi in una cartella

cd C:

eseguire il comando

fsutil file createnew <filename> <length>

la lunghezza deve essere inserita in Byte, esempio

fsutil file createnew myfile.txt 1000000000
(=1GB)

fsutil file createnew myfile.txt 2500000000
(=2.5 GB)

undefined

Creazione su Linux

dd if=$INPUT-FILE of=$OUTPUT-FILE bs=$BLOCK-SIZE count=$NUM-BLOCKS

Dove:

  $INPUT-FILE deve sempre essere /dev/zero per file di grandi dimensioni (vuoti).
  La dimensione totale del file sparso sarà $BLOCK-SIZE * $NUM-BLOCKS.
  Il nuovo file sarà chiamato come $OUTPUT-FILE.

Esempio:

dd if=/dev/zero of=file_sparso bs=1024 count=1

bs è la dimensione di uscita in Byte.

Installare e configurare Apache Web Server su Ubuntu o su Debian

Per creare un web server basato su Apache, appoggiandosi ad una comune macchina Ubuntu o Debian, procedere come segue.

undefined

1. Installare Apache

sudo apt-get update
sudo apt-get install apache2

Per verificare se correttamente installato, andare sul sito

localhost

dovreste trovare scritto 'It works!'

2. Configurare

Tutti i file di configurazione si trovano in

"/etc/apache2"

si può visualizzare tramite terminale con 

cd /etc/apache2
ls -F

apparirà

apache2.conf    envvars       magic             mods-enabled/     sites-available/
conf.d/ httpd.conf mods-available/ ports.conf sites-enabled/

tra i quali, i più importanti

apache2.conf: la configurazione del webserver
sites-available/: contiene i virtual host

3. Aggiungere i file del sito da esporre

Come includere i propri files php (o html) in modo da poterli esporre ad Apache, posizionarli nella cartella:

/var/www

Nota

La cartella necessita di permessi di root per essere modificata.
E' possibile (ma sconsigliato) modificare questi permessi con il comando:

sudo chown <user> /var/www

dove al posto di <user> dovrete inserire il vostro nome utente (questo comando va applicato anche a tutti i file predefiniti all'interno).
Si potrà in questo modo copiare direttamente da Nautilus.

Per copiare i file da terminale, senza modificare i permessi della suddetta cartella (consigliato per questioni di sicurezza), il comando è:

sudo cp <file da copiare> /var/www

Come accedere alle cartelle condivise di VirtualBox da Ubuntu o in generale da Linux

Se Usate spesso VirtualBox, vi sarete trovati nella situazione di dover spostare dei file dalla macchina Host (il sistema principale) alla macchina Guest (il sistema emulato).

undefined

Per fare questo, nel caso si usasse Windows come Guest (nella VM), non ci sono problemi.
In tal caso basterà creare una cartella condivisa con auto-montaggio, e aver installato le VirtualBox Guest Additions.
In questo modo ad ogni avvio del Guest, si troverà la cartella montata 'in rete', che rimanda a quella del sistema fisico.

undefined

Nel caso si dovesse usare Linux come sistema Guest le cose si complicano, ed è necessario un passo aggiuntivo, vediamolo.

Passo 1 - Installare le Virtual Box Guest Additions

All'interno della macchina virtuale Linux (Ubuntu)

Aprire un terminale e Acquisire i diritti di root con:

sudo su

Aggiornare la lista dei packages

apt-get update

Installare le VirtualBox Guest Additions

apt-get install virtualbox-guest-dkms

Riavviare il sistema (la VM), e poi spegnerla per il prossimo passo.

Passo 2 - Creare la cartella condivisa

Da sistema Host, creiamo la cartella condivisa e selezioniamola dalle impostazioni della macchina virtuale:

undefined

 

Passo 3 - Diamo i permessi di accesso

Per poter aprire la cartella appena condivisa, dobbiamo dare il seguente comando (su Ubuntu, sistema emulato):

sudo adduser [username] vboxsf

In questo modo si danno privilegi di accesso all'utente corrente nel gruppo di virtualbox.
Ovviamente al posto di [username] si deve inserire il proprio user nel sistema:
se ad esempio alla sinistra del prompt nel terminale troviamo scritto leo@leo-VirtualBox:~$ , sarà leo.

Per verificare se si è stati aggiunti eseguire (solo per verifica, non necessario):

id [username]

nella lista che compare, dovrebbe esserci anche 999(vboxsf).

E' adesso possibile accedere alla cartella condivisa, nel sistema Guest, al percorso:

Home > Devices > Computer > Media

All'interno potrete trovare tutte le cartelle montate. Quelle di VirtualBox avranno il prefisso "sf_" prima del nome.

Questa procedura potrebbe anche permettere l'uso (sperimentale) del Drag and Drop Bidirezionale.

Inoltrare dati da seriale virtuale ad un indirizzo di rete tramite socket TCP

Vediamo come inoltrare dati da seriale virtuale verso un indirizzo di rete.

undefined

Passo 1 - Scegliere la seriale da utilizzare

E' possibile visualizzare la lista delle seriali virtuali disponibili nel sistema con il comando:

dmesg | grep tty


Passo 2 - Socat

Socat è un utilissimo strumento già presente in molte distro Linux, che consente di manipolare ed eseguire il forwarding di pacchetti di rete.

Aprire un terminale ed acquisire i privilegi di ROOT (importante).

Eseguire questo comando per inizializzare l'inoltro dei pacchetti in arrivo 
sulla seriale ttyS0, verso l'indirizzo IP di loopback, sulla porta 60001:

socat pty,link=/dev/ttyS0,raw tcp:127.0.0.1:60001&

Ovviamente basterà modificare il comando con la seriale e l'indirizzo IP:porta desiderati.

Un altro possibile uso è il binding (unione) di due differenti seriali:

socat PTY,link=/dev/ttyS10 PTY,link=/dev/ttyS11


Passo 3 - Invio/Ricezione con Python

3.1

Per poter ricevere i dati, dobbiamo predisporre un listener sull'indirizzo IP di destinazione (non trattato in dettaglio in questo articolo). Nel nostro caso usiamo semplicemente netcat, in ascolto sempre sulla porta 60001 (attenzione che la porta scelta non sia gìà in uso).
Diamo il comando (in un nuovo terminale con privilegi di ROOT):

nc -l 60001

oppure

nc -v localhost 60001

3.2

Prepariamo un semplice script per scrivere su seriale (utilizzando il Python) e salviamolo con il nome sender.py:

#START (serial forwarder)
import sys
import time
import os, pty, serial

#configure the serial connections
print "\nSTARTING SERIAL PRINT\n"

# open serial port
ser = serial.Serial('/dev/ttyS0', 9600, rtscts=True, dsrdtr=True)
print "SERIAL FORWARDER > (remind to use this as a root!)\n"

# write test string
ser.write("\n > serial test for an ALARM! \n go go ALARM! go :) ")

# close serial port
ser.close();
#END

eseguiamolo da un nuovo terminale (con privilegi di ROOT) con il comando seguente:

python sender.py

NOTA: installiamo pyserial se necessario (se andando ad eseguire il passo precedente riceviamo un errore):

sudo apt-get install python-serial

Potrete adesso vedere la connessione di socat, verso l'IP di destinazione. 

Ulteriori informazioni su socat, al sito ufficiale.

Come ripristinare la scrivania di un Raspberry su Debian

undefined

Durante l'uso intensivo del nostro RaspberryPi, è possibile trovarsi nella spiacevole situazione in cui l' X server non riesce ad avviarsi.

Possono essere varie le cause: un arresto anomalo, una cancellazione di file di sistema, o un fallito aggiornamento.

In tutti i casi, all'avvio saremmo di fronte ad un errore come quello sotto, che ci notifica il mancato avvio del comando startx, che fa partire proprio l' X server, responsabile della visualizzazione della scrivania (desktop).

undefined

Cosa fare?

Una possibile soluzione è ripristinare il file di configurazione del server X.

Appena dopo il boot, premere

ctrl+alt+F2

 

Apparirà un prompt, inserire i comandi (ognuno seguito da invio)

cd ~
ls -a

Vengono mostrati a video i file, cercare il file

.Xauthority

se è presente, è possibile che sia danneggiato. E' possibile cambiargli nome per far si che al successivo avvio il sistema ne generi uno nuovo:

mv .Xauthority .Xauthority.backup

In questo modo se riavviamo il sistema (con ad esempio il comando 'halt'), dovrebbe ricomparire la scrivania.

Nel caso non funzionasse, è possibile dare il comando aggiuntivo:

sudo chmod 777 /home/pi

 

Home