Karmic e remastersys

Posted Novembre 19, 2009 by bancaldo
Categories: Karmic

ho installato remastersys, con i repo tradizionali:

deb http://www.remastersys.klikit-linux.com/repository remastersys/

ho creato la distribuzione e al momento di caricarla con la macchina virtuale (VMWare), ho avuto l’errore

Cannot find initrd.gz.

il problema è dovuto alla presenza di Grub2, in Karmic.
Sul sito ufficiale del progetto, è stato predisposto un repo apposito per karmic.

# Remastersys
deb http://www.geekconnection.org/remastersys/repository karmic/

Una volta inseritolo nel source.list

sudo gedit /etc/apt/source.list

o in caso di kubuntu

sudo kate /etc/apt/source.list

è bastato eseguire un ugrade del pacchetto esistente.

sudo apt-get update
sudo apt-get upgrade

per installarlo da zero invece

sudo apt-get install remastersys

Prima di ricreare la customdist.iso con remastersys, bisogna avere l’accortezza di
andare nel gestore di pacchetti e rimuovere Grub (installatosi con il vecchio repo di remastersys, al momento della sua installazione) e reinstallare
grub-pc. (nel caso di installazione di remastersys da zero con subito i nuovi repo dedicati, non importa)

Ora si può procedere con la ricreazione della distribuzione.

Una volta ricaricata la ISO con VMWare (o VirtualBox):

Ho provato ad installare direttamente al boot:

il tutto è andato a buon fine, senza incorrere nel fastidioso ulteriore problema, della mancata installazione del Grub (al fatidico 94% dell’installazione), che avrebbe precluso il riavvio della distro virtale.

finalmente!

Kubuntu Karmic Hardware drivers: BCM4311 e Nvidia Go 7400

Posted Novembre 16, 2009 by bancaldo
Categories: Karmic, Kubuntu

Ho installato da zero Kubuntu Karmic Koala sul mio Laptop HP DV6215EA

Mi sono accorto che in Hardware drivers non vengono proposti driver per le periferiche in oggetto.
Ovviamente le periferiche sono riconosciute come verificato da

lspci

Per attivare la scheda di rete wi-fi, è necessario installare il pacchetto:
bcmwl-kernel-source

quindi da terminale

sudo apt-get install bcmwl-kernel-source

Dopo aver riavviato la scheda di rete wifi ha funzionato.

 

Per quello che riguarda la scheda video NVIDIA GEForce GO 7400, ho installato il pacchetto
nvidia-glx-185.

Sempre da terminale:

sudo apt-get install nvidia-glx-185

e

sudo nvidia-xconfig

riavviato e anche la scheda video tutto ok.

grub.cfg

Posted Novembre 8, 2009 by bancaldo
Categories: Karmic

questo il mio disco:

sch1

andiamo a leggere il grub.cfg

sudo gedit /boot/grub/grub.cfg

risulta:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s /boot/grub/grubenv ]; then
have_grubenv=true
load_env
fi
set default=”0″
if [ ${prev_saved_entry} ]; then
saved_entry=${prev_saved_entry}
save_env saved_entry
prev_saved_entry=
save_env prev_saved_entry
fi
insmod ext2
set root=(hd0,7)
search –no-floppy –fs-uuid –set f22fb66e-04fc-4407-a00d-82eba9c80555
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640×480
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don’t
# understand terminal_output
terminal gfxterm
fi
fi
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/white
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry “Ubuntu, Linux 2.6.31-14-generic” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,7)
search –no-floppy –fs-uuid –set f22fb66e-04fc-4407-a00d-82eba9c80555
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=f22fb66e-04fc-4407-a00d-82eba9c80555 ro quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry “Ubuntu, Linux 2.6.31-14-generic (recovery mode)” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,7)
search –no-floppy –fs-uuid –set f22fb66e-04fc-4407-a00d-82eba9c80555
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=f22fb66e-04fc-4407-a00d-82eba9c80555 ro single
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry “Ubuntu, Linux 2.6.31-11-generic” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,7)
search –no-floppy –fs-uuid –set f22fb66e-04fc-4407-a00d-82eba9c80555
linux /boot/vmlinuz-2.6.31-11-generic root=UUID=f22fb66e-04fc-4407-a00d-82eba9c80555 ro quiet splash
initrd /boot/initrd.img-2.6.31-11-generic
}
menuentry “Ubuntu, Linux 2.6.31-11-generic (recovery mode)” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,7)
search –no-floppy –fs-uuid –set f22fb66e-04fc-4407-a00d-82eba9c80555
linux /boot/vmlinuz-2.6.31-11-generic root=UUID=f22fb66e-04fc-4407-a00d-82eba9c80555 ro single
initrd /boot/initrd.img-2.6.31-11-generic
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry “Memory test (memtest86+)” {
linux16 /boot/memtest86+.bin
}
menuentry “Memory test (memtest86+, serial console 115200)” {
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry “Microsoft Windows XP Professional (on /dev/sda1)” {
insmod ntfs
set root=(hd0,1)
search –no-floppy –fs-uuid –set 242854b228548528
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the ‘exec tail’ line above.
### END /etc/grub.d/40_custom ###

la parte che interessa l’aggiunta di ulteriori SO, è:

### BEGIN /etc/grub.d/30_os-prober ###
menuentry “Microsoft Windows XP Professional (on /dev/sda1)” {
insmod ntfs
set root=(hd0,1)
search –no-floppy –fs-uuid –set 242854b228548528
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###

diversamente dal vecchio GRUB, il conteggio dell’HD, comincia da 0, mentre il conteggio delle partizioni, comincia da 1.
infatti XP che è sulla prima partizione del primo disco, risulta come:
set root=(hd0,1)

Tyken feat. Awa – Every Word (Dave Spoon Remix)

Posted Novembre 5, 2009 by bancaldo
Categories: music

Cuore Inter: Dinamo Inter 1-2

Posted Novembre 5, 2009 by bancaldo
Categories: Inter

il principe prende la corona!

Grande cuore ragazzi.
alla faccia dei gufacci.
godo.

Karmic Koala: repo Medibuntu

Posted Novembre 2, 2009 by bancaldo
Categories: Karmic

inseriamo i repo di Medibuntu nel source.list

echo deb http://packages.medibuntu.org/ karmic free non-free | sudo tee -a /etc/apt/sources.list

otteniamo la chiave

wget -q http://packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add - && sudo apt-get update

installiamo ad es. libdvdcss2

sudo apt-get install libdvdcss2

Questi i pacchetti disponibili:

# aacgain
# aacplusenc
# acroread-fonts
# alsa-firmware
# amrnb
# amrwb
# app-install-data-medibuntu
# apport-hooks-medibuntu
# gizmo5
# googleearth-data
# googleearth
# hot-babe
# ices
# libamrnb3
# libamrnb-dev
# libamrwb3
# libamrwb-dev
# libdvdcss2
# libdvdcss-dev
# medibuntu-keyring
# non-free-codecs
# realplayer
# rmconverter
# skype-common
# skype
# skype-static
# w32codecs
# w64codecs

NOTA
i w32codecs sono reperibili nel pacchetto non-free-codecs.

Appunti in libertà: MBR ed EBR/CBR

Posted Ottobre 22, 2009 by bancaldo
Categories: Linux, software

Ma che cacchio sono gli EBR??

Approfondendo l’argomento MBR, sono venuto a conoscienza dell’esistenza e dell’importanza degli EBR (extended Boot Record).
In sostanza, quando si effettua il backup del MBR, se l’HD in questione contiene anche una partizione estesa, è necessario fare il backup del primo settore di quest’ultima (EBR), e di tutti i boot record (EBRs) delle partizioni logiche, contenute nell’estesa.

Per definizione, ogni EBR di partizione Logica, sarà costituito da due entries, la prima che punta alla partizione logica in oggetto, la seconda che punta alla partizione logica successiva (se esistente).

Vedremo però nel dettaglio, più avanti.

Essendo molto incuriosito dal fatto EBR-CBR, ed essendomi sempre solo preoccupato di “salvare” il MBR, ho voluto mettere in pratica, quel poco di nozioni acquisite e vedere perchè, effettivamente, sia il caso di fare un backup così approfondito, della struttura dell’HD.

Prima di fare un backup di tutte le partizioni esistenti, ho salvato la struttura dell’HD, su un file di testo.
Tutte queste operazioni sono state effettuate su e da Ubuntu, pertanto si presuppone si abbia confidenza con parole del tipo “terminale”, “sudo” ecc.

Procediamo:

Ho aperto il terminale e dato in successione i comandi:

sudo fdisk -l > fdisk.txt

Aprendo il file risultante fdisk.txt, vado ad elencare la composizione del mio HD:

Disco /dev/sda: 120.0 GB, 120034123776 byte
Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        2731    21936726    7  HPFS/NTFS
/dev/sda2            2732        6445    29832705    7  HPFS/NTFS
/dev/sda3           12770       14593    14651280   83  Linux
/dev/sda4            6446       12769    50797530    5  Esteso
/dev/sda5           12527       12769     1951897+  82  Linux swap / Solaris
/dev/sda6            6446       12525    48837537   83  Linux

Si notano, 3 partizioni primarie (sda1-2-3)
Una partizione estesa (sda4)
2 Partizioni Logiche all’interno (sda5-6)

Cominciamo con l’effettuare il backup del MBR
Creo una directory di appoggio:

sudo mkdir /media/backup

dopodichè faccio il backup vero e proprio

sudo dd if=/dev/sda of=/media/backup/mbr.bup bs=512 count=1

(per le opzioni bs=512 e count=1 di dd, vi lascio consultare la man page di DD) poi il backup dell’EBR

sudo dd if=/dev/sda4 of=/media/backup/ebr.bup bs=512 count=1

e secondo teoria anche i Chained-Boot-Record (le logiche all’interno dell’estesa)

sudo dd if=/dev/sda5 of=/media/backup/cbr1.bup bs=512 count=1
sudo dd if=/dev/sda6 of=/media/backup/cbr2.bup bs=512 count=1

Qui è nato però il mio primo errore, che scopriremo più avanti.
Facciamo un breve riassunto di quanto effettuato e ripassiamo alcuni punti salienti.

Il master boot record (MBR), è il primo settore di un disco (cilindro 0, testina 0, settore 1) e contiene le informazioni necessarie per l’avvio da BIOS, del sistema.

MBR=512bytes

MBRstructure

I primi 446 contengono il Master Boot Program (MBP), cioè le istruzioni da eseguire all’avvio del disco. I successivi 64bytes contengono la master partition table (MPT), cioè le informazioni su come il disco è partizionato.

I rimanenti 2 bytes indicano il master boot signature (MBS) o “magic number” che deve confermare la validità dell’MBR (contengono il valore AA55H, Che con convenzione LittleEndian appariranno come 55 AA) e ne determinano la fine.
Quello che ci interessa quindi è la Master partition table.
Questa MPT (64 bytes dal byte 446 al 509), si suddivide in 4 parti di 16 bytes l’una.

PrimaryPartitionTable

Ognuna di queste “parti” (entry), indica e descrive una partizione primaria.
Ecco perchè possono esserci al massimo 4 partizioni primarie (64 bytes/16) o 3 primarie ed una estesa.

Ogni entry è così suddivisa:

PartitionTableEntry

IMPORTANTE:

Se fra le entry è presente una partizione estesa con all’interno delle partizioni logiche, i dati su queste ultime (logiche) non risiederanno nella master partition table, quindi facendo il backup del solo MBR potremmo perdere queste informazioni!.

Ecco perchè si rende necessario fare un backup dell’EBR.

Quest’ultimo ha una struttura simile al MBR:

EBRStructure

A parte i primi 446 bytes non utilizzati, a differenza del MBR, piccole differenze ci sono anche nella MPT dell’EBR, che è così caratterizzata:

EBRPartitionTable

Quindi si usano solo 2 “slot” della tabella delle partizioni per l’EBR, il primo descrive la prima unità logica della partizione estesa, mentre il secondo, verrà usato, nel caso ci sia una ulteriore partizione logica, come link a quest’ultima.

Facciamo un po’ di pratica.

Ho il backup del MBR, vado quindi ad aprirlo con un editorEsadecimale.

- Analisi MBR

ecco cosa risulta

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
00000000    eb 48 90 d0 bc 00 7c fb 50 07 50 1f fc be 1b 7c
00000010    bf 1b 06 50 57 b9 e5 01 f3 a4 cb bd be 07 b1 04
00000020    38 6e 00 7c 09 75 13 83 c5 10 e2 f4 cd 18 8b f5
00000030    83 c6 10 49 74 19 38 2c 74 f6 a0 b5 07 b4 03 02
00000040    ff 00 00 20 01 00 00 00 00 02 fa 90 90 f6 c2 80
00000050    75 02 b2 80 ea 59 7c 00 00 31 c0 8e 8e d8 8e d0
00000060    00 20 fb a0 40 7c 3c ff 74 02 88 c2 52 be 7f 7d
00000070    e8 34 01 f6 c2 80 74 54 b4 41 bb aa 55 cd 13 5a
00000080    52 72 49 81 fb 55 aa 75 43 a0 41 7c 84 c0 75 05
00000090    83 e1 01 74 37 66 8b 4c 10 be 05 7c c6 44 ff 01
000000a0    66 8b 1e 44 7c c7 04 10 00 c7 44 02 01 00 66 89
000000b0    5c 08 c7 44 06 00 70 66 31 c0 89 44 04 66 89 44
000000c0    0c b4 42 cd 13 72 05 bb 00 70 eb 7d b4 08 cd 13
000000d0    73 0a f6 c2 80 0f 84 ea 00 e9 8d 00 be 05 7c c6
000000e0    44 ff 00 66 31 c0 88 f0 40 66 89 44 04 31 d2 88
000000f0    ca c1 e2 02 88 e8 88 f4 40 89 44 08 31 c0 88 d0
00000100    c0 e8 02 66 89 04 66 a1 44 7c 66 31 d2 66 f7 34
00000110    88 54 0a 66 31 d2 66 f7 74 04 88 54 0b 89 44 0c
00000120    3b 44 08 7d 3c 8a 54 0d c0 e2 06 8a 4c 0a fe c1
00000130    08 d1 8a 6c 0c 5a 8a 74 0b bb 00 70 8e c3 31 db
00000140    b8 01 02 cd 13 72 2a 8c c3 8e 06 48 7c 60 1e b9
00000150    00 01 8e db 31 f6 31 ff fc f3 a5 1f 61 ff 26 42
00000160    7c be 85 7d e8 40 00 eb 0e be 8a 7d e8 38 00 eb
00000170    06 be 94 7d e8 30 00 be 99 7d e8 2a 00 eb fe 47
00000180    52 55 42 20 00 47 65 6f 6d 00 48 61 72 64 20 44
00000190    69 73 6b 00 52 65 61 64 00 20 45 72 72 6f 72 00
000001a0    bb 01 00 b4 0e cd 10 ac 3c 00 75 f4 c3 00 00 00
000001b0    00 00 00 00 00 00 00 00 4f 3d 7d c5 00 00 80 01
000001c0    01 00 07 fe ff ff 3f 00 00 00 ac 74 9d 02 00 00
000001d0    c1 ff 07 fe ff ff eb 74 9d 02 02 6c 8e 03 00 fe
000001e0    ff ff 83 fe ff ff a1 18 3a 0c 20 1f bf 01 00 fe
000001f0    ff ff 05 fe ff ff ed e0 2b 06 b4 37 0e 06 55 aa

Lasciando perdere i primi 446 bytes che non ci interessano, controlliamo la MPT.

L’offset è:

01BEH-01FDH 64 bytes Master partition table

e abbiamo detto che è suddivisa in entry di 16 bytes l’una, così suddivise:

byte Descrizione

0 (446) Indicatore di boot (contiene il valore 80h se la partizione è attiva)
1-3 (447-449) Testina, settore e cilindro del primo blocco della partizione
4 (450) Identificazione del filesystem contenuto nella partizione
5-7 (451-453) Testina, settore e cilindro dell’ultimo blocco della partizione
8-11 (454-457) Numero blocchi prima della partizione
12-15 (458-461) Numero blocchi che costituiscono la partizione

vediamo i valori uno alla volta:

0 Indicatore di boot (contiene il valore 80h se la partizione è attiva)

il byte 0 corrisponde al byte byte446 (da 0-445 non ci interessano adesso)

che appunto in esadecimale corrisponde a 01BE

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001b0    00 00 00 00 00 00 00 00 4f 3d 7d c5 00 00 80 01

All’incrocio 000001bEH per comodità 01BEH ecco il valore 80H

Infatti ritroviamo l’indicativo di partizione attiva.

1-3 Testina, settore e cilindro del primo blocco della partizione

bytes 447-449 ovvero 01BFH-01C1H

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001b0    00 00 00 00 00 00 00 00 4f 3d 7d c5 00 00 80 01

000001c0    01 00 07 fe ff ff 3f 00 00 00 ac 74 9d 02 00 00

risulta 01-01-00 Testina, settore e cilindro

4 Identificazione del filesystem contenuto nella partizione

byte 450 = 01C2H

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001c0    01 00 07 fe ff ff 3f 00 00 00 ac 74 9d 02 00 00

07=File System NTFS evidentemente

non mi interessano francamente i gruppi 5-7 e 8-11.

Mi soffermo sui bytes 12-15 della prima entry:

bytes 458-461 = 01CAH-01CDH

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001c0    01 00 07 fe ff ff 3f 00 00 00 ac 74 9d 02 00 00

risulta AC749D02H.

Ricordandoci la convenzione LittleEndian risulta che i blocchi della partizione sono:

029D74ACH ovvero blocchi=43873452 bytes=22′463′207′424

dividendo per 1024 otteniamo 21′936′726KB

tornando a guardare fdisk.txt

/dev/sda1 * 1 2731 21936726 7 HPFS/NTFS

Il tutto torna perfettamente.

Continuiamo con l’analisi della seconda entry

0 (462) Indicatore di boot (contiene il valore 80h se la partizione è attiva)
1-3 (463-465) Testina, settore e cilindro del primo blocco della partizione
4 (466) Identificazione del filesystem contenuto nella partizione
5-7 (467-469) Testina, settore e cilindro dell’ultimo blocco della partizione
8-11 (470-473) Numero blocchi prima della partizione
12-15 (474-477) Numero blocchi che costituiscono la partizione

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001c0    01 00 07 fe ff ff 3f 00 00 00 ac 74 9d 02 00 00

byte 462=01CEH 00 (la partizione n.2 non è attiva)

tralascio il discorso testine-settori-cilindri

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001d0    c1 ff 07 fe ff ff eb 74 9d 02 02 6c 8e 03 00 fe

il file system al byte 466 (01D2H) è NTFS (07).

controlliamo i blocchi ai bytes 474-477 (01DAH-01DDH)

026C8E03 ovvero 038E6C02H=59665410 blocchi *512/1024= 29′832′705KB

/dev/sda2 2732 6445 29832705 7 HPFS/NTFS

Proseguiamo con la terza entry

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001d0    c1 ff 07 fe ff ff eb 74 9d 02 02 6c 8e 03 00 fe
000001e0    ff ff 83 fe ff ff a1 18 3a 0c 20 1f bf 01 00 fe

01DEH=00 Partizione non attiva
01E2H=83 File system Ext3
01EAH-01EDH n. blocchi 201FBF01= 01BF1F20 = 14′651′280KB

Ed ora eccoci al punto saliente.

Analizziamo la partizione estesa.

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001e0    ff ff 83 fe ff ff a1 18 3a 0c 20 1f bf 01 00 fe
000001f0    ff ff 05 fe ff ff ed e0 2b 06 b4 37 0e 06 55 aa

01EEH=00 Partizione non attiva (ci mancherebbe)
01F2H=05 identificazione partizione estesa
01FAH-01FDH n. blocchi B4370E06= 060E37B4 = 50′797′530KB

Tutto torna, ma di come sia strutturata l’estesa nemmeno l’ombra.

Andiamo ad aprire quindi l’EBR.

- Analisi EBR

riassunto struttura

EBRStructure

Ogni entry:

Offset        Length(in bytes)     Contenuto
01BEH - 01CDH    16            Descrizione Partizione Logica
01CEH - 01DDH    16            Se è presente, link alla partizione logica sucessiva
01DEH - 01FDH    32            Normalmente non usata
offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
00000000    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000010    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000020    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000030    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000040    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000050    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000060    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000070    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000080    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000090    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000a0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000b0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000c0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000d0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000e0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000000f0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000100    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000110    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000120    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000130    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000140    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000150    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000160    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000170    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000180    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000190    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000001a0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000001b0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe
000001c0    ff ff 82 fe ff ff 81 a6 d2 05 33 91 3b 00 00 fe
000001d0    ff ff 05 fe ff ff 01 00 00 00 bf 67 d2 05 00 00
000001e0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000001f0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa

effettivamente 0000H-01BDH (446 bytes) NON SONO UTILIZZATI

Controlliamo l’MPT (01BEH-01FDH):

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001b0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe
000001c0    ff ff 82 fe ff ff 81 a6 d2 05 33 91 3b 00 00 fe
000001d0    ff ff 05 fe ff ff 01 00 00 00 bf 67 d2 05 00 00
000001e0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000001f0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa

la prima entry:

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001b0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe
000001c0    ff ff 82 fe ff ff 81 a6 d2 05 33 91 3b 00 00 fe

analizzando la entry come in precedenza:

0 (446) Indicatore di boot (contiene il valore 80h se la partizione è attiva)
1-3 (447-449) Testina, settore e cilindro del primo blocco della partizione
4 (450) Identificazione del filesystem contenuto nella partizione
5-7 (451-453) Testina, settore e cilindro dell’ultimo blocco della partizione
8-11 (454-457) Numero blocchi prima della partizione
12-15 (458-461) Numero blocchi che costituiscono la partizione

01BEH=00 Partizione non attiva (ci mancherebbe)
01C2H=82 File-system Linux-swap
01CAH-01CDH n. blocchi 33913B00= 003B9133 = 1′951′897.5KB

infatti eccola

/dev/sda5 12527 12769 1951897+ 82 Linux swap / Solaris

Come volevasi dimostrare queste info, nel MBR non c’erano.
Ora dovremmo trovare la novità, la seconda entry, dovrebbe essere il link alla seconda partizione logica (all’interno dell’estesa), se esistente.

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001c0    ff ff 82 fe ff ff 81 a6 d2 05 33 91 3b 00 00 fe
000001d0    ff ff 05 fe ff ff 01 00 00 00 bf 67 d2 05 00 00

01CEH=00 Partizione non attiva (ci mancherebbe)
01D2H=05 Partizione Estesa PADRE alla quale è linkata!!
01DAH-01DDH n. blocchi BF67D205= 05D267BF = 48′837′537KB

ecco il link alla partizione logica successiva!!

che sarà:

/dev/sda6 6446 12525 48837537 83 Linux

Quindi riassumendo, nell’EBR, si definisce la partizione a cui si sta puntando, ma anche la partizione successiva, creando una “catena”. A sua volta nella partizione “successiva”, ci sarà un EBR che, nella prima entry definirà tale partizione, e nella seconda entry, quella successiva e così via.
Per questo motivo, tali EBR annidati, vengono chiamati CBR (chained-boot-record).

Come si nota infine gli ultimi 32 bytes, non vengono utilizzati:

offset      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
000001e0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000001f0    00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa

con ultimi 2 bytes riempiti dal “MagicNumber” a chiusura del blocco, come un comune MBR.
Tutta questa analisi per concludere, che, volendo essere premurosissimi, oltre al backup del MBR, è bene fare anche quello dell’EBR e di tutti gli EBRs/CBRs annidati all’interno dell’EBR principale.

Se per l’MBR si utilizza

sudo dd if=/dev/sda of=/media/backup/mbr.bup bs=512 count=1

per l’ebr, si controlla con fdisk il numero della partizione estesa

/dev/sda4 6446 12769 50797530 5 Esteso

quindi:

sudo dd if=/dev/sda4 of=/media/backup/ebr.bup bs=512 count=1

Questo metodo funziona SOLO con 2 partizioni logiche all’interno dell’estesa, inquanto le stesse sono definite dal solo EBR principale, inquanto sulla prima entry è definita la prima partizione logica, nella seconda entry, la logica successiva.
Non c’è bisogno quindi di fare il backup dell’EBR/CBR annidato.

Più complesso è invece quando le partizioni all’interno di una estesa, sono numerose.

Questa è ad esempio la situazione del mio desktop

fdisk

finchè si tratta di salvare l’EBR di sda2, non ci sono problemi:

dd1

se però facciamo la stessa cosa con sda5 ed sda6, ci accorgiamo che l’output non riguarda l’EBR (primi 446 bytes vuoti e MPT), ma altro.

dd2

in un EBR, infatti, i primi 446 bytes dovrebbero essere inutilizzati.
Questo è causato dagli offset dei quali non abbiamo tenuto conto.
Ogni partizione logica all’interno di una estesa, ha 1 settore occupato dal proprio EBR e 63 settori non utilizzati situati tra l’EBR che la definisce e la partizione stessa.
Quindi se dovessimo usare il comando dd per puntare alla terza partizione logica, all’interno dell’estesa, dovremmo escludere i 63 settori dell’interspazio EBR-partizione.

Qui una immagine di come è strutturata la mia partizione estesa SDA2:

desktop

Possiamo riassumere il comportamento degli EBR così:

Nella partition table di EBR, la prima entry punterà ad sda5, mentre la seconda entry a EBR2.
Nella partition table di EBR2, la prima entry punterà ad sda6, mentre la seconda entry a EBR3.
Nella partition table di EBR3, la prima entry punterà ad sda7, mentre la seconda entry a EBR4.
Nella partition table di EBR4, la prima entry punterà ad sda8, mentre la seconda entry a EBR5.
Nella partition table di EBR5, la prima entry punterà ad sda9, mentre la seconda entry a EBR6.
Nella partition table di EBR6, la prima entry punterà ad sda10, mentre la seconda entry VUOTA.

Per conoscere gli’offsets corretti, e poter effettuare un backup corretto di tutti gli EBRs/CBRs annidati ho utilizzato quindi lo sleuthkit.
Per questo motivo, RINGRAZIO APERTAMENTE l’autore del KIT Brian Carrier
e questa guida esaustiva di DenisFrati
(che mi ha permesso di sbrogliare la matassa delle partizioni logiche).

Quindi prima ho scaricato ed installato lo sleuthkit.

./configure
make
sudo makeinstall

Non mi soffermerò sulla compilazione.
poi ho utilizzato il tool mmls (compreso nello SleuthKit) con il comando

sudo mmls /dev/sda

(consultare la man page)

mmls

con questo tool, vengono elencati tutti boot record delle partizioni logiche.
E nella voce start, vediamo l’offset di settore.
Prendiamo ad esempio la partition table della logica numero 3.

dd3

Questa è una partition table corretta.
Possiamo usare il comando

sudo dd if=/dev/sda skip=OFFSETSECTOR bs=512 count=1 |xxd

per controllare la partition table (al posto di offsetsector, si mette lo start-sector della partition table) poi con questo comando, si salva ogni EBR/CBR della partizione logica:

sudo dd if=/dev/sda of=/PERCORSO/FILE.BACKUP skip=START_SECTOR_OF_EBR bs=512 count=1

Questo è quanto si deve fare, per effettuare un backup completo di tutta l’architettura del nostro HD.
Non limitarsi quindi al solo backup del MBR, ma di tutti i boot sector delle partizioni logiche, elencate con il tool
mmls.

sudo dd if=/dev/sda of=/media/backup/ebr1 skip=40965750 bs=512 count=1
sudo dd if=/dev/sda of=/media/backup/ebr2 skip=143364060 bs=512 count=1
sudo dd if=/dev/sda of=/media/backup/ebr3 skip=552957300 bs=512 count=1
sudo dd if=/dev/sda of=/media/backup/ebr4 skip=572492340 bs=512 count=1
sudo dd if=/dev/sda of=/media/backup/ebr5 skip=576396135 bs=512 count=1
sudo dd if=/dev/sda of=/media/backup/ebr6 skip=967016673 bs=512 count=1

Infine una volta immagazzinati tutti i dati (compreso un report di fdisk-l), portare tutto su chiavetta.
Ovviamente non tenere i backup sullo stesso HD.

NFS: condivisione file

Posted Ottobre 19, 2009 by bancaldo
Categories: Linux

appunti…

Ho una rete casalinga composta da Laptop e Desktop, entrambi con Ubuntu installato.
Devo condividere files, dal primo verso il secondo.

Comincio con il configurare il lato Server, che nel mio caso è rappresentato dal Laptop.

LATO SERVER

Apro una finestra terminale ed installo il nesessario:

sudo apt-get install nfs-kernel-server

I comandi per controllare il demone nfs-kernel-server sono:

/etc/init.d/nfs-kernel-server start|stop|restart|status

Nota:

sarebbe bene impostare un IP statico lato server, per non dover riconfigurare ogni volta,
il lato client, ad ogni cambio di IP-server.

Per il mio caso, il server avrà IP: 192.168.2.2

Le directories che devono essere condivise, vanno inserite nel file etc/exports.
Aprire suddetto file e se non esiste, crearlo.

sudo gedit /etc/exports

All’interno di questo file, va inserita una riga, per ogni directory che si vuole condividere,
con la seguente sintassi:

/Dir_Da_Condividere IP_client(rw,sync)

/Dir_Da_Condividere (no comment)
Ip_client è l’indirizzo IP del client (il PC che vuole attingere dal Server)
rw sono i diritti in lettura-scrittura assegnati al client, modificabili in ro (sola lettura)
Sync forza la scrittura dei dati appena questi arrivano al server

es.

/mnt/Data/shared 192.168.2.3(rw,sync)

nel caso volessimo estendere l’accesso a tutti i client di rete:

/mnt/Data/shared 192.168.2.0/24(rw,sync)

Una volta configurato il file, esportare le condivisioni con il comando

sudo exportfs -ra

Effettuare il comando dopo ogni modifica.

AVANZATE

Per definire gli accessi al server, in maniera più dettagliata, si possono configurare i file
/etc/host.allow
/etc/host.deny

Per evitare che chiunque possa accedere al server, editare il file /etc/host.deny

sudo gedit /etc/hosts.deny

ed aggiungere

portmap mountd nfsd statd lockd rquotad : ALL

poi editare /etc/host.allow

sudo gedit /etc/hosts.allow

e inserire

portmap mountd nfsd statd lockd rquotad : 192.168.2.2 192.168.2.3 192.168.2.10

NOTA:

inserire in quest’ultimo anche l’IP del server.

In questo modo consentiamo l’accesso al server, solo agli IP: 192.168.2.3 e 192.168.2.10

Anche in questo caso, riavviare i servizi NFS

sudo /etc/init.d/nfs-kernel-server restart

e PORTMAP

sudo /etc/init.d/portmap restart

se al contraio volessi consentire l’accesso al server a tutti gli IP della rete,
ma negarli solo ad alcuni, nel file /etc/hosts.allow metterò:

portmap mountd nfsd statd lockd rquotad : ALL

mentre nel /etc/hosts.deny

portmap mountd nfsd statd lockd rquotad : 192.168.2.5 192.168.2.25

nell’es. gli IP 192.168.2.5 e 192.168.2.25 non potranno accedere al server

Ricordarsi come nel caso precedente di riavviare i servizi NFS e PORTMAP.

LATO CLIENT

Installiamo i pacchetti necessari:

sudo apt-get install portmap nfs-common

Per la sicurezza configuriamo i file hosts.allow e hosts.deny

sudo gedit /etc/hosts.deny

mettiamo quanto segue:

portmap : ALL

poi

sudo gedit /etc/hosts.allow

aggiungendo l’IP del server con la sintassi:

portmap : 192.168.2.2

Ora creiamo una directory per il punto di mount della condivisione

sudo mkdir /media/nfsshared

e montiamo con

sudo mount -t nfs 192.168.2.2:/mnt/Data/shared /media/nfsshared

se è tutto ok, possiamo inserire il montaggio in /etc/fstab:

sudo gedit /etc/fstab

inserisco

192.168.2.2:/mnt/Data/shared /media/nfsshared nfs rw,users,noauto 0 0

dove

192.168.2.2:/mnt/Data/shared è la cartella condivisa, sul server
/media/nfsshared è la directory, dove verrà montata la condivisione
nfs è il tipo di filesystem
rw diritti di lettura e scrittura per il client (modificabile in ro)
users gli users possono montare la condivisione
noauto il montaggio non avviene automaticamente al boot comodo se la risorsa del server non è sempre disponibile.

(per le opzioni disponibili, consultare la manpage di mount)

in funzione di quest’ultima opzione (noauto), basterà digitare

mount /mnt/nfs

per montare la condivisione, senza l’intera sintassi.

NOTA:

con il comando nfsstat si possono verificare le risore condivise sulla rete.

Ogni consiglio e/o suggerimento, è ben accetto….anzi.

Backup del MBR con CDLive e dd

Posted Ottobre 16, 2009 by bancaldo
Categories: Linux

Prima di installare Karmic, avendo già XP installato sulla prima partizione
del disco, ho fatto un Backup del MBR.

Utile nel caso debba ripristinare il MBR di XP in assenza del CD di XP e quindi
della console di ripristino (fixboot e fixmbr).

Avvio da CD con la LiveCD di Karmic (o di qualsiasi altra distro live)

Apro un terminale

Monto la partizione Dati presente sull’HD (ho sempre la partizione Dati separata dall’OS di XP)

Nel mio caso con il comando

mount

verifico il corretto mountpoint della partizione “di appoggio”

/media/Volume

con

sudo fdisk -l

Confermo il nome del primo HD (sda)

dopo dichè eseguo il backup del MBR.

dd if=/dev/sda of=/media/Volume/MBR-XP bs=512 count=1

Nota:

bs=512

indica che faremo una copia di backup, solo dei primi 512Bytes
(dove risiede il MBR)

Per il ripristino:

dd if=/media/Volume/MBR-XP of=/dev/sda bs=512 count=1

Appena finito di installare la mia Distro in Dual-boot, con lo stesso
procedimento farò il backup del MBR.

Link utili:


dd

master boot record

Ubuntu 9.10

Posted Ottobre 7, 2009 by bancaldo
Categories: Linux

ancora 22 giorni, da oggi…

Ubuntu: For Desktops, Servers, Netbooks and in the cloud

come GODO!

Posted Agosto 30, 2009 by bancaldo
Categories: Inter

Thiago MOTTA

Diego MILITO

MAICON

Dejan STANKOVIC

tutti a casa.

grazie di cuore.

Fantalega 2009-2010

Posted Agosto 28, 2009 by bancaldo
Categories: Fantacalcio

ALBO D’ORO FANTALEGA

2006-2007 STELLA BLU KATIVERIA
2007-2008 PIPPO
2008-2009 MIDDLESBORON

ALBO D’ORO FANTACHAMPIONS

2006-2007 NIZZI
2007-2008 PIPPO
2008-2009 PIPPO

Data ASTA:

venerdì 04 Settembre ore 21.00

n. Squadre: 10

TEAMS:

MiddleSboron (CAMPIONE IN CARICA)
Stella Blu Kativeria (VICECAMPIONE)
Italia 90
Boy san
Benfica
Cioppersson
Omar F.CLub
Gnagna
Pippo
Stoccalda

Link Utili:

file statistiche giocatori stagione 2009-2010 (COMPRESSO)
file stagione 2009-2010 (COMPRESSO)

File Statistiche giocatori (formato EXCEL)

File Stagione 2009-2010 (formato EXCEL)

CLASSIFICA FANTALEGA

Boy San 24
MiddleSboron 24
Gnagna 18
Stoccalda 18
Pippo 17
16574 16
Cioppersson 15
Benfica 15
Stella Blu Kativeria 13
Omar F.Club 6

CLASSIFICA CHAMPIONS

REGOLAMENTO:

ROSA E FORMAZIONE

Rosa

La rosa di una fantasquadra è composta da 25 calciatori, così divisi:

3 Portieri
8 Difensori
8 Centrocampisti
6 Attaccanti

Formazione titolare, panchina e tribuna

moduli ammessi:

3-4-3; 4-3-3; 5-3-2; 6-3-1; 4-4-2; 5-4-1; 4-5-1; 3-5-2

in caso di assenza di un titolare e delle rispettive riserve, si applicherà il cambio di modulo.

Attenzione!

in caso di assenza di un attaccante, saliranno rispettivamente prima un ccampista e solo in caso di assenza di questultimo, un difensore (es. 343 diventa 352 e non 442 …)

in caso di assenza di un difensore, prima i ccampisti e solo per ultimo un attaccante
(es. 532 diventa 442 e non 433)

PUNTEGGIO

La Gara

Bonus Malus

+3 punti per ogni gol segnato ( anche se il gol è su rigore ), -3 punti per un rigore sbagliato
+3 punti per ogni rigore parato dal portiere (o da chi ne fa le veci), -2 punti per ogni autorete
+1 per ogni assist effettuato
-1 punto per ogni gol subito dal portiere (o da chi ne fa le veci)
-1 punto per ogni espulsione
-0,5 punti per ogni ammonizione

FASCIA di punti

Meno di 66 punti 0
66 punti 1
72 punti 2
78 punti 3
84 punti 4
90 punti 5
96 punti 6
E così via (ogni 6 punti un gol).

Differenza di 4 pts, nella stessa fascia, 1 goal (es. 70-66 = 2-1)
Differenza di 10 pts ulteriore goal (es 76-66 = 3-1)
Punteggio minore di 60, 1 autogoal.

CASI PARTICOLARI

Portiere senza voto

Nel caso che un portiere che ha regolarmente giocato venga giudicato s.v.(senza voto) o n.g. (non giudicabile), gli verrà assegnato d’ufficio un voto equivalente a 6

Calciatore senza voto

Nel caso un calciatore che non sia il portiere venga giudicato s.v. o n.g., esso verrà considerato assente e dovrà essere sostituito.

Espulso senza voto

Nel caso un calciatore venga espulso prima di poter essere giudicato, cioè termini la gara senza voto, verrà comunque considerato giocatore titolare e gli verrà assegnato d’ufficio un 4 come punteggio.

Ammonito senza voto

Nel caso un calciatore venga ammonito prima di poter essere giudicato, cioè termini la gara senza voto, non verrà comunque considerato giocatore titolare e subentrerà la riserva in quel ruolo.

Marcatore senza voto

Nel caso un calciatore segni un gol ma non venga giudicato, gli verrà assegnato d’ufficio un 6 come Voto, al quale si dovrà ovviamente aggiungere +3 per la marcatura.

Autogol senza voto

Nel caso un calciatore sia responsabile di un autogol ma non venga giudicato, gli verrà assegnato d’ufficio un 6 come Voto, al quale si dovranno ovviamente sottrarre 2 punti per l’autogol.

Sostituzione del portiere con calciatore di movimento

Nel caso che il portiere venga espulso e sostituito da un calciatore di movimento, questi, diventando portiere, ne assumerà il ruolo e gli verrà assegnato regolarmente meno un punto (-1) per ogni gol subito e più tre punti (+3) per ogni rigore parato.

Rigore calciato senza voto

Nel caso un giocatore calci un rigore (indipendentemente dal fatto che lo realizzi o lo sbagli), ma non venga giudicato, gli verrà assegnato d’ufficio un 6 come Voto, al quale si dovranno ovviamente aggiungere 2 punti se il penalty è stato realizzato o sottrarre 3 punti se è stato sbagliato.

Partita sospesa o rinviata o decisa ‘a tavolino’

Se una partita viene sospesa o rinviata per maltempo, impraticabilità del campo, ecc., la fantagiornata verrà ‘congelata’, in attesa del recupero e dei voti in pagella dei calciatori coinvolti nella partita posticipata. Se una partita viene decisa a tavolino e non si hanno voti nel tabellino ufficiale, tutti i calciatori scesi in campo e che hanno giocato almeno 30 minuti, ricevono un 6 d’ufficio più tutti i bonus e i malus maturati in partita. Agli altri giocatori scesi in campo si applicano le norme previste per i calciatori non valutati (‘senza voto’). Nel caso in cui la partita venga sospesa prima del 30′, riceveranno il 6 d’ufficio e i bonus/malus solo i giocatori in campo al momento della sospensione, gli altri si considereranno s.v.

SCAMBI TRA SQUADRE (modificabile)

Illimitati tra fantaallenatori

Non è possibile riacquisire un giocatore ceduto, nemmeno per vie traverse.

Non sono consentiti oltre il termine del reale mercato/asta di riparazione

CALENDARIO

giornata    1

16574    Benfica 3-0
Omar F.CLub    Boy san 2-2
Stella Blu Kativeria    Pippo 4-0
Cioppersson    Gnagna 0-0
MiddleSboron    Stoccalda 3-0

giornata    2

Boy san    16574 3-0
Gnagna    MiddleSboron 1-1
Pippo    Cioppersson 1-0
Benfica    Stella Blu Kativeria 2-2
Stoccalda    Omar F.CLub 3-1

giornata    3

16574    Stoccalda 0-4
Omar F.CLub    Gnagna 2-1
Stella Blu Kativeria    Boy san 1-4
Benfica    Pippo 0-0
MiddleSboron    Cioppersson 3-3

giornata    4

Boy san    Benfica 0-1
Cioppersson    Omar F.CLub 1-0
Gnagna    16574 1-2
Pippo    MiddleSboron 0-1
Stoccalda    Stella Blu Kativeria 0-1

giornata    5

16574    Cioppersson 0-1
Omar F.CLub    MiddleSboron 1-2
Boy san    Pippo 1-0
Stella Blu Kativeria    Gnagna 3-2
Benfica    Stoccalda 0-1

giornata    6

Cioppersson    Stella Blu Kativeria 1-1
Gnagna    Benfica 3-2
Pippo    Omar F.CLub 4-0
Stoccalda    Boy san 0-4
MiddleSboron    16574 2-1

giornata    7

16574    Omar F.CLub 4-0
Boy san    Gnagna 0-3
Stella Blu Kativeria    MiddleSboron 0-3
Benfica    Cioppersson 1-0
Stoccalda    Pippo 1-5

giornata    8

16574    Pippo 2-2
Omar F.CLub    Stella Blu Kativeria 1-1
Cioppersson    Boy san 2-2
Gnagna    Stoccalda 2-1
MiddleSboron    Benfica 3-0

giornata    9

Boy san    MiddleSboron 1-0
Stella Blu Kativeria    16574 0-1
Pippo    Gnagna 1-0
Benfica    Omar F.CLub 0-0
Stoccalda    Cioppersson 3-2

giornata    10

Benfica    16574 0-4
Boy san    Omar F.CLub 2-1
Pippo    Stella Blu Kativeria 2-0
Gnagna    Cioppersson 1-1
Stoccalda    MiddleSboron 0-1

giornata    11

16574    Boy san 1-3
MiddleSboron    Gnagna 1-5
Cioppersson    Pippo 1-0
Stella Blu Kativeria    Benfica 1-2
Omar F.CLub    Stoccalda 1-4

giornata    12

Stoccalda    16574 2-1
Gnagna    Omar F.CLub 1-0
Boy san    Stella Blu Kativeria 1-1
Pippo    Benfica 0-1
Cioppersson    MiddleSboron 1-1

giornata    13

Benfica    Boy san
Omar F.CLub    Cioppersson
16574    Gnagna
MiddleSboron    Pippo
Stella Blu Kativeria    Stoccalda

giornata    14

Cioppersson    16574
MiddleSboron    Omar F.CLub
Pippo    Boy san
Gnagna    Stella Blu Kativeria
Stoccalda    Benfica

giornata    15

Stella Blu Kativeria    Cioppersson

Benfica    Gnagna
Omar F.CLub    Pippo
Boy san    Stoccalda
16574    MiddleSboron

giornata    16

Omar F.CLub    16574
Gnagna    Boy san
MiddleSboron    Stella Blu Kativeria
Cioppersson    Benfica
Pippo    Stoccalda

giornata    17

Pippo    16574
Stella Blu Kativeria    Omar F.CLub
Boy san    Cioppersson
Stoccalda    Gnagna
Benfica    MiddleSboron

giornata    18

MiddleSboron    Boy san
16574    Stella Blu Kativeria
Gnagna    Pippo
Omar F.CLub    Benfica
Cioppersson    Stoccalda

giornata    19

16574    Benfica
Omar F.CLub    Boy san
Stella Blu Kativeria    Pippo
Cioppersson    Gnagna
MiddleSboron    Stoccalda

giornata    20

Boy san    16574
Gnagna    MiddleSboron
Pippo    Cioppersson
Benfica    Stella Blu Kativeria
Stoccalda    Omar F.CLub

giornata    21

16574    Stoccalda
Omar F.CLub    Gnagna
Stella Blu Kativeria    Boy san
Benfica    Pippo
MiddleSboron    Cioppersson

giornata    22

Boy san    Benfica
Cioppersson    Omar F.CLub
Gnagna    16574
Pippo    MiddleSboron
Stoccalda    Stella Blu Kativeria

giornata    23

16574    Cioppersson
Omar F.CLub    MiddleSboron
Boy san    Pippo
Stella Blu Kativeria    Gnagna
Benfica    Stoccalda

giornata    24

Cioppersson    Stella Blu Kativeria
Gnagna    Benfica
Pippo    Omar F.CLub
Stoccalda    Boy san
MiddleSboron    16574

giornata    25

16574    Omar F.CLub
Boy san    Gnagna
Stella Blu Kativeria    MiddleSboron
Benfica    Cioppersson
Stoccalda    Pippo

giornata    26

16574    Pippo
Omar F.CLub    Stella Blu Kativeria
Cioppersson    Boy san
Gnagna    Stoccalda
MiddleSboron    Benfica

giornata    27

Boy san    MiddleSboron
Stella Blu Kativeria    16574
Pippo    Gnagna
Benfica    Omar F.CLub
Stoccalda    Cioppersson

giornata    28

Benfica    16574
Boy san    Omar F.CLub
Pippo    Stella Blu Kativeria
Gnagna    Cioppersson
Stoccalda    MiddleSboron

giornata    29

16574    Boy san
MiddleSboron    Gnagna
Cioppersson    Pippo
Stella Blu Kativeria    Benfica
Omar F.CLub    Stoccalda

giornata    30

Stoccalda    16574
Gnagna    Omar F.CLub
Boy san    Stella Blu Kativeria
Pippo    Benfica
Cioppersson    MiddleSboron

giornata    31

Benfica    Boy san
Omar F.CLub    Cioppersson
16574    Gnagna
MiddleSboron    Pippo
Stella Blu Kativeria    Stoccalda

giornata    32

Cioppersson    16574
MiddleSboron    Omar F.CLub
Pippo    Boy san
Gnagna    Stella Blu Kativeria
Stoccalda    Benfica

giornata    33

Stella Blu Kativeria    Cioppersson
Benfica    Gnagna
Omar F.CLub    Pippo
Boy san    Stoccalda
16574    MiddleSboron

giornata    34

Omar F.CLub    16574
Gnagna    Boy san
MiddleSboron    Stella Blu Kativeria
Cioppersson    Benfica
Pippo    Stoccalda

giornata    35

Pippo    16574
Stella Blu Kativeria    Omar F.CLub
Boy san    Cioppersson
Stoccalda    Gnagna
Benfica    MiddleSboron

giornata    36

MiddleSboron    Boy san
16574    Stella Blu Kativeria
Gnagna    Pippo
Omar F.CLub    Benfica
Cioppersson    Stoccalda

Linux: primi passi con UDEV

Posted Luglio 15, 2009 by bancaldo
Categories: Linux

Ho cominciato ad addentrarmi nei meandri di udev.
Questo il mio primo esercizio:
Dare un nome personalizzato ad un dispositivo usb, quando questo viene connesso.
Nel mio caso si tratta di una “chiavetta” da 2GB.

Il primo passo, dopo aver collegato il dispositivo USB, è consultare il log
degli eventi, per reperirne il “nome” assegnato da udev:

dmesg | tail

banco@banco-desktop:~$ dmesg | tail
[21250.708573] sd 3:0:0:0: [sdb] Write Protect is off
[21250.708609] sd 3:0:0:0: [sdb] Mode Sense: 00 00 00 00
[21250.708649] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[21250.880267] sd 3:0:0:0: [sdb] 3948543 512-byte hardware sectors: (2.02 GB/1.88 GiB)
[21250.927174] sd 3:0:0:0: [sdb] Write Protect is off
[21250.927179] sd 3:0:0:0: [sdb] Mode Sense: 00 00 00 00
[21250.927182] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[21250.927317] sdb: sdb1
[21251.070137] sd 3:0:0:0: [sdb] Attached SCSI removable disk
[21251.070746] sd 3:0:0:0: Attached scsi generic sg2 type 0

sdb è la nostra chiavetta, che, come si noterà, verrà montata molto genericamente così:

/dev/sdb1 on /media/disk type vfat (rw,nosuid,nodev,uhelper=hal,shortname=mixed,uid=1000,utf8,umask=077,flush)

sdb1 è il nome che assume qualsiasi dispositivo di archiviazione di massa usb, quando viene inserito per primo e
media/disk è il punto di mount generico assegnatogli.
Questo è scomodo per chi ha più dispositivi usb e deve accedere ai dati contenuti in essi,
tramite software e link vari, sopratutto se l’ordine di inserimento (e di riconoscimento) dei dispositivi
viene modificato.

Ecco perchè come esercizio, ho deciso di “fissare” nome (/dev/xxxx) e mount-point

Ora si può utilizzare udevadm per aver maggiori dati sul dispositivo in questione.
(per maggiori informazioni sul comando, consultare la man-page: man udevadm)

udevadm info --query=env --name=sdb1

banco@banco-desktop:~$ udevadm info –query=env –name=sdb1
UDEV_LOG=3
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1:1.0/host3/target3:0:0/3:0:0:0/block/sdb/sdb1
MAJOR=8
MINOR=17
DEVTYPE=partition
DEVNAME=/dev/sdb1
ID_VENDOR=PEAK_III
ID_VENDOR_ENC=PEAK\x20III
ID_VENDOR_ID=1307
ID_MODEL=Flash_Drive
ID_MODEL_ENC=Flash\x20Drive\x20\x20\x20\x20\x20
ID_MODEL_ID=0163
ID_REVISION=0.00
ID_SERIAL=PEAK_III_Flash_Drive_182212a6a5358c-0:0
ID_SERIAL_SHORT=182212a6a5358c
ID_TYPE=disk
ID_INSTANCE=0:0
ID_BUS=usb
ID_USB_INTERFACES=:080650:
ID_USB_INTERFACE_NUM=00
ID_USB_DRIVER=usb-storage
ID_PATH=pci-0000:00:07.2-usb-0:1:1.0-scsi-0:0:0:0
ID_FS_USAGE=filesystem
ID_FS_TYPE=vfat
ID_FS_VERSION=FAT16
ID_FS_UUID=0000-00CB
ID_FS_UUID_ENC=0000-00CB
DEVLINKS=/dev/block/8:17 /dev/disk/by-id/usb-PEAK_III_Flash_Drive_182212a6a5358c-0:0-part1 /dev/disk/by-path/pci-0000:00:07.2-usb-0:1:1.0-scsi-0:0:0:0-part1 /dev/disk/by-uuid/0000-00CB

Altrimenti, per una ricerca ancor più dettagliata:

udevadm info -a -n /dev/sdb1

banco@banco-desktop:~$ udevadm info -a -n /dev/sdb1

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device ‘/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1:1.0/host3/target3:0:0/3:0:0:0/block/sdb/sdb1′:
KERNEL==”sdb1″
SUBSYSTEM==”block”
DRIVER==”"
ATTR{partition}==”1″
ATTR{start}==”63″
ATTR{size}==”3948480″
ATTR{stat}==” 140 2826 4022 4596 1 1 2 12 0 3676 4608″

looking at parent device ‘/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1:1.0/host3/target3:0:0/3:0:0:0/block/sdb’:
KERNELS==”sdb”
SUBSYSTEMS==”block”
DRIVERS==”"
ATTRS{range}==”16″
ATTRS{ext_range}==”256″
ATTRS{removable}==”1″
ATTRS{ro}==”0″
ATTRS{size}==”3948543″
ATTRS{capability}==”53″
ATTRS{stat}==” 146 3036 4238 5340 1 1 2 12 0 4000 5352″

looking at parent device ‘/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1:1.0/host3/target3:0:0/3:0:0:0′:
KERNELS==”3:0:0:0″
SUBSYSTEMS==”scsi”
DRIVERS==”sd”
ATTRS{device_blocked}==”0″
ATTRS{type}==”0″
ATTRS{scsi_level}==”3″
ATTRS{vendor}==”PEAK III”
ATTRS{model}==”Flash Drive “

……

Soffermiamoci sulla sezione contenente SUBSYSTEMS==”scsi”

adesso creo il file con le mie regole personalizzate.
Ricordo che udev legge le regole in ordine alfabetico e che le regole devono avere una combinazione di MATCH e di ASSIGNMENTS
E’ di uso comune creare nella cartella /etc/udev/rules.d
il file 10-local.rules (che avrà priorità sulel altre regole con quella numerazione),

(per maggiori info su questi ultimi, consultare la man-page di udev)

sudo gedit /etc/udev/rules.d/10-local.rules

all’interno del quale inseriremo i match e gli assignments prima citati.

KERNEL=="sd?1", SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{vendor}=="PEAK III", NAME="hd_Peak3", SYMKINK+="usbHD%1"

dove

KERNEL, SUBSYSTEM, DRVERS, ATTRS{vendor}

sono i match riconoscibili da ==, ovvero udev cerca la corrispondenza di tali valori e solo se verificati tutti, darà i nostri assegnamenti, nel nostro caso, il nome al /dev

NAME="hd_Peak3"

e creerà un link a tale dispositivo

SYMKINK+="usbHD%1"

(ricordo di consultare la man-page)

una volta salvato il file-regola e riavviato udev con il comando

sudo /etc/init.d/udev restart

smontiamo e riconnettiamo il dispositivo usb e verifichiamo con mount:

/dev/hd_Peak3 on /media/disk type vfat (rw,nosuid,nodev,uhelper=hal,shortname=mixed,uid=1000,utf8,umask=077,flush)

il dispositivo viene correttamente rinominato a nostro piacimento.

Se vogliamo che anche il punto di mount sia come mi piace, lo creo

sudo mkdir /media/peak3

poi faccio in modo che si monti in automatico, aggiungendo la solita stringa in fstab

sudo gedit /etc/fstab

ed inseriamo la riga:

/dev/hd_Peak3 /media/peak3 vfat noauto,user,umask=000 0 0
sudo umount -a
sudo mount -a

alla prossima connessione avremo come output di mount:

/dev/hd_Peak3 on /media/peak3 type vfat (rw,noexec,nosuid,nodev,umask=000,user=banco)

Questo è molto comodo nel caso io connetta un altro dispositivo usb, prima di questo.
In tal caso, l’oggetto in questione, non diventerà sdb2 in quanto sdb1 occupato, ma verrà “indirizzato”
nel giusto mount-point e con il nome /dev imposto nella regola.
Questo processo è ripetibile per ogni dispositivo, aggiungendo una riga nel file
/etc/udev/rules.d/10-local.rules

Ovviamente questo è solo un assaggio.
Consultando le man-page ci si renderà conto delle potenzialità….

….continua……

Matrix a vita!!!

Posted Luglio 2, 2009 by bancaldo
Categories: Inter

matrix

Adesso sì che posso scriverlo, perché l’ho scritto su un contratto: sarò nerazzurro a vita. E non è solo un modo di dire. Non potevo partire per le vacanze più soddisfatto: ho prolungato il mio contratto con l’Inter fino al 2012, dunque fino alla fine della mia carriera. Era quello che avevo sempre desiderato, da quando dell’Inter sono diventato un tifoso almeno quanto un calciatore: smettere di giocare – perché allora avrò quasi 39 anni – indossando questa maglia.
Ora, non mi resterà che cercare di vincere ancora tutto quello che si potrà: in Italia, sognando magari la doppia stella, e in Europa. Ma ci sarà tempo per pensarci, adesso è il momento di staccare e di ricaricare le batterie: per un po’ non ci “parleremo”, l’appuntamento con l’Inter e anche con voi è per il 10 luglio, quando inizierà la nuova stagione. Sarò molto carico… Intanto buone vacanze, a chi ci va adesso come me, e un abbraccio forte a tutti. Marco “

fonte.

che dire….?

TUTTI PAZZI PER MATERAZZI!!!

VmWare: howto create Virtual HD

Posted Luglio 1, 2009 by bancaldo
Categories: WmWare

The procedure to create a virtual HD is very simple:

Download QEMU

use the Qemu-img.exe, as follows

qemu-img.exe create -f vmdk guestOS.vmdk 4GB

It will create a 4GB virtual HD (empty=580KB)

For example, if you want a 10GB Virtual HD,
you have to replace 4 with 10:

qemu-img.exe create -f vmdk guestOS.vmdk 10GB

When virtual HD will be created, proceed with vmx customization.

ide0:0.fileName = “MyVirualHD.vmdk

Italian

VmWare: creare HD virtuale

Posted Luglio 1, 2009 by bancaldo
Categories: WmWare

English

Per creare un HD virtuale è molto semplice:

scaricare QEMU

Una volta posizionati nella directory, utilizzare il tool

Qemu-img.exe

Es:

qemu-img.exe create -f vmdk guestOS.vmdk 4GB

verrà creato un HD virtuale (580KB circa) che sarà capiente 4GB

Se lo volessimo ad es. di 10GB, il comando sarà:

qemu-img.exe create -f vmdk guestOS.vmdk 10GB

Una volta ottenuto l’HD, procedere con la solita
persolalizzazione del file vmx.


ide0:0.fileName = “guestOS.vmdk

uTorrent settings

Posted Giugno 10, 2009 by bancaldo
Categories: p2p

italian

Download the client from HERE.
Install the client.
In Speed Guide, set the correct Connection Type.
Click on Use Selected settings.

uTSpeed

When uTorrent (uT) starts go in Menu – Option – Preferences

In the Directories Tag, select the custom path for temporary and complete download.

uT_dir

In Connection tag, set the Port used for incoming connections.

uT_connection
Each port correctly configured can be used but I like 5061, or 1720, or 7070.
(If you are under a router/firewall, check the port is correctly forwarded!!!)

In Bandwidth Tag, set the Maximum upload rate to your Max Bandwidth Upload value – 10KB.

uTBand
This value is KB (KByte), not Kb (bit).
(i.e.) if your Max Bandwidth Upload value is 512Kb the value will be (512/8) – 10 =54KB
Subtract 10/15KB from upload limit is useful to browse internet while the client uT, is uploading torrents.
Set the Maximum number of connected peers per torrent to your max Bandwidth Download value / 50.
In my case 8Mb (bit) / 50 = 160
Set the Global Maximum number of connections to the previous value per 3.
In my case 160 * 3 = 480

In Bittorrent tag enable the outgoing Protocol encryption.

uT_encrypted

In Advanced Tag

uTAdv
set the netmax_halfopen value to 30
set the peer.lazy_bitfield value to True (default).

Click on Apply Button and restart utorrent to fix the changes.

Jaunty: Amarok no audio

Posted Maggio 21, 2009 by bancaldo
Categories: Linux

sudo apt-get install ubuntu-restricted-extras libxine1-ffmpeg phonon-backend-xine phonon-backend-gstreamer

reboot your system.
njoy

Jaunty: Amarok senza audio

Posted Maggio 21, 2009 by bancaldo
Categories: Linux

installare i seguenti pacchetti e riavviare:

ubuntu-restricted-extras
libxine1-ffmpeg
phonon-backend-xine
phonon-backend-gstreamer

Si può fare da Synaptic o da terminale

sudo apt-get install ubuntu-restricted-extras libxine1-ffmpeg phonon-backend-xine phonon-backend-gstreamer

Grande Marco!

Posted Maggio 19, 2009 by bancaldo
Categories: Inter

SCUDETTO INTER:PULLMAN CON SQUADRA TRA TIFOSI A PIAZZA DUOMO

Grande ragazzi!!!
ahahahahahahahahahahahah!

17 = Zero titoli!

Posted Maggio 17, 2009 by bancaldo
Categories: Inter

CALCIO: SCUDETTO INTER; FESTEGGIAMENTI A MILANO

GRAZIE MOU!

NDS: R4 Revolution + MoonShell

Posted Maggio 14, 2009 by bancaldo
Categories: NDS

Italian

SOFTWARE

Download R4 revolution Kernel from this link.

SD High Capacity KERNEL, here, or, as indicated in the link printed in the R4 box

(i.e. here for the version SDHC Upgrade).

Download MoonShell from here.

Kernel R4

The zip archive consists of 2 files and 2 directories

Extract them and copy into SD card.

Done!

Kernel R4 HC

In case of Kernel for SDHC (you must use R4 SDHC Cartridge!!) , files and directories have different names.

No problem, copy them on SDHC.

Done!

MOONSHELL

in the archive there is dpgtools. It contains the avi converter dpgenc.exe.

To install or upgrade moonshell, Delete old SD files

_DS_MSHL.NDS

and old SD directory

MOONSHL

Extract the downloaded archive and execute SETUP.exe

- Select the device that corresponds to SD card.

Be careful if more USB devices are connected!!

- Leave the defaults settings, Click ALL CLEAR and select R4TF R4.

Click  Setup.

At the end fo the setup process, in the  SD device, we will find:

R4TF R4(DS) – Revolution for DS.nds file , that we need to  rename in  _DS_MSHL.nds.

and

MOONSHL directory

Done!

DPGENCODER

Run dpgenc.exe

Change the parameters in the Options tag.

Choose the destination path with Browse.

drag the avi file to convert.

At the end of the coding process, we will have a new file with dpg extension.

To play dpg file, Use dpgshow.exe

To obtain file info : dpginfo.exe

Ubuntu: Convertire file.OGG in file.mp3

Posted Aprile 27, 2009 by bancaldo
Categories: Linux

aprire il terminale e installare Vorbis-tools

sudo apt-egt install vorbis-tools

portarsi nella directory contenente il file.ogg

primo passo trasformare il file ogg in Wav

ogg123 --device=wav --file=filetemporaneo.wav miofile.ogg

poi dal file Wav ottenuto, generare il file mp3

lame filetemporaneo.wav miofile.mp3

Depeche Mode – Sounds of the Universe

Posted Aprile 1, 2009 by bancaldo
Categories: DM

Che dire….
spettacolare.

Wrong

Wrong, wrong, wrong!

I was born with the wrong sign
In the wrong house
With the wrong ascendancy
I took the wrong road
That led to the wrong tendencies
I was in the wrong place at the wrong time
For the wrong reason and the wrong rhyme
On the wrong day of the wrong week
I used the wrong method with the wrong technique

Wrong
Wrong

There’s something wrong with me chemically
Something wrong with me inherently
The wrong mix in the wrong genes
I reached the wrong ends by the wrong means
It was the wrong plan
In the wrong hands
With the wrong theory for the wrong man
The wrong lies, on the wrong vibes
The wrong questions with the wrong replies

Wrong
Wrong

I was marching to the wrong drum
With the wrong scum
Pissing out the wrong energy
Using all the wrong lines
And the wrong signs
With the wrong intensity
I was on the wrong page of the wrong book
With the wrong rendition of the wrong hook
Made the wrong move, every wrong night
With the wrong tune played till it sounded right yeah

Wrong, wrong (Too long)
Wrong (Too long)
Wrong (Too long)
Wrong (Too long)
Wrong (Too long)

I was born with the wrong sign
In the wrong house
With the wrong ascendancy
I took the wrong road
That led to the wrong tendencies
I was in the wrong place at the wrong time
For the wrong reason and the wrong rhyme
On the wrong day of the wrong week
I used the wrong method with the wrong technique

Wrong!

Ubuntu: USB Power Switching Script

Posted Marzo 25, 2009 by bancaldo
Categories: Linux

Non è strettamente necessario togliere alimentazione al dispositivo USB, l’importante è sempre Smontarlo.
Nel caso si avesse la paranoia, durante la rimozione, vedendo comunque il led del dispositivo acceso, eseguire lo script di switchoff qui di seguito.

#!/bin/bash

# USB Power Switching Script
# Script to toggle power management status of USB devices
# by DanyTheBat

declare -a ARRAYDEV
declare -a ARRAYPROD
declare -a ARRAYPWRSTATUS
declare -a ARRAYMAXPWR
let nprod=0

function padl {
    tmp=$2
    while [ ${#tmp} -lt $1 ];
    do
        tmp="$tmp "
    done
    echo "$tmp"
}

function padr {
    tmp=$2
    while [ ${#tmp} -lt $1 ];
    do
        tmp=" $tmp"
    done
    echo "$tmp"
}

function lower {
    echo "$(echo $1 | tr [:upper:] [:lower:])"
}

function query_level {
    # level: on - auto - suspend

    if [ -e $1/power/level ]; then
        ARRAYPWRSTATUS[$nprod]=$(cat $devhome/power/level)
    else if [ ! -e $devhome/power/level ]; then
        ARRAYPWRSTATUS[$nprod]=NA
        fi
    fi
}

function scan_usb {
    for idVendor in $(ls /sys/bus/usb/devices/*/idVendor); do
        devhome=$(dirname $idVendor)
        devlevel=$devhome/power/level

        # if product, leo, else leo idvendor e idproduct
        if [ -e $devhome/product ]; then
            ARRAYPROD[$nprod]="$devhome"
            ARRAYPRODDESC[$nprod]="$(cat $devhome/product)"
            ARRAYMAXPWR[$nprod]="$(cat $devhome/bMaxPower)"
            query_level $devhome
            ((nprod++))
        else if [ -e $devhome/idVendor ]; then
            ARRAYPROD[$nprod]="$devhome"
            ARRAYPRODDESC[$nprod]="$(cat $devhome/idVendor):$(cat $devhome/idProduct)"
            ARRAYMAXPWR[$nprod]="$(cat $devhome/bMaxPower)"
            query_level $devhome
            ((nprod++))
            fi
        fi
    done
}

function list_usb {
    for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
        echo -e "|$(padl 25 "${ARRAYPRODDESC[$element]}")|$(padl 30 "(${ARRAYPROD[$element]})")|$(padr 11 "[${ARRAYPWRSTATUS[$element]}]")|$(padr 7 "${ARRAYMAXPWR[$element]}")|"
        #echo -e "${ARRAYPRODDESC[$element]}\\t(${ARRAYPROD[$element]})\\t[${ARRAYPWRSTATUS[$element]}]\\t${ARRAYMAXPWR[$element]}"
    done
}

function toggle_usb {
    for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
        if [[ $(lower "${ARRAYPRODDESC[$element]}") =~ $(lower "$1") ]]; then
            if [ "${ARRAYPWRSTATUS[$element]}" == "on" ] || [ "${ARRAYPWRSTATUS[$element]}" == "auto" ] ; then
                echo "suspend" > ${ARRAYPROD[$element]}/power/level
                echo -e "${ARRAYPRODDESC[$element]} switching from [${ARRAYPWRSTATUS[$element]}] to [suspend]"
            else
                echo "auto" > ${ARRAYPROD[$element]}/power/level
                echo -e "${ARRAYPRODDESC[$element]} switching from [${ARRAYPWRSTATUS[$element]}] to [auto]"
            fi
        fi
    done
}

function verify_usb {
    for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
        if [[ $(lower "${ARRAYPRODDESC[$element]}") =~ $(lower "$1") ]]; then
            return 0
        fi
    done

    return 1
}

function get_usb_by_name {
    for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
        if [[ $(lower "${ARRAYPRODDESC[$element]}") =~ $(lower "$1") ]]; then
            echo -e "|$(padl 25 "${ARRAYPRODDESC[$element]}")|$(padl 30 "(${ARRAYPROD[$element]})")|$(padr 11 "[${ARRAYPWRSTATUS[$element]}]")|$(padr 7 "${ARRAYMAXPWR[$element]}")|"
        fi
    done
}

scan_usb

case $1 in
    -l) echo -e
        echo -e "USB Power Switching Script"
        echo -e "------------------------------------------------------------------------------"
        list_usb
        echo -e "------------------------------------------------------------------------------"
        echo -e
    ;;

    -t) if [ ! "$2" == "" ] && verify_usb $2; then
        toggle_usb $2
        else
        echo "Specify a valid USB Device: '$2' doesn't exist!!!"
        fi
    ;;

    -v) if verify_usb $2; then
        echo -e
        echo -e "USB Power Switching Script"
        echo -e "------------------------------------------------------------------------------"
        get_usb_by_name $2
        echo -e "------------------------------------------------------------------------------"
        echo -e
        echo -e "'$2' USB Device exists!!!"
        echo -e
        else
        echo -e
        echo -e "USB Power Switching Script"
        echo -e
        echo -e "'$2' USB Device doesn't exist!!!"
        echo -e
        fi
    ;;

    *) echo -e
       echo -e "USB Mouse Power Switching Script"
       echo -e "------------------------------------------------------------------------------"
       echo -e "-l\\tList USB Devices"
       echo -e "-t name\\ttoggle USB Device 'name' status"
       echo -e "-v name\\tverify if USB Device 'name' exists"
       echo -e
    ;;
esac

Si ringrazia DanyTheBat.
Fonte.