Area de-PHPizzata  —  This area is free from PHP crapware

31 dicembre 2008

Debian Lenny, VirtualBox e i device USB

Prima di tutto scarichiamo ed installiamo VirtualBox.

Possiamo scaricare la versione che vogliamo dal sito di Virtualbox, oppure possiamo seguire una strada più in stile debian ed avvalerci di apt-get.

apt-get VirtualBox dal sito Sun

Effettuiamo login come root (oppure apriamo una shell di root).

Editiamo il file /etc/apt/sources.list, aggiungendo:
deb http://download.virtualbox.org/virtualbox/debian lenny non-free

Salvare ed uscire.

Ora va scaricata ed installata la chiave di sicurezza pubblica per apt:
wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | apt-key add -

Finalmente:
apt-get update
apt-get install virtualbox-2.1

Seguire le istruzioni, installare VirtualBox, definire ed installare una macchina virtuale.
Nota: se non si riesce ad installare i client tools, verificare prima di avviare l’installazione di aver effettuato l’eject di qualunque dispositivo CD/DVD (fisico o virtuale) connesso alla macchina.

Siamo pronti.

Attivare la condivisione di dispositivi USB

Una volta che la macchina è stata configurata, installata e correttamente avviata, se vediamo solo dispositivi USB inaccessibili (in grigio) ecco come procedere.

Verifichiamo di aver aggiunto al gruppo vboxusers gli utenti a cui vogliamo far usare VirtualBox.
Useremo questo stesso gruppo per la sicurezza relativa al mount dei dispositivi USB.

Annotiamo il GID (Group ID, numerico)del gruppo vboxusers:
# cat /etc/group | grep vboxusers
vboxusers:x:117:marco

Useremo il valore numerico del gruppo (“117”, in questo esempio) nel file /etc/fstab.
Editiamo il file /etc/fstab, aggiungiamo questa riga:
none /proc/bus/usb usbfs auto,busgid=117,busmode=0775,devgid=117,devmode=0664 0 0

È tutto.
Ora possiamo definire il filtro per dispositivi USB dai settings della macchina virtuale, e la macchina virtuale li vedrà.

Etichette: ,

28 dicembre 2008

Linux con boot su dischi RAID (sotware raid)

Parlando di Linux il riferimento è a Debian, e quanto segue è stato provato con la Etch (4.0), la Etch-and-one-half (4.5) e la Lenny Beta 2 (5.0b2).

Per poter affrontare il boot di Debian direttamente da RAID vanno tracciate due considerazioni importanti...

1) Come è possibile effettuare il boot da una RAID software

Se il RAID è software allora il supporto RAID (madm) viene attivato solo durante il boot di linux, dopo il caricamento del kernel.
Questo significa che, semplicemente, non è possibile disporre del supporto di un RAID software al momento del boot.
Però... il RAID di tipo 1 (mirror) duplica i contenuti di una partizione sull'altra, e questo significa che possiamo partire da una partizione di boot anche se questa partizione fa parte di un RAID 1.
Significa anche che non è possibile partire né da un RAID 5 né da un RAID 0 che siano gestiti a livello software.

2) Come Linux gestisce il RAID software

Occorre creare delle partizioni per uso "Linux RAID", e poi configurare il RAID software e su questo creare i file system effettivi.
La mappa delle partizioni viene letta al boot, dopo la creazione delle partizioni RAID e la configurazione del RAID software è necessario un riavvio coatto, un hard reset, per ripartire ed utilizzare le partizioni create dal RAID.

Lo sporco trucco per non impazzire è che su ogni RAID software creato mettiamo una sola partizione, un solo file system.
Ci sarebbe anche da discutere del LVM (Logical Volume Manager), ma nei casi in cui utilizzo Linux le partizioni non sono destinate a contrarsi o espandersi, quindi l'ho volutamente ignorato.

Avvio dell’installazione

Avviamo dal CD della netinstall di Debian.
Nel caso della Lenny Beta 2 ho dovuto avviare il CD da windows, cliccare sull'eseguibile di install e quindi riavviare (partendo dall’HD di Windows) in modo che il grub installato sul disco di boot avviasse il CD. Alla fine del setup occorre ricordarsi di andare nel BIOS e settare i dischi RAID 1 come dischi di avvio che vengono prima di quello windows nella sequenza di boot.
Non so perché, ma pare che il setup di Debian sia profondamente cambiato da Etch a Lenny, migrando verso quello di Fedora.
Una delle conseguenze è che con la Lenny il setup parte in grafica.
Comunque partiamo.

Creazione delle partizioni per il RAID

Sui dischi fisici creiamo le partizioni “Linux RAID” destinate a comporre il RAID.

Qui si differenziano i casi: quello in cui disponiamo di 2 soli dischi (tutto RAID1), e quello in cui abbiamo 3 o più dischi (e faremo RAID 1 e RAID 5).

Due soli dischi

Nel caso di due dischi creeremo su ogni disco due partizioni: la prima di tipo "Linux RAID" grande quanto il disco meno uno o due GB, e la seconda il poco che rimane di tipo swap.
Dopo aver creato le partizioni, su entrambi i dischi "Configure software RAID": configuriamo la prima come "RAID 1" (2 unità attive, 0 di scorta).
Reset fisico, necessario per rileggere i dischi, e passiamo alla creazione dei file system.

Tre o più dischi

Nel caso di più dischi il consiglio è di ricordarsi che i link simbolici funzionano alla grande.
Personalmente invece di impicciarmi con i vari mount point creo un RAID 1 per / ( e quindi per /boot e /home ecc), un RAID5 per il resto e monto il RAID5 sotto /storage.
Poi dei comandi "mv" e dei link simbolici serviranno a spostare /etc, /var, /home e /usr sulla partizione RAID 5.
Creo quindi su tutti i dischi (tutti meno uno) una partizione dal alcuni GB, diciamo da 2 a 5, di tipo Linux RAID.
I dischi sono tre o più, almeno due sono stati preparati per il RAID 1. Sull'ultimo disco la partizione, della stessa misura, la useremo come swap.
Su ogni disco creo anche una seconda partizione Linux RAID, della dimensione rimanente.
Scegliamo "Configure software RAID".
Creiamo un RAID 1 con due unità attive e tante unità di scorta quanti sono i dischi rimanenti meno uno che abbiamo usato per lo swap; avremo quindi 0 partizioni di scorta nel caso di tre dischi totali, 1 partizione di scorta con quattro dischi ecc.
Creiamo anche un RAID5, e qui sta a voi decidere se volete tutte le unità ative o -avendone più di tre- se preferite tenerne anche una di scorta (cosa che io in genere preferisco).
Reset fisico, necessario per rileggere i dischi, e passiamo alla creazione dei file system.

Creazione dei file system

Con la Lenny beta ho visto che era necessario passare per il dialogo di configurazione raid software e non cambiare nulla accettando e tornando indietro, altrimenti non rileggeva i RAID creati prima.

Due soli dischi

Sulla partizione RAID 1 mettiamo una Etx3, che montiamo in root (/), flagghiamo di boot e formattiamo.
Le partizioni swap le useremo tutte come swap.

Tre o più dischi

Anche in questo caso partizione RAID 1 (considerevolmente più piccola) mettiamo una Etx3, che montiamo in root (/), flagghiamo di boot e formattiamo.
Sulla RAID5 mettiamo una Ext3, non lo flagghiamo di boot, formattiamo, e lo montiamo custom (in "/storage", appunto).
Rimane la partizione piccola per lo swap, quella avanzata alle partizioni RAID 1, e la destiniamo a tale uso.
Installeremo solo un base system, e dopo il primo riavvio ci adopereremo per spostare /home, /var (e magari /etc) sotto /storage, sostituendole con link simbolici.

Fine. Have fun! :-)




Un esempio di configurazione, con due HD da 750GB...

Partizioni hd1Partizioni hd2 Volumi logici
746GB, linux RAID746GB, linux RAID746GB, RAID 1, ext3, /
2.1GB, swap2.1GB, swap2.1GB, swap 2.1GB, swap
2.1GB, swap2.1GB, swap2.1GB, swap 2.1GB, swap


Alla fine della configurazione il sistema utilizza un volume ext3 in RAID 1, bootable, e 4 partizioni di swap.
Le partizioni di swap avrebbero anche potuto essere 2, ma pare che partizioni di swap più piccole (da mezzo GB in sù) siano più efficienti, così ho cercato un compromesso tra 8 partizioni da 1 GB e 2 partizioni da 4GB.

Una configurazione alternativa:

Partizioni hd1Partizioni hd2 Volumi logici
146GB, linux RAID146GB, linux RAID146GB, RAID 1, ext3, /
600GB, linux RAID600GB, linux RAID600GB, RAID 1, ext3, /home
2.1GB, swap2.1GB, swap2.1GB, swap 2.1GB, swap
2.1GB, swap2.1GB, swap2.1GB, swap 2.1GB, swap

Etichette: ,

Linux: scanner USB con SANE o XSANE, per gli utenti

UPDATE: Debian Lenny in distribuzione da fine Aprile 2009 non presenta più il bug, che è stato risolto esattamente come riportato nell'articolo.


Lo scenario: una Debian Lenny con connessa una stampante multifunzione HP, una all-in-one.
"Sane" la supporta, "hplip" è installato e lo supporta, ma lo scanner sembra non funzionare.
Poi la scoperta: esequendo da root sane-find-scanner ottengo:

# sane-find-scanner

# sane-find-scanner will now attempt to detect your scanner. If the
# result is different from what you expected, first make sure your
# scanner is powered up and properly connected to your computer.

# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a kernel SCSI driver for your SCSI adapter.

found USB scanner (vendor=0x03f0 [HP], product=0x7e04 [Deskjet F4100 series]) at libusb:003:006
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.

# Not checking for parallel port scanners.

# Most Scanners connected to the parallel port or other proprietary ports
# can't be detected by this program.


E qui scopro che -sorpresa- per l'utente root funziona.

Si tratta di permessi: lo scanner di marca 03f0 e modello 7e04 si trova in /dev/bus/usb/003/006 e può essere utilizzato solo da root, perché ha permission root:root 644.

Sistemare i permessi a mano risolve il problema per ora, ma per risolverlo permanentemente:

1. Aggiungo gli utenti che possono usare lo scanner al gruppo "scanner"

2. in /etc/udev/rules.d edito il file z60_libsane-extras.rules, e nel blocco delle regole degli HP, in fondo, aggiungo un paio di righe:

#Hewlett-Packard Deskjet F4100
SYSFS{idVendor}=="03f0", SYSFS{idProduct}=="7e04", MODE="0664", GROUP="scanner", ENV{libsane_matched}="yes"


Se mi fossi limitato a correggere i permessi al prossimo reboot, o collegando e scollegando lo scanner, avrei dovuto ricominciare.

Salvo, stacco e riattacco lo scanner. Tutto ok.

Etichette: ,

That’s All Folks!