Differences between revisions 3 and 4
Revision 3 as of 2009-09-10 13:32:06
Size: 2705
Editor: lukisi
Comment:
Revision 4 as of 2009-09-10 17:33:59
Size: 8848
Editor: lukisi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 12: Line 12:

Dobbiamo anche fare in modo di avere abbastanza spazio nel disco virtuale.

=== Aumentare lo spazio disco della macchina virtuale ===

Le macchina virtuali che si usano in Netkit hanno un disco virtuale. Tale disco è rappresentato da un file "modello" che non viene alterato, e da un altro file che contiene solo le differenze rispetto al modello.

Il file modello usato si trova nella directory di installazione di netkit ($NETKIT_HOME) nella sottodirectory "fs" e si chiama netkit-fs-i386-F5.0.
<<BR>>
La dimensione del disco rappresentato da questo file è di 1GB. Troppo poco per i nostri bisogni. Vediamo come ampliarla.

Copiamo, per sicurezza, il file originale.
<<BR>>
Con il comando "ls -ls" vediamo sia la dimensione dichiarata che lo spazio effettivo su disco.
<<BR>>
I 2 valori differiscono per i cosidetti sparse-file, come le immagini di disco che non sono "piene".

{{{
luca@luca-laptop:~$ cp netkit/fs/netkit-fs-i386-F5.0 backing
luca@luca-laptop:~$ ls -ls backing
1048584 -rw-r--r-- 1 luca luca 1073741824 2009-09-10 15:46 backing
}}}

Aumentiamo le dimensioni "dichiarate" del file.

{{{
luca@luca-laptop:~$ dd if=/dev/zero of=backing bs=1 count=1 seek=2G
1+0 records in
1+0 records out
1 byte (1 B) copied, 9.9803e-05 s, 10.0 kB/s
luca@luca-laptop:~$ ls -ls backing
1048588 -rw-r--r-- 1 luca luca 2147483649 2009-09-10 15:47 backing
}}}

Espandiamo la partizione che si trova all'interno di questa immagine di disco virtuale.

{{{
luca@luca-laptop:~$ sudo losetup /dev/loop0 backing
luca@luca-laptop:~$ sudo fdisk /dev/loop0

The number of cylinders for this disk is set to 66576.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
}}}

Il comando u dice che vogliamo vedere come unità il settore e non il cilindro.

{{{
Command (m for help): u
Changing display/entry units to sectors
}}}

Il comando p mostra le informazioni del disco.

{{{
Command (m for help): p

Disk /dev/loop0: 2147 MB, 2147483648 bytes
1 heads, 63 sectors/track, 66576 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000

      Device Boot Start End Blocks Id System
/dev/loop0p1 * 64 2097143 1048540 83 Linux
}}}

Notiamo che la partizione attualmente inizia al settore 64. Dovremo usare in seguito questo valore.
<<BR>>
Cancelliamo la partizione e la ricreiamo più grande.
<<BR>>
Useremo 64 come inizio e il default come fine.
<<BR>>
d per cancellare, n per creare, p per primaria, 1 come partition number, 64 come inizio, invio quando ci chiede la fine.

{{{
Command (m for help): d
Selected partition 1

Command (m for help): n
Command action
   e extended
   p primary partition (1-4)
p
Partition number (1-4): 1
First sector (63-4194303, default 63): 64
Last sector, +sectors or +size{K,M,G} (64-4194303, default 4194303):
Using default value 4194303
}}}

Il comando p mostra le informazioni del disco.

{{{
Command (m for help): p

Disk /dev/loop0: 2147 MB, 2147483648 bytes
1 heads, 63 sectors/track, 66576 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000

      Device Boot Start End Blocks Id System
/dev/loop0p1 64 4194303 2097120 83 Linux
}}}

Il comando a rende la partizione bootable, come era prima.

{{{
Command (m for help): a
Partition number (1-4): 1

Command (m for help): p

Disk /dev/loop0: 2147 MB, 2147483648 bytes
1 heads, 63 sectors/track, 66576 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000

      Device Boot Start End Blocks Id System
/dev/loop0p1 * 64 4194303 2097120 83 Linux
}}}

Il comando w salva ed esce.

{{{
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
}}}

Possiamo ignorare quel warning. Ora rimuoviamo l'associazione a /dev/loop0

{{{
luca@luca-laptop:~$ sudo losetup -d /dev/loop0
}}}

Ora facciamo un calcolo. La nostra partizione inizia al settore 64 e ogni settore (come visualizzato da fdisk) è di 512 bytes.
<<BR>>
Quindi la partizione inizia ad un offest di 64*512=32768 bytes.
<<BR>>
Associamo a /dev/loop0 questa partizione con il seguente comando.

{{{
luca@luca-laptop:~$ sudo losetup --offset 32768 /dev/loop0 backing
}}}

Un fschk, un resize e un nuovo fschk servono per rendere effettiva la nuova allocazione.

{{{
luca@luca-laptop:~$ sudo e2fsck -f /dev/loop0
e2fsck 1.41.4 (27-Jan-2009)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 3A: Optimizing directories
Pass 4: Checking reference counts
Pass 5: Checking group summary information

nkfs-i386-F5.0: ***** FILE SYSTEM WAS MODIFIED *****
nkfs-i386-F5.0: 39840/65536 files (2.2% non-contiguous), 725259/1048540 blocks
luca@luca-laptop:~$ sudo resize2fs -f /dev/loop0
resize2fs 1.41.4 (27-Jan-2009)
Resizing the filesystem on /dev/loop0 to 2097120 (1k) blocks.
The filesystem on /dev/loop0 is now 2097120 blocks long.

luca@luca-laptop:~$ sudo e2fsck -f /dev/loop0
e2fsck 1.41.4 (27-Jan-2009)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
nkfs-i386-F5.0: 39840/131072 files (2.2% non-contiguous), 742160/2097120 blocks
}}}

Di nuovo rimuoviamo l'associazione a /dev/loop0

{{{
luca@luca-laptop:~$ sudo losetup -d /dev/loop0
}}}

=== Installazione pacchetti da Internet ===

HowTo test netsukuku daemon using NetKit

Un modo di provare il funzionamento di Netsukuku (se non si dispone di una variegata infrastruttura di reti e di un numero cospicuo di computer) può essere l'uso di NetKit (vedere http://wiki.netkit.org/index.php/Main_Page).

Lo scopo di questa pagina è quello di raccogliere le informazioni che possono aiutare i nuovi arrivati a preparare un ambiente in cui simulare una arbitraria topologia di rete i cui nodi sono in grado di eseguire il demone ntkd.

Preparare una macchina virtuale per eseguirci ntkd

Dopo aver installato la versione più recente di Netkit (core version 2.6 - file system 5.0 - kernel version 2.7) si possono avviare macchine virtuali che hanno un sistema operativo basato su Debian.
Possiamo quindi usare apt-get per installare il software di cui abbiamo bisogno. E' necessario che il nostro computer sia collegato a Internet.

Dobbiamo anche fare in modo di avere abbastanza spazio nel disco virtuale.

Aumentare lo spazio disco della macchina virtuale

Le macchina virtuali che si usano in Netkit hanno un disco virtuale. Tale disco è rappresentato da un file "modello" che non viene alterato, e da un altro file che contiene solo le differenze rispetto al modello.

Il file modello usato si trova nella directory di installazione di netkit ($NETKIT_HOME) nella sottodirectory "fs" e si chiama netkit-fs-i386-F5.0.
La dimensione del disco rappresentato da questo file è di 1GB. Troppo poco per i nostri bisogni. Vediamo come ampliarla.

Copiamo, per sicurezza, il file originale.
Con il comando "ls -ls" vediamo sia la dimensione dichiarata che lo spazio effettivo su disco.
I 2 valori differiscono per i cosidetti sparse-file, come le immagini di disco che non sono "piene".

luca@luca-laptop:~$ cp netkit/fs/netkit-fs-i386-F5.0 backing
luca@luca-laptop:~$ ls -ls backing 
1048584 -rw-r--r-- 1 luca luca 1073741824 2009-09-10 15:46 backing

Aumentiamo le dimensioni "dichiarate" del file.

luca@luca-laptop:~$ dd if=/dev/zero of=backing bs=1 count=1 seek=2G
1+0 records in
1+0 records out
1 byte (1 B) copied, 9.9803e-05 s, 10.0 kB/s
luca@luca-laptop:~$ ls -ls backing 
1048588 -rw-r--r-- 1 luca luca 2147483649 2009-09-10 15:47 backing

Espandiamo la partizione che si trova all'interno di questa immagine di disco virtuale.

luca@luca-laptop:~$ sudo losetup /dev/loop0 backing 
luca@luca-laptop:~$ sudo fdisk /dev/loop0

The number of cylinders for this disk is set to 66576.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Il comando u dice che vogliamo vedere come unità il settore e non il cilindro.

Command (m for help): u
Changing display/entry units to sectors

Il comando p mostra le informazioni del disco.

Command (m for help): p

Disk /dev/loop0: 2147 MB, 2147483648 bytes
1 heads, 63 sectors/track, 66576 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *          64     2097143     1048540   83  Linux

Notiamo che la partizione attualmente inizia al settore 64. Dovremo usare in seguito questo valore.
Cancelliamo la partizione e la ricreiamo più grande.
Useremo 64 come inizio e il default come fine.
d per cancellare, n per creare, p per primaria, 1 come partition number, 64 come inizio, invio quando ci chiede la fine.

Command (m for help): d
Selected partition 1

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (63-4194303, default 63): 64
Last sector, +sectors or +size{K,M,G} (64-4194303, default 4194303): 
Using default value 4194303

Il comando p mostra le informazioni del disco.

Command (m for help): p

Disk /dev/loop0: 2147 MB, 2147483648 bytes
1 heads, 63 sectors/track, 66576 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1              64     4194303     2097120   83  Linux

Il comando a rende la partizione bootable, come era prima.

Command (m for help): a
Partition number (1-4): 1

Command (m for help): p

Disk /dev/loop0: 2147 MB, 2147483648 bytes
1 heads, 63 sectors/track, 66576 cylinders, total 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *          64     4194303     2097120   83  Linux

Il comando w salva ed esce.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

Possiamo ignorare quel warning. Ora rimuoviamo l'associazione a /dev/loop0

luca@luca-laptop:~$ sudo losetup -d /dev/loop0

Ora facciamo un calcolo. La nostra partizione inizia al settore 64 e ogni settore (come visualizzato da fdisk) è di 512 bytes.
Quindi la partizione inizia ad un offest di 64*512=32768 bytes.
Associamo a /dev/loop0 questa partizione con il seguente comando.

luca@luca-laptop:~$ sudo losetup --offset 32768 /dev/loop0 backing 

Un fschk, un resize e un nuovo fschk servono per rendere effettiva la nuova allocazione.

luca@luca-laptop:~$ sudo e2fsck -f /dev/loop0
e2fsck 1.41.4 (27-Jan-2009)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 3A: Optimizing directories
Pass 4: Checking reference counts
Pass 5: Checking group summary information

nkfs-i386-F5.0: ***** FILE SYSTEM WAS MODIFIED *****
nkfs-i386-F5.0: 39840/65536 files (2.2% non-contiguous), 725259/1048540 blocks
luca@luca-laptop:~$ sudo resize2fs -f /dev/loop0
resize2fs 1.41.4 (27-Jan-2009)
Resizing the filesystem on /dev/loop0 to 2097120 (1k) blocks.
The filesystem on /dev/loop0 is now 2097120 blocks long.

luca@luca-laptop:~$ sudo e2fsck -f /dev/loop0
e2fsck 1.41.4 (27-Jan-2009)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
nkfs-i386-F5.0: 39840/131072 files (2.2% non-contiguous), 742160/2097120 blocks

Di nuovo rimuoviamo l'associazione a /dev/loop0

luca@luca-laptop:~$ sudo losetup -d /dev/loop0

Installazione pacchetti da Internet

Assicuriamoci di avere la password di root del nostro sistema. Non si tratta della password nostra con la quale possiamo usare "sudo"; ma della password associata a root.
Per accertarci, diamo il comando "su -" che ci richiede appunto la password di root.
Dopo aver verificato, usciamo dalla shell di root e torniamo nella shell del nostro utente.

Nel terminale del nostro sistema, ci posizioniamo su una directory vuota creata per questi test.

Diamo il comando:

  vstart pc1 --eth0=tap,10.0.0.1,10.0.0.2 --mem=64

Viene richiesta la password di root.

Questo modo di avviare la macchina virtuale consente di accedere dalla macchina virtuale a Internet.

E' possibile che sia necessario eseguire anche i seguenti comandi, sempre dal terminale del nostro sistema, per fare in modo che il sistema ospite (virtuale) esca su Internet.

   sudo ifconfig nk_tap_$(whoami) 10.0.0.1 netmask 255.255.255.0 up
   sudo iptables -t nat -A POSTROUTING -s 10.0.0.2 -j MASQUERADE
   sudo iptables -A FORWARD -i nk_tap_+ -j ACCEPT

Ci serve un DNS server per il sistema ospite. Possiamo usare opendns se non sappiamo quale usare. Dentro il sistema ospite modificare il file /etc/resolv.conf per inserire la riga

 nameserver 208.67.222.222

A questo punto dovremmo essere in grado di "navigare" dal sistema ospite. Possiamo provare con "ping www.ubuntu.com".

Se tutto funziona diamo i seguenti comandi per installare alcuni pacchetti necessari.

    apt-get update
    apt-get install build-essential  # N.B. la fase di configurazione dei pacchetti richiede qualche interazione con l'utente
    apt-get install subversion
    apt-get install swig
    apt-get install openssl libssl-dev

Netsukuku/ita/TestWithNetkit (last edited 2010-08-28 14:46:52 by anonymous)