martedì 28 agosto 2012

Creazione di una "Cartella attiva" per la conversione delle scansioni in PDF con OCR

Come promesso un paio di post fa sono a pubblicare il lavoro fatto per la creazione di una "Smart Folder" per la creazione automatica di documenti PDF abilitati alla ricerca "full text" a partire da pdf che contengono solamente l'immagine della scansione.

Questo post non vuole essere un HOWTO di tipo "copia e incolla" anche se cercherò di essere il più preciso possibile, bensì una traccia per colui che è interessato all'argomento e alla creazione in generale di Cartelle attive.

Gli ingredienti che userò sono:
  • un computer (fisico o virtuale non importa) con linux -- io ho provato la soluzione con Ubuntu 12.04 LTS sia 32 che 64 bit;
  • il software di manipolazione delle immagini imagemagick
  • il software di manipolazione dei pdf pdftk
  • il software di manipolazione delle scansioni unpaper
  • altro software per la manipolazione delle immagini exactimage
  • il software di OCR cuneiform
  • il software incron (per il monitoraggio del filesystem)
  • opzionale il software sendxmpp per la messaggistica
L'idea è la seguente: creare una cartella in cui "deporre" un file pdf uscito da una scansione piuttosto brutale e ripulirlo, farlo passare al vaglio di un OCR, quindi ricreare un pdf che contenga l'immagine alla quale viene associato "sotto e nascosto" il testo riconosciuto dall'OCR possibilmente secondo la stessa disposizione. In questo modo quando si cercherà una parola nel pdf, questa verrà evidenziata nel punto giusto.

Cominciamo.
Per prima cosa ho utilizzato tutti e soli pacchetti presenti nei repository ufficiali della distribuzione Ubuntu 12.04 LTS, quindi sussi i pacchetti sopra elencati sono stati installati mediante apt-get

sudo apt-get install imagemagick pdftk unpaper exactimage cuneiform incron sendxmpp

Creare una cartella destinata alla conversione:

mkdir ~/OCR
mkdir ~/OCR/lavoro
mkdir ~/OCR/fatti

Salvare il seguente script in una posizione adeguata (per esempio ~/bin/OCRPdf.sh)

#!/bin/bash
FILE=$1
WORK=$(date +"%H%M%S%N")
LASTFOUR=$(echo $FILE|sed 's/^.*\(....\)$/\1/')
if [ $LASTFOUR = ".pdf" ]; then
  DIRECTORY=$(dirname "$FILE")
  cd "$DIRECTORY"
  mkdir ./lavoro/$WORK
  cp "$FILE" ./lavoro/$WORK/
  cd lavoro/$WORK/
  pdfimages "$FILE" images
  for i in $(ls images-*); do
    LARG=$(identify -format "%[fx:w]" $i)
    ALTE=$(identify -format "%[fx:h]" $i)
    if [ "$LARG" -gt "$ALTE" ]; then
      convert $i -rotate -90 $i
    fi
    unpaper --overwrite $i $i
    cuneiform -l ita -f hocr -o $i.hocr $i
    hocr2pdf -i $i -o $i-ocr.pdf < $i.hocr
  done
  pdftk images-*-ocr.pdf cat output "$FILE"
  mv "$FILE" ../../fatti/
  cd ..
  rm -rf $WORK
  echo "OPERAZIONE OCR-PDF terminata sul file $(basename "$FILE"). Verificare il risultato in $DIRECTORY/fatti"|sendxmpp -t -u mionomeutentegmail -o gmail.com mionomeutentegmail
fi

creare il file  ~/.sendxmpprc per configurare l'invio delle notifiche via google talk e inserire una riga analoga alla seguente:

mioutentegmail@gmail.com;talk.google.com miapasswordgmail

naturalmente sostituento mionomeutentegmail e miapasswordgmail con i valori oportuni.

Cambiare i diritti del file così che altri non possano accedere alla password:

chmod 600 ~/ .sendxmpprc

Abilitare il proprio utente a usare incron aggiungendo una riga nel file /etc/incron.allow

riportando il proprio username

aggiungere il proprio utente al gruppo incron:

usermod -a -G incron miousername

Attivare il monitoraggio della cartella ~/OCR mediante il comando

incrontab -e

creare una riga analoga alla seguente:

~/OCR IN_CREATE,IN_MOVED_TO ~/bin/OCRPdf.sh $@/$#

Il gioco è fatto: mettete un pdf "grezzo" nella cartella OCR e questo verrà masticato, digerito e quindi messo una volta trasformato nella cartella fatti dentro a OCR. Se tutto è stato configurato bene vi arriverà un messaggio su google talk!

Un suggerimento:
Se si unisce questa soluzione al fatto che la cartella monitorata sia tra quelle di Dropbox e che Dropbox sia tenuto sempre online tramite dropbox.py che non necessita di avere effettuato la login grafica per rimanere online si otterrà un sistema remoto di ocr via rete tutto personale!

Questo post è stato scritto un po' troppo in fretta per essere perfetto. Prego chi lo utilizzasse di inserire commenti così che possa correggere eventuali imprecisioni.


sabato 25 agosto 2012

Suggerimenti per una buona installazione base di un server Ubuntu


  1. Installare Ubuntu 12.04 Server (x64) sulla macchina virtuale o fisica. Quando richiesto verso la fine della installazione assicurarsi di selezionare OpenSSH se si vuole o si ha bisogno di connettersi in remoto al sistema.
  2. Una volta finito fare log in e aggiornare il software:

    $ sudo apt-get update
    $ sudo apt-get upgrade
    $ sudo apt-get dist-upgrade

  3. Installiamo etckeeper to per aiutarci a tenere traccia dei cambiamenti in etc, per questo eseguire:

    $ sudo apt-get install git etckeeper chkconfig

    Correggiamo la configurazione in /etc/etckeeper/etckeeper.conf in modo che funzioni con git:

    $ sudo vim /etc/etckeeper/etckeeper.conf

    Decommentare la linea git e commentare la linea bzr. Salvare e avviare:

    $ sudo etckeeper init
    $ sudo etckeeper commit "Baseline"

    Adesso etckeeper ha impostato un cronjob che parte quotidianamente e fa un auto-commit di qualsiasi modifica effettuata nella directory /etc.
  4. Poiché si tratta di un server è probabile che si voglia dare un IP statico, invece del default che imposta l'installazione che è tramite DHCP. Per questo editiamo /etc/network/interfaces.  Nell esempio usiamo un IP di 172.16.10.112 da sostituire con quello desiderato. $ sudo vim /etc/network/interfaces
    Supponendo che la scheda di rete sia riconosciuta come eth0, cambiare:
    iface eth0 inet dhcp
    In:

    iface eth0 inet static
    address 172.16.10.112
    netmask 255.255.255.0
    network 172.16.0.0
    broadcast 172.16.255.255
    gateway 172.16.10.20
    dns-nameservers 172.167.10.1 172.16.10.11
    dns-search domain.local

    Naturalmente cambiare i valori adattandosi alla LAN.Inoltre assicurarsi di inserire i valori giusti per i server DNS. Attenzione che il modo di indicare i DNS è cambiato dalla versione 12.10 per gli IP statici, quando si disabilita il lookup DHCP, questo significa che il file resolv.confrisulterà vuoto a ogni riavvio . La cosa più semplice è di aggiungere il prefisso “dns-” nelle linee di configurazione come indicato nell'esempio.
  5. Infine riavviare il servizio di rete:

    $ sudo /etc/init.d/networking restart
  6. Una grossa comodità nella history dei comandi avere anche data e ora dell'esecuzione del comando. Per fare questo è opportuno aggiungere una variabile di ambiente. Per questo editare il proprio file di configurazione della shell:

  7. $ vim ~/.bashrc

    e inserire la riga
    HISTTIMEFORMAT="%d/%m/%y %T "
    prima di
    HISTSIZE=2000
    HISTFILESIZE=4000

    Stessa cosa deve essere fatta per il file /etc/skel/.bashrc
    $ sudo vim /etc/skel/.bashrc
    e infine per l'utente root
    $ sudo su -
    # vim ~/.bashrc
    infine riavviare il server e goderselo!

incrontab ... black magic!!

Salve,
Era tanto che non scrivevo in questo blog. Sto postando solo per fare scoprire ai più curiosi un programma che può rivoluzionare con la sua semplicità l'uso di una macchina linux, soprattutto insieme a potenti strutture cloud come Dropbox.
La parola magica è "incrontab" la versione directory di crontab. Cioè esegue script configurati in modo simile a crontab ma su eventi di file in una cartella "osservata".

Appena ho un po' più di tempo vi scriverò come ho fatto sì che da uno smartphone si possa convertire una semplice scansione in pdf si possa ottenerne una versione con il testo ricercabile in pochi secondi, il tutto con una notifica via google talk quando l'operazione è finita.

Saluti a presto

giovedì 18 settembre 2008

Creare una partizione cripttata su disco USB

Questo breve tutorial spiega come creare una partizione cripttata utilizzando Linux. Il metodo utilizzato renderà la partizione utilizzabile anche sotto Windows usando l'applicazione freeOTFE portable
Innanzitutto ringrazio l'autore del post su www.ubuntista.it da cui ho tratto la maggior parte delle istruzioni.

L'idea è quella di utilizzare una parte di un disco USB rimovibile per ospitare una partizione criptata che possa essere utilizzata sia sotto Linux che sotto Windows (i test per ora sono stati effettuati solo sotto Windows XP).

Provvederemo quindi a creare due partizioni una delle quali verrà criptata, mentre l'altra conterrà file in chiaro ed il programma freeOTFE portable per l'uso sotto windows dei dati criptati.

ATTENZIONE: Seguire queste istruzioni implica la perdita totale dei dati contenuti nella partizione da criptare, quindi… occhio a cosa state cancellando! In grassetto trovate i comandi da digitare nel terminale.

PASSO 1:
Installiamo una utility per criptare:

$ sudo aptitude install cryptsetup


PASSO 2:

Ora è il momento di preparare la partizione; se non siete sicuri su come si chiami, lanciate questo comando:

$ sudo fdisk -l

Vi verranno mostrate tutte le partizioni disponibili, con il dettaglio del nome del dispositivo.

Ora che siete sicuri sul nome del device (nel mio caso sto facendo una prova sulla mia chiavetta USB, ovvero /dev/sdb1), potete lanciare il seguente comando per creare la partizione da criptare (volendo avreste anche potuto usare un tool grafico come gparted):

$ sudo fdisk /dev/[dispositivo]

(ovviamente dovete sostituire [dispositivo] con il nome del dispositivo in cui c’è (o ci sarà) la partizione che vi interessa criptare; nel mio caso, sdb è il dispositivo, e sdb1 è la partizione che intendo criptare, mentre sdb2 sarà la partizione in chiaro)

Vi verrà proposto il menu di fdisk; è sufficiente creare le partizioni (con il tasto n(ew), createle primarie o estesa a seconda delle necessità), e poi rendere permanenti le modifiche della tabella delle partizioni con il tasto w(rite).

PASSO 3:

Per essere sicuri che il proprio kernel sia aggiornato sulla nuova tabella delle partizioni, potete lanciare il comando:

$ sudo partprobe

Nel mio caso, ad esempio, Ubuntu erroneamente mi lancia una finestra di Nautilus sulla root della chiavetta USB, e il terminale mi dice che il dispositivo è occupato. Potrebbe quindi essere necessario chiudere la finestra di Nautilus e smontare il dispositivo.

PASSO 4:

Per prima cosa creiamo il filesystem nella seconda partizione. Ho scelto di utilizzare il filesystem NTFS data l'alta compatibilità con le ultime versioni di Ubuntu (e Linux in generale) e, naturalmente, la totale compatibilità con Windows.

$ sudo mkntfs /dev/[seconda partizione]

(Nel mio caso [seconda partizione] è /dev/sdb2)

Creiamo anche una etichetta per la partizione:

$ sudo ntfslabel /dev/[seconda partizione] Volume_in_chiaro


N.B. Se i comandi sopra non fossero disponibili occorre prima installare il pacchetto ntfsprogs con

$ sudo apt-get install ntfsprogs


Prima di criptare, scriveremo dei dati nella nuova partizione, per evitare “attacchi” che cercano pattern esistenti nei dati “sparsi” ancora presenti nella partizione; potete usare uno dei seguenti tre comandi (l’ultimo è il più sicuro ma richiede più tempo):

$ sudo dd if=/dev/zero of=/dev/[dispositivo] bs=4k

oppure

$ sudo dd if=/dev/urandom of=/dev/[dispositivo] bs=4k

Per migliorare la sicurezza di queste operazioni, potete effettuare delle operazioni col vostro PC (muovere il mouse, lanciare applicazioni, ecc) per rendere la casualità più efficace possibile.

PASSO 5:

A questo punto la prima partizione è pronta per essere criptata. Il metodo usato in questo tutorial si chiama LUKS, con dei valori di mio gusto per ciò che riguarda lunghezza della stringa, hash e cifratura (potete cambiarli a piacimento, se sapete cosa state facendo).
Con questo comando vi verrà anche chiesta la passphrase (frase segreta) per accedere alla vostra partizione.
Non dimenticatevi la passphrase, altrimenti è molto probabile che non potrete più accedere ai dati della vostra partizione!

$ sudo cryptsetup luksFormat /dev/[prima partizione] -c aes -s 256 -h sha256

(Nel mio caso [seconda partizione] è /dev/sdb2)

PASSO 6:

Ora che abbiamo creato l’impostazione di base per la cifratura, dobbiamo aprire la partizione per usarla (il [nome] può essere qualsiasi cosa a vostro piacimento, ma evitate gli spazi ed eventualmente anche le lettere accentate):

$ sudo cryptsetup luksOpen /dev/[prima partizione] [nome]

PASSO 7:

Ora che il dispositivo è aperto ed aggiunto al device mapper, possiamo creare dentro esso un filesystem, ed usarlo. Ecco l’ultimo comando da lanciare (nome è il [nome] dato sopra)

$ sudo mkntfs /dev/mapper/nome

E quindi creiamo una etichetta per il volume:

$ sudo ntfslabel /dev/mapper/nome Volume_criptato


Per quanto riguarda l'uso del volume criptato sotto le ultime versioni di Ubuntu (e di altre distro Linux recenti) questo è praticamente tutto! Infatti al prossimo inserimento del disco USB penserà a tutto Gnome a partire dalla richiesta della password e del montaggio del filesystem NTFS.

Per poter utilizzare la partizione criptata sotto Windows sarà sufficiente scaricare il software gratuito FreeOTFE portable e, dopo aver inserito il disco USB su di un sistema windows e montato la partizione in chiaro, installarlo su questa. Questo software permetterà l'apertura anche sotto questa piattaforma della partizione criptata!

mercoledì 9 gennaio 2008

Installazione di un server per il software TaXiOn

La procedura qui di seguito descrive il processo di installazione di un pc come server LAMP e la successiva installazione e configurazione del software TaXiOn, naturalmente il software può essere installato su una qualsiasi macchina dotata di Apache, Mysql e PHP saltando le fasi 1 e 2.

Fase 1: Installazione del sistema operativo


La procedura che segue descrive l'installazione da zero del sistema operativo Ubuntu 7.10 serve i386 che è stato scelto per la particolare facilità di installazione.

Il sistema operativo può essere scaricato dal sito www.ubuntu.com facendo attenzione a scegliere la versione i386 server oppure direttamente da questo link: ubuntu-7.10-server-i386.iso e successivamente masterizzato su di un CD.


(Notazione: in corsivo sono riportati i comandi da digitare, in grassetto le opzioni da scegliere)

Al boot premere:

F2 ---> Italiano

e quindi scegliere:

Installa su disco rigido


Al momento della configurazione della scheda di rete eseguire:

Configurazione automatica DHCP ---> Annulla ---> continuare ---> Configura la
rete manualmente



inserire ip, netmask, gateway e DNS, infine il nome macchina

nella fase di partizionamento selezionare:

Guidato usa l'intero disco ---> ok ---> si


scegliere l'impostazione di default per l'orologio:

orologio su UTC ---> si



Inserire i dati per l'account principale (nel nostro caso scegliamo "taxion" come nome utente ed una password adeguata)

Nome completo utente: taxion

username: taxion

impostare password

...

alla richiesta delle applicazioni server da installare installselezionare:

LAMP server

OpenSSH Server

alla richiesta impostare password per l'utente root di mysql e segnarsela (questa sarà fondamentale in seguito)

RIAVVIARE

Fase 2: Aggiornamento e configurazione del sistema operativo


connettersi al server con un terminale ssh (da questo punto in poi non è più necessario essere fisicamente al computer server e le operazioni possono essere effettuate da remoto)

Al prompt eseguire:

sudo vim /etc/apt/sources.list


commentare con un carattere di # in cima la linea:

deb cdrom:[Ubuntu-Server 7.10 _Gutsy Gibbon_ - Release i386 (20071016)]/ gutsy main restricted

salvare ed uscire.



Al prompt eseguire:

sudo apt-get update
sudo apt-get upgrade
sudo reboot

Fase 3: Installazione programma TaXiOn


riconnettersi al server via ssh ed al prompt eseguire:

wget http://surfnet.dl.sourceforge.net/sourceforge/taxion/taxion-beta-2.2.tgz
tar zxf taxion-beta-2.2.tgz
mv taxion-beta-2.2 taxion
sudo mv taxion /var/www/
sudo chown -R www-data.www-data /var/www/taxion/
sudo vim /etc/php5/apache2/php.ini


modificare la voce:

register_globals = Off

in:

register_globals = On



sudo /etc/init.d/apache2 restart

mysql -u root -p

(ricordarsi la password scelta per l'utente root di mysql in fase di installazione di ubuntu)


mysql> create database taxion;

Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on taxion.* to 'taxion'@'localhost' identified by 'taxion';

Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> quit;

Bye



Al prompt digitare:

mysql taxion -u taxion -p < /var/www/taxion/accessi.sql

(viene richiesta la password impostata per l'utente taxion in mysql che nell'esempio è "taxion")

Editare il file di configurazione del programma

sudo vim /var/www/taxion/vars.php


Il programma è adesso funzionante e vi si può accedere andando con un browser all'URL:
http://indirizzo_ip_del_server/taxion/



appare una maschera di inserimento utente e password.


L'account di default è:

utente: admin

password: admin


Per l'insetimento e modifica degli utenti si veda la documentazione del programma.

sabato 5 gennaio 2008

Installazione di un server per la virtualizzazione

Ovvero "How I did it" per gli appassionati di "Young Frankenstein" altrimenti noto come Frankenstein Junior

Allo scopo di virtualizzare due macchine piuttosto vecchie e passare a nuovo hardware ridando vita a sistemi operativi piuttosto attempati e a software che necessitava di macchine più "brillanti" si è acquistato un server HP ProLiant ML 380 G4 dotato di controller RAID, 4 dischi hot swap da 360 GB configurati in un volume RAID 5, 5 GB di RAM e un dat DDS72.

Riepilogo delle operazioni di installazione del sistema operativo e del software vmware dopo le fasi di test.

Installazione del sistema operativo:

Si è utilizzato il CD Ubuntu Dapper 6.06 flight 7 INSTALL

NB: Si è scelta dapper dopo vari test su Breezy perchè rende disponibile il kernel amd64-server risultato più veloce e che già supporta più di 4 Gb di RAM. Gli altri kernel possibili erano amd64-xeon e amd64-generic. Tutti nascono compilati per multiprocessore ed eventualmente si adattano da soli al monoprocessore.

Selezione lingua: Italiana
Tastiera: Italiana

Installazione di tipo server; partizionamento come segue:

Dispositivo Boot Start End Blocks Id System Mount point
/dev/cciss/c0d0p1 * 1 64 514048+ 83 Linux /boot
/dev/cciss/c0d0p2
65 72434 581312025 83 Linux /
/dev/cciss/c0d0p3
72435 72689 2048287+ 82 Linux swap / Solaris
/dev/cciss/c0d0p4
72690 72944 2048287+ 82 Linux swap / Solaris

E' stato usato il software di partizionamento dell'installer procedendo a creare prima una partizione di 500 MB, successivamente a partire dagli ultimi blocchi due partizioni swap da 2 GB, ed infine una partizione con il restante spazio.

NB: Utilizzando il partizionamento automatico si è riscontrato un errore su Grub all'avvio perciò si è scelto di utilizzare una partizione /boot.

NB: Swap non puo' essere più di 2GB. Se si desidera + swap e' necessario creare più partizioni come in questo caso. Eventualmente e' poi possibile parallelizzarle.

Durante l'installazione è stata configurata manualmente (non tramite DHCP) la scheda di rete eth0 (ne sono presenti due) assegnando i seguenti parametri in accordo con la LAN:
  • Indirizzo IP
  • Netmask
  • Gateway
  • DNS
E' stato inoltre inserito il nome macchina ed un utente utente principale vmadmin (nella distribuzione Ubuntu l'utente creato al momento dell'installazione ha i diritti di effettuare sudo).

A fine installazione si è provveduto ad abilitare l'utente root con
sudo passwd root
e tutte le sorgenti di pacchetti che non fossero "backports" editando il file di configurazione
sudo vim /etc/apt/sources.list 
(per i dettagli si veda la sezione Package management della guida ufficiale di Ubuntu 6.06).

E' stato aggiornato il software con
apt-get update
apt-get dist-upgrade
Si sono installati i pacchetti del kernel nuovo con:
apt-get install  linux-headers-2.6.15-25 linux-headers-amd64-server linux-image-amd64-server
e quindi riavviato il server.

NB: fare attenzione che grub carichi di default il kernel giusto, altrimenti modificare il parametro default nel file di configurazione di grub.

Al riavvio si è proceduto ad inserire i moduli necessari per il corretto funzionamento del DAT:
modprobe aic7xxx
modprobe st
echo "engage scsi" > /proc/driver/cciss/cciss0

e si sono aggiunte nel file /etc/modules le righe
aic7xxx
st

si è creato un file in /etc/init.d chiamato engage-scsi di proprietà di root come segue:

#!/bin/sh
#
# engage-scsi
#
# abilita lo scsi, avviato da rc.S.
echo "engage scsi" > /proc/driver/cciss/cciss0

quindi si è creato un link al file nella directory /etc/rc.S dove ci sono i link agli script che devono partire prima dei vari rc.0-rc.1

ln -s /etc/init.d/engage-scsi S65engage-scsi

NB: il riassunto e' che per far funzionare correttamente lo scsi tape devono funzionare correttamente i moduli relativi allo scsi (aic7xxx in questo caso per uno SCSI adaptec ma per altro hardware può essere diverso) e poi del tape (st). Anche in questo caso con Kernel diversi da amd64-server si sono riscontrati problemi all'atto del caricamento dei moduli.

Infine, per permettere le connessioni XDMCP remote, si è modificato il file /etc/X11/wdm/wdm-config
commentando la riga 24:

 23 > # Don't listen for XDMCP
24 > #DisplayManager.requestPort: 0

e riavviato il servizio con
/etc/init.d/wdm restart


Installazione vmware


Al fine di standardizzare ed automatizzare l'installazione di vmware si sono preparati gli script Apt-Install-Dapper.fl7 e POST-apt-installDAPPER disponibili per il download. Si è quindi lanciato lo script Apt-Install-Dapper.fl7 che installa i componenti del Sistema Operativo necessari alla successiva installazione di vmware.
Dopo aver riavviato il server ed effettuato un accesso alla console grafica per consentire la creazione del profilo (utente vmadmin), si è lanciato lo script POST-apt-installDAPPER che crea i collegamenti sul profilo dell'utente vmadmin e pulisce la cache di apt.

Eseguendo l'installazione di vmware server beta3 23869 si incontra un errore nella generazione dei certificati ssl (un file con estensione .key). Cio' è dovuto al fatto che vmware è compilato a 32-bit mentre le librerie sono per applicazioni a 64-bit.
Per far funzionare vmware su un kernel a 64-bit è stato necessario avere a disposizione le seguenti librerie: ia32-libs, libpam0g, libdb2. Le ia32-libs sono librerie per emulare applicazioni a 32-bit su sistemi a 64-bit e sono state installate con il comando (che crea la cartella /lib32 con le librerie a 32-bit per kernel a 64):

apt-get install ia32-libs

per quanto riguarda le libpam0g e le libdb2 invece esse sono state soltanto scaricate e estratte e poi copiate in /lib32

wget http://archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam0g_0.79-3ubuntu14_i386.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/d/db2/libdb2_2.7.7.0-10_i386.deb
dpkg -x libpam0g_0.79-3ubuntu14_i386.deb /
dpkg -x libdb2_2.7.7.0-10_i386.deb /

poi si muove il contenuto della cartella //lib in /lib32 per entrambi i pacchetti omettendo di muovere il contenuto di //usr che contiene la documentazione.

A questo punto si procede con la installzione di vmware.

Per prima cosa è necessario impostare la corretta versione del compilatore in accordo con quello utilizzato per il kernel; nel nostro caso è sufficiente impostare la seguente variabile di ambiente nella shell che sarà utilizzata per la compilazione:

export CC=/usr/bin/gcc-3.4

scompattare i pacchetti di vmware-server

cd vmware-server-distrib
./vmware-install.pl

scompattare i pacchetti di vmware console

cd vmware-console-distrib
./vmware-install.pl

Le scelte di default vanno bene in entrambi i casi, abbiamo scelto di configurare solo la bridged network nella configurazione di rete.

A questo punto VMware è installato correttamente ma non è possibile accedere al server dalle console remote: errore (“Login (username/password) incorrect ”).

Per ovviare al problema è necessario scaricare i files ”pam_unix.so pam_unix_acct.so pam_unix_auth.so pam_unix_passwd.so pam_unix_session.so” dalla versione a 32-bit di debian o ubuntu e metterli in /lib32/security.
editare /etc/pam.d/vmware-authd, cambiare il path di pam_unix_*.so in /lib32/security.
Riavviando il servizio di vmware (/etc/init.d/vmware restart) sarà possibile connettersi dalle console remote.
Non e' possibile installare il pacchetto api di vmware su kernel a 64-bit ma questo non è ncessario.

Versioni successive di VMware


Il server è stato in seguito aggiornato alle versioni più nuove di vmware fino ad arrivare alla versione 1.0.1 Build 29996 che risulta molto stabile e prestante. Per l'installazione delle versioni successive si è proceduto alla disinstallazione della precedente ed alla installazione della nuova, utilizzando sempre lo stesso metodo, non si sono mai trovati problemi. E' possibile che installando direttamente l'ultima versione indicata alcuni passaggi particolari come la modifica del metodo di autenticazione pam non siano necessari in quanto adesso la release 6.06 di Ubuntu risulta supportata da VMware

clonazione di un server fisico su VMware

Descrizione di come far diventare una immagine ghost una macchina virtuale

Importazione di una immagine su una VM


E' possibile utilizzare una immagine di 1 pc con SO windows ed importarla su una macchina virtuale!
Tutto ciò senza ostacoli di variazione hardware grazie ad un software chiamato P2V che adatta la struttura del sistema operativo salvato in una immagine del disco all'hrdaware virtuale (compresa la configurazione scsi virtuale della VM).

Partiamo con un ghost (o altro sistema di imaging del disco) della macchina fisica che si vuole clonare.
Si crea un disco di avvio di ghost che ci permetta di recuperare l'immagine dalla rete. Le macchine virtuali di vmware simulano una scheda di rete compatibile con le amd pcnet family se si vuole poter accesere alla rete tramite un disco di boot e quindi necessario prevedere tali drivers. Il software Ghost prevede la creazione di floppy di boot che contengono PC Dos ed i driver necessari:
"amd pcnet family"

Si crea una macchina virtuale con i parametri piu' adeguati al SO che verrà installato.
Si avvia la VM con il disco di ghost e si ripristina sul disco della VM l'immagine del disco o della partizione originali.

A questo punto PRIMA DI AVVIARE LA VM si utilizza il software P2V assistant che è possibile acquistare dal sito di vmware
Per farlo è stato necessario condividere l'immagine del disco virtuale sul server linux in maniera che potesse essere vista dal programma P2V assistant installato su SO windows.

Si e' proceduto nlle seguenti fasi.
1) lanciato una sessione di Ubuntu da Live CD sul server linux

2) montato il disco del server
cd /media
mkdir disco
mount -t ext3 /dev/cciss0/c0d0p2 /media/disco

3) installato samba per la condivisione ( o con apt-get prendendo i 2 pacchetti samba e samba-common o lanciando da interfaccia grafica una condivisione che automaticamente avvia la procedura di scarico ed installazione di samba)

4) Si è modificato il file
vim /etc/samba/smb.conf
in pratica si disabilita tutto quello che può dar noia printing, etc. e si aggiunge la convisione come segue:
 [nome_condivisione]
path = /media/disco/var/lib/vmware
available = yes
browseable = yes
public = yes
writable = yes
guest ok = yes

5) si è lanciato il programma P2V sul file .vdmx della macchina virtuale e, dopo aver scelto di convertire la macchina fisica in una di tipo GSX, si è atteso il risultato della elaborazione.

6) se tutto è ok. si arresta la sessione live, si tolgono i supporti di boot (floppy), e si riavvia il server.

Adesso non resta che spengere la macchina originale che si è clonato e tirare su quella virtuale!

P.S. non dimenticare di installare i VM Tools!