Ho necessita’ di avere due macchine ‘up and running’ nonostante abbia, fisicamente, una sola macchina. La soluzione ? Virtualizzazione. Io pero’ non sono come tanti che pensano che la virtualizzazione sia la panacea di tutti i mali, infatti se si hanno 10 macchine che occupano il 20% delle risorse, bene, in un server ce ne possono stare 5 virtualizzate (facendo finta che il server non occupi risorse), ma se io ho 10 macchine ognuna occupa il 100% delle risorse, beh, a meno che le macchine non siano dei PII e’ molto difficile farle stare in un ambiente virtuale. Non e’ il mio caso, comunque, in quanto devo solo far apparire un dns primario ed uno secondario, che realmente occupano poche risorse di sistema.
La prima idea era di provare ad usare qemu, che ho gia’ messo in funzione qualche tempo fa, ma alla fine ho preso l’occasione per provare il tanto decantato xen.
Armato della mia Debian etch e del mio fido apt-get vediamo un po’ cosa fare. Innanzitutto si installano i pacchetti necessari:
apt-get update; apt-get install xen-linux-system-2.6.18-3-xen-k7 xen-tools bridge-utils iproute debootstrap
Se avete il lilo, dovete toglierlo e installare grub perche’ questo viene usato da xen, per cui:
dpkg –purge lilo; apt-get install grub; grub-install /dev/XXX dove XXX e’ il disco su cui avete installato il sistema, ad esempio nel mio casoe’ /dev/hda.
Molto probabilmente, o meglio sicuramente, vi e’ stato cambiato il kernel con un linux-image…-xen-…, per cui e’ necessario riavviare in modo che venga usato questo. Dopo il boot io noto un sacco di messaggi a console del tipo Feb 2 18:50:55 server kernel: 4gb seg fixup, process sshd (pid 1928), cs:ip 73:b7c66c1c ma per ora non mi preoccupo, vedremo in seguito se riesco a toglierlo πŸ˜‰
A questo punto prendete una partizione del disco piuttosto ampia e createci una directory in cui andrete a create tutte le macchine virtuali. Io ne ho fatta una ad-hoc perche’ quelle che avevo sul sistema server erano tutte piuttosto piccole, ma se avete una partizione unica allora nessun problema, usate pure quella. Sempre per mantenere un po’ di ordine mi sono fatto una dir /virtual nella quale ho montato la partizione, voi vedete di fare quello che preferite πŸ™‚ La dir di default negli xen-tools e’ la /home/xen.
xen-tools e’ un insieme di script per aiutare a creare le macchine virtuali, ed e’ configurabile tramite il file conf in /etc/xen-tools/xen-tools.conf, eccone qui un mio estratto:
server:/etc/xen-tools# grep -v ^# xen-tools.conf | grep -v ^$
dir = /virtual
debootstrap = 1
size = 4Gb # Disk image size.
memory = 128Mb # Memory size
swap = 128Mb # Swap size
fs = ext3 # use the EXT3 filesystem for the disk image.
dist = etch # Default distribution to install.
image = sparse # Specify sparse vs. full disk images.
gateway = 192.168.1.1
netmask = 255.255.255.0
passwd = 1
kernel = /boot/vmlinuz-2.6.18-3-xen-k7
initrd = /boot/initrd.img-2.6.18-3-xen-k7
mirror = https://ftp.debian.org/
Tutto il resto e’ lasciato di default. Probabilmente alcune altre cose sono da cambiare, ma insomma, piu’ o meno dovrebbe essere corretto e dare un’idea di massima.
Siamo pronti ora a lanciare il comando per generare la macchina virtuale:
xen-create-image –hostname vm01 –ip 192.168.1.10
Alla fine, dopo avere creato i file immagine, averli formattati, riempiti con i file di sistema (una etch come si vede nella c onfigurazione) tramite bootstrap ed avere applicato alcune patch, mi chiede, come richiesto nella configurazione, la password di root, e per terminare con un rassicurante All done.
Funziona ? Non funziona ? Vediamo un po’…
Per cominciare vediamo se la macchina virtuale e’ vista dal sistema:
# xen-list-images Name: vm01 Memory: 128 IP: 192.168.1.10
…ed infatti in /etc/xen/ troviamo il file vm01.cfg. Lanciamo ora la macchina virtuale:
# xm create vm01.cfg -c
L’opzione -c e’ utile nel caso la macchina virtuale non parta e si voglia capire perche’, ma solitamente la si omette perche’ poi si usa ssh per connetersi. Per fermare la macchina virtual, si puo’ dare uno shutdown dall’interno della stessa, oppure dal server host dare il comando xm shutdown vm01.
Ovviamente qualcosa non va πŸ˜‰ Non viene trovato il bridge che viene cercato di default, e quindi la macchina virtuale non parte e poi…non parte in automatico (ma questo non so se sia dovuto a qualche impostazione in fase di creazione). Ovviamo a entrambe le cose, editando il file /etc/xen/xend-config.sxp, io ho tolto il commento alla configurazione indicante (network-script network-bridge) mentre ho commentato quella indicante (vif-script vif-bridge). Riavviate poi i demoni con:
# /etc/init.d/xend restart. /etc/init.d/xendomains restart
A questo punto per rendere automatico l’avvio, basta guardare in /etc/default/xendomains per capire che vengono lanciate in automatico le macchine virtuali la cui configurazione si trovi in /etc/xend/auto, per cui:
# cd /etc/xend; mkdir auto; cd auto; ln -s /etc/xend/vm01.cfg .
…e dovremmo esserci πŸ™‚
Aggiornamento:
Per riavviare le macchine virtuali, semplicemente entrate in ssh e date il comando reboot
Vi consiglio di installare, poiche’ debootstrap non li installa al momento della creazione dello spazio virtuale, i seguenti pacchetti: postfix vim locales, dopodiche’ date il comando dpkg-reconfigure locales e selezionate it_IT.UTF-8
Altro consiglio, per evitare l’errore 4gb seg fixup e’ quello di installare il pacchetto libc6-xen che, stranamente, non viene fatto in automatico durante la prima fase.

In occasione del Torneo di Capodanno organizzato da Arroccoclub di Verona, InfoSysNet Snc (la mia societa’ di consulenza) e Phase Difference hanno prodotto una versione live di Debian GNU/Linux dedicata ai giocatori di scacchi e agli amanti di questo gioco di strategia.
La distribuzione, che abbiamo chiamato ACL – Arrocco Chess Live, contiene alcuni frontend grafici per server ICS o per giocare contro il proprio computer (eboard e xboard), piu’ alcuni motori scacchistici, software di analisi (come ad esempio Crafty), e database di aperture, partite e strategie. Il tutto, ovviamente, con software libero e distribuibile gratuitamente.
Potrete trovare la ISO da masterizzare a questo indirizzo, mentre QUI trovate alcune FAQ.
Se siete interessati potete venirci a trovare presso l’Hotel San Marco di Verona durante la manifestazione, per avere chiarimenti, fornire suggerimenti etc.

Finite le ferie ho trovato ad aspettarmi a casa un pacco, provenienza USA, con dentro il nuovo (usato) acquisto fatto su eBay, ovvero uno Zaurus 5500.
Per chi non lo conoscesse, e suppongo siano in tanti, questo oggettino della Sharp e’ un PDA, ovvero un palmare, simile a tanti altri che si vedono nelle pizzerie per raccogliere gli ordini oppure usati come navigatori GPS. La caratteristica che rende a mio avviso unico questo aggeggino e’ che usa linux πŸ™‚
Ho appena finito di cacciare via il sistema operativo originale e installare quello piu’ interessante, ovvero openzaurus, GPL, con integrato ssh (anche server)…
Quello in asta su eBay aveva anche la scheda Wi-Fi, quindi cosa di meglio di installare anche un bel tool per queste cosette ? E via con ipkg install opie-wellenreiter πŸ™‚
Domani vedo di giocarci ancora un po’.
Un benvenuto quindi a questo piccolino nella mia famiglia di hardware πŸ™‚

Usando sid (Still In Development), una persona deve sapere che, da un giorno all’altro i programmi e le funzioni possono smettere di funzionare, e non si puo’ certo biasimare il maintainer che sta facendo esattamente il suo lavoro πŸ™‚ Certo pero’ e’ seccante accorgersi, per un motivo o per l’altro, che la connessione via bluetooth tra il portatile ed il cellulare usata per collegarsi ad Internet (aihme’) anche durante le vacanze, non funziona, e questo proprio due giorni prima di partire.
Comunque, alla fine sono riuscito a ripristinare sia lo scambio di dati e applicazioni via obexftp, sia la connessione vera e propria con vodafone per poter andare in Internet con canale GPRS.
Il problema principale, credo (dopo le tante prove ho perso anche il conto di cosa in realta’ abbia risolto il problema πŸ˜‰ ) e’ la mancanza nel pacchetto bluez-utils del programma passkey-agent, dovuto ad un commento nel debian/rules che ne impedisce l’incorporazione nel .deb, ovvero:
apt-get build-dep bluez-utils
apt-get source bluez-utils
cd bluez-utils-3.1
vi debian/rules
[e togliere il commento dove si cita passkey-agent]
./debian/rules build; ./debian/rules binary
dpkg -i ../bluez-utils_3.1-3.1_i386.deb
Sembra comunque che ci sia un errore anche nella documentazione per cui date anche questi due comandi:
echo -n ‘1234’ > /etc/bluetooth/passkeys/default
echo -n ‘1234’ > /etc/bluetooth/passkeys/00:0F:DE:C1:77:04
[ovviamente mettete l’indirizzo fisico del vostro dispositivo]
e gia’ che ci siamo:
/usr/bin/passkey-agent 00:0F:DE:C1:77:04 1234 &
…e dopo un riavvio ora viene chiesto il pin sul cellulare (come prima) ma in seguito e’ pure accettato.
Per provare, provate a vedere il contenuto del vostro dispositivo:
obexftp -b 00:0F:DE:C1:77:04 -l
Buon divertimento.

Oggi e’ stata una giornata un po’ storica direi, per il mio sistema di casa. Una vecchia Debian GNU/Linux, installata…boh, non ricordo nemmeno quando, passata attraverso gli anni tramite migrazioni da un disco ad un altro via ‘cp -a’ e conseguente lilo, aggiornata da bo ad hamm a slink a potato a woody a sarge per poi finire definitivamente in sid…ebbene oggi ho messo il disco EIDE su cui era installata in parcheggio, non piu’ bootabile sebbene accessibile per ovvii motivi di recupero dati. Al suo posto ora c’e una nuova sid, installata di fresco, senza tutti gli errori che avevo fatto ai primordi ma con altri nuovi, tutti da scoprire πŸ™‚ dovuti alla vecchiaia. Per prima cosa i dischi sono SATA…cercavo un controller PCI ma un paio di giorni fa mi sono accorto ad un boot che in realta’ qualcosa di SATA lo avevo gia’ (oltre ai dischi perche’ la reinstallazione era comunque prevista), ho aperto il case, soffiato mezzo chilo di polvere con il compressore, ed ecco li gli attacchi per i dischi. Per cui oggi ho dato il via all’installazione con la segg. configurazione: home:~# mount
/dev/md2 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
tmpfs on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/md1 on /boot type ext3 (rw)
/dev/md3 on /home type ext3 (rw)
/dev/md5 on /kevin type ext3 (rw)
/dev/md4 on /tmp type ext3 (rw,nosuid,nodev)
tmpfs on /dev type tmpfs (rw,size=10M,mode=0755) Come si vede ho messo su un po’ di roba in RAID, in particolare la /home in RAID1 (per motivi di integrita’ dei dati) cosi’ come la /boot (a lilo non piace dover fare boot da RAID0), mentre le altre per motivi prestazionali sono in RAID0, tanto anche se vengono persi pazienza, il sistema di casa si reinstalla. Ah, la /tmp e’ tenuta senza il noexec per le installazioni πŸ™‚ poi ci pensero’. Per cui eccomi qui, con il sistema pulito pulito, con solo 461 pacchetti installati visto che non mi piace tasksel e decido io, via apt-get che cosa installare. Bene quindi, lunga vita a Debian… Ah, nota a margine…nonostante i DVD di Debian testing (alias etch ad oggi) consentano l’installazione su RAID con la sua config etc, ha un bel bug che non consente di fare tutto subito, ma si perde all’installazione del kernel che deve essere installato a mano su un terminale a parte per poi sistemare, sempre a mano, gli errori di initramfs-tool e mdadm..ma d’altronde, installare linux e’ sempre un piacere, se fa tutto da solo, che piacere e’ ?
πŸ™‚