Webserver su Raspberry Pi
Come configurare un Raspberry Pi affinché possa essere utilizzato come server per ospitare un sito web domestico (versione PDF)
QEMU
Se non avete ancora un Raspberry Pi, oppure volete configurare il sistema più comodamente, seduti dinnanzi al vostro computer, potete virtualizzare il sistema utilizzando l'emulatore QEMU. Attenzione: virtualizzare un'architettura diversa da quella del proprio processore richiede una notevole potenza di calcolo: si consiglia di utilizzare QEMU solamente se si ha almeno un processore dual core @ 1.5 GHz. In caso contrario, copiare l'immagine sulla scheda SD e configurare il sistema direttamente dal Raspberry Pi. Se non si è interessati alla virtualizzazione e si vuole installare subito il sistema sul Raspberry Pi per configurarlo direttamente dal minicomputer, si può copiare l'immagine sulla scheda SD (Sezione 6) e procedere con la configurazione (Sezione 4).Installazione e preparazione dell'ambiente di lavoro
Innanzitutto, installiamoqemu
e creiamo una cartella di lavoro:
# sudo apt-get install qemu-system # Debian e derivate # pacman -Syu qemu # Archlinux e derivate $ mkdir ~/qemudopodiché procuriamoci il kernel ARM per QEMU:
$ cd ~/qemu/ && wget -c http://xecdesign.com/downloads/linux-qemu/kernel-qemuUna volta ottenuti tutti gli strumenti e tutto il materiale necessario, bisogna modificare l'immagine per renderla adatta a funzionare anche su macchina virtuale; pertanto, individuiamo la partizione di / (root) all'interno dell'immagine e montiamola per modificarla:
$ file 2013-02-09-wheezy-raspbian.imgCome vediamo, ci sono due partizioni: a noi interessa la seconda (formattata in ext4). Considerando il settore di inizio di tale partizione, stabiliamo il byte di inizio della partizione all'interno dell'immagine moltiplicando tale valore per 512, e usiamo il nuovo valore ottenuto come offset per montare la partizione:
# mount 2013-02-09-wheezy-raspbian.img -o offset=62914560 /mntUna volta montata la partizione, modifichiamo il file
/etc/ld.so.preload
commentando l'unica linea presente.
# nano /mnt/etc/ld.so.preloadSmontiamo l'immagine:
# umount /mnt
Avvio dell'emulatore
Con la seguente riga di comando, invochiamo QEMU per avviare Debian:qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda 2013-02-09-wheezy-raspbian.img -redir tcp:5022::22 -redir tcp:5080::80Si noti l'opzione
-redir tcp:5022::22
, la quale redirige la porta
5022 del sistema host (il nostro computer fisico) alla porta 22 del sistema
guest (il Raspberry Pi virtualizzato). In questo modo, una volta avviato
l'emulatore, col seguente comando
saremmo in grado di connetterci al Raspberry Pi fittizio tramite ssh,
come se fosse un computer sulla rete:
$ ssh pi@127.0.0.1 -p 5022Molto probabilmente, l'immagine sarà stata danneggiata da queste operazioni poco ortodosse; pertanto, Debian ci notificherà un errore sul disco, che sarà velocemente corretto impartendo questo comando al terminale di recovery che ci viene presentato:
# fsck /dev/sda2Riavviamo la macchina virtuale (eventualmente chiudendo QEMU nel caso non collabori) e il sistema sarà pronto per essere modificato:
# rebootTrucco: una volta constatato il corretto funzionamento del sistema virtualizzato, si può inibire il terminale grafico forzando l'utilizzo del solo terminale testuale, semplicemente aggiungendo l'opzione
-cursors
alla riga di comando di QEMU.
Installazione sulla scheda SD
Per copiare l'immagine del sistema sulla scheda SD occorre innanzitutto individuare il device node che corrisponde alla scheda SD:# fdisk -lSupponiamo che la scheda SD sia
/dev/sdb
, allora
# dd if=2013-02-09-wheezy-raspbian.img of=/dev/sdb conv=syncPer comodità, possiamo vedere come procede la copia inviando un segnale di tipo USR1 a
dd
, in questo modo:
kill -USR1 $(ps -A | grep -w dd | awk '{print $1;}')In ogni caso, armiamoci di pazienza perché può essere necessario aspettare anche una mezz'ora. Una volta copiata l'immagine sulla scheda SD, è necessario espandere il filesystem su tutta la scheda, in modo da sfruttarne tutta la capacità (altrimenti lo spazio a disposizione è di ~2G). Per far ciò, si può utilizzare il tool presente sull'immagine, oppure più comodamente espanderlo con GParted direttamente dal nostro computer. Se non abbiamo GParted, installiamolo e avviamolo:
# apt-get install gparted # Debian e derivate # pacman -S gparted # Archlinux e derivate # gparted &Individuiamo la nostra scheda SD (per esempio,
/dev/sdb
) e la
partizione da espandere (nel caso dell'esempio, sdb2
); facciamoci
click col tasto destro del mouse e scegliamo Ridimensiona/Sposta:
nella finestra che compare, allarghiamo la partizione fino a riempire tutto
lo spazio a disposizione e confermiamo le modifiche.
A questo punto, armiamoci di pazienza e attendiamo il ridimensionamento
del filesystem — anche se in genere questa operazione richiede al massimo
qualche minuto.
Backup della scheda SD e ripristino
dd
può essere analogamente utilizzato anche per fare una copia
di sicurezza (backup) della scheda SD e quindi di tutte le modifiche
che vi abbiamo effettuato sopra (per risparmiare spazio, l'immagine copia
di sicurezza viene compressa con gzip
). Prima di eseguire
questi comandi, è necessario smontare la scheda SD.
# dd if=/dev/sdb conv=sync | gzip -c > backup.gzPer ripristinare l'immagine di backup precedentemente creata tramite l'ausilio di
dd
e gzip
sul disco /dev/sdb
:
# cat backup.gz | gzip -d > /dev/sdb
Pagina scritta da
Giovan Battista