MiniGuida

Rete
----

Utilizzo di ssh
^^^^^^^^^^^^^^^

Specificare un altro utente per il login
========================================

::

ssh -l

Copiare un file usando ssh come supporto (scp)
===============================================

::

scp @:

Redirect di una porta remota alla macchina locale
==================================================

::

ssh -L
::

nota è il nome o indirizzo IP della macchina su cui risiede
il servizio a cui vogliamo accedere e dev'essere visibile dal gateway, esempio::

ssh -L 3389:192.168.1.1:3389 indirizzofirewall

a questo punto è possibile lanciare::

rdesktop localhost

e collegarsi al terminal server 192.168.1.1.

Configurare accesso ssh senza richiesta password
================================================

::

ssh-keygen -b 1024 -t rsa

poi copiare la chiave pubblica generata (nel file .ssh/id_rsa.pub) nel
.ssh/authorized_keys del server

Disabilitare l'accesso da rete a root
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

il file /etc/securetty contiene la lista dei device da dove l'utente
root puo' connettersi, se si concellano tutte le voci lasciando da
tty1 a tty8, l'utente potra' collegarsi solo dalla console.::

ttyS* terminali seriali (modem ecc)

ttyp*, ttyq*, etc terminali di rete

Alcune opzioni utili di nmap
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Dal lanciare come root::

nmap -v -sT -O "host"

per una scansione "half-open"::

nmap -v -sS -O "host"

Info su un dominio
^^^^^^^^^^^^^^^^^^

::

whois "dominio"

Forwarding banale
^^^^^^^^^^^^^^^^^

con ipchains::

ipchains -F forward
ipchains -P forward DENY
ipchains -A forward -s 192.168.10.0/24 -j MASQ
ipchains -A forward -i ppp0 -j MASQ
echo 1 > /proc/sys/net/ipv4/ip_forward

con iptables::

iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain

iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward

Bloccare l'accesso incondizionato da un determinato IP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Mettere una linea con l'indirizzo IP in /etc/hosts.deny o in caso di firewall::

ipchains -I input 1 -s xxx.xxx.xxx.xxx -j DENY
ipchains -I forward 1 -s xxx.xxx.xxx.xxx -j DENY

oppure bloccare la route verso un host::

route add -host "ip host" reject

Esempi pratici di wget
^^^^^^^^^^^^^^^^^^^^^^^

Scaricare un sito (con link interni) e mantenerlo nella directory
corrente senza il prefisso www.host.. ::

wget -nH -r sito

Uso di fetchmail
^^^^^^^^^^^^^^^^^

::

set daemon 600 #poll di 10 min
set syslog
poll mail.server.it with proto POP3:
user "utentediposta" there with password "" is utentelinux here;

Collegamento via seriale ai dispositivi
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Si parte lasciando **spento** il dispositivo

::

minicom -s sistemare le impostazioni (tipicamente 9600 8N1)
exit (senza uscire dall'applicazione)

accendendo il dispositivo se ne vedrà il boot

rinetd: trasferimento di servizio da un pc ad un altro
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Si configura in /etc/rinetd.conf::

hostinterfaccia porta host destinazione porta

Uso di lftp per gestire il mirror dei siti via ftp
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

esempi di utilizzo::

lftp -u -e "cd ; mirror --delete --exclude wp-config.php --only-newer --parallel=1; quit"

questo comando permette di fare il mirror del sito remoto copiando solo i file nuovi, l'opzione --parallel=1 serve in alcuni casi quando il sito remoto consente solo una connessione ftp alla volta, l'opzione --delete cancella i file locali non presenti in remoto, l'opzione --exclude evita di copiare i file che corrispondono ::

lftp -u -e "lcd ; mirror --reverse --delete --only-newer --parallel=1; quit"

fa l'esatto contrario del comando precedente, copia il contenuto del locale in remoto ed elimina i file che non esistono piu' in locale

Samba
-----

Samba parte di un dominio NT
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

**Versione 2.x**

Prima aggiungere il nome NetBIOs della macchina sulla lista degli
account macchina del PDC, stoppare SMBD e NMBD poi scrivere::

smbpasswd -j NTDomainName -r PDCName

infine cambiare in smb.conf security = domain, verificare che la voce
encrypt password sia YES e aggiungere::

password server = nome_del_server

**Versione 3.x**

Per aggiungere la macchina nel dominio NT::

net join -S PDC -UAdministrator%password

va inoltre installato winbindd, se non si vogliono replicare gli utenti del dominio anche lato linux, bisogna modificare il file smb.conf nella sezione **global** ::

# separate domain and username with '+', like DOMAIN+username
winbind separator = +
# use uids from 10000 to 20000 for domain users
idmap uid = 10000-20000
# use gids from 10000 to 20000 for domain groups
idmap gid = 10000-20000
# allow enumeration of winbind users and groups
winbind enum users = yes
winbind enum groups = yes

oltre ai soliti parametri di samba per poter far parte di un dominio::

workgroup = NOMEDOMINIO
security = domain
password server = *
encrypt passwords = Yes
passdb backend = tdbsam guest

inoltre ora bisogna modificare il pam per permettere l'autenticazione tramite
il PDC, farsi una copia di backup di /etc/pam.d e modificare i file in essa contenuti in questo modo::

/etc/pam.d/common-auth

aggiungere::

auth sufficient pam_winbind.so

in::

/etc/pam.d/common-account

aggiungere::

account sufficient pam_winbind.so

far ripartire winbindd::

/etc/init.d/winbindd restart

ora con un::

wbinfo -u

si dovrebbe vedere la lista degli utenti gestiti dal PDC.

Copiare la lista degli utenti unix per Samba
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

cat /etc/passwd | mksmbpasswd > /etc/samba/smbpasswd

oppure::

smbpasswd utente

addtosmbpasswd

Look up di un client NT dall'indirizzo IP
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

nmblookup -U PDC_NAME -AS indirizzo_ip

Risoluzione dei nomi tramite wins
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Installare samba (per DebIan anche apt-get install winbind), modificare::

/etc/nsswitch.conf

alla riga::

hosts: files dns winbind wins

Apache
------

Evitare il browsing delle directory e abilitarlo solo in alcune
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

Directory /var/www
Options (eliminare l'eventuale Indexes)
/Directory

Directory /var/www/directorydarenderebrowsable
Options indexes FollowSymLinks
/Directory

Area visitabile solo ad alcuni utenti
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Nella sezione Directory che si vuole::

AuthName "Area protetta"
AuthType Basic
AuthUserFile /etc/apache/htpasswd
require user utente

per aggiungere un utente al file di password utilizzare::

htpasswd /etc/apache/htpasswd utente

la stessa cosa puo' essere fatta tramite .htaccess sempre che nella configurazione globale di apache sia permesso modificarne il comportamento tramite questo file, è sufficiente inserire il file nella directory che si vuole abilitare tramite password con il seguente contenuto::

AuthUserFile /
/.htpasswd
AuthGroupFile /dev/null
AuthName EnterPassword
AuthType Basic

require user nomeutente

come nel caso precedente per le password::

htpasswd .htpasswd nomeutente

Postfix
-------

Ciao ciao, `Ciao Spam`
^^^^^^^^^^^^^^^^^^^^^^

:Autore: Flavio Visentin

Ultimamente ha fatto molto discutere__ l'iniziativa di `ciaospam.it`,
che per limitare lo spam obbliga a *farsi riconoscere*...

Ecco una ricetta che permette di eliminare del tutto l'assillo:

1. Creare di una *mappa* che contiene gli indirizzi da rifiutare::

# echo "info@ciaospam.it REJECT" >> /etc/postfix/rompiscatole
# postmap /etc/postfix/rompiscatole

2. Informare della cosa `postfix`::

# echo "smtpd_sender_restrictions = check_sender_access \
> hash:/etc/postfix/rompiscatole" >> /etc/postfix/main.conf
#/etc/init.d/postfix reload

__ http://www.freelists.org/archives/linuxtrent/07-2004/msg00623.html

X11
---

Gestione dei tasti multimediali
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Controllare i valori numerici ritornati premendo il tasto dopo aver lanciato 'xev'.

Controllare il codice di X11 controllando i valori numerici in in /etc/X11/xkb/keycodes/xfree86)

Aggiungere una sezione a /etc/X11/xkb/symbols/inet con quei codici collegandoli ai codici per XFREE86 magari facendo una copia del file prima...ad esempio::

// portatile sconosciutissimo
partial alphanumeric_keys
xkb_symbols "portatilesconosciutissimo" {
key { [ XF86AudioPlay, XF86AudioPause ] };
key { [ XF86AudioPrev ] };
key { [ XF86AudioNext ] };
key { [ XF86AudioStop ] };
key { [ XF86AudioRaiseVolume ] };
key { [ XF86AudioLowerVolume ] };
key { [ XF86AudioMute ] };
};

Control Alt Canc in VNC o menu
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Per attivare il menu del VNC che nella versione di windows è
accessibile tramite mouse, premere F8, verrà visualizzata l'opzione la
voce send ctrl alt del

Per spostare il mouse con la tastiera
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Ctrl+Shift+Num Lock: Senti un beep.

Sposti il cursore con i tasti::

7 8 9

4 6

1 2 3

sul tastierino numerico.

Selezioni un tasto del mouse con i tasti "/" (sinistro), "*"
(centrale) e "-" (destro), sempre sul tastierino numerico. Poi con
"5" simuli un click con quel tasto, con "0" lo si mantiene premuto e
con "." lo si rilascia.

Caratteri balenghi con la tastiera italiana
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

` = AltGr + ' oppure AltGr + ù
{} = AltGr + 7 e AltGr + 0

Configurazione di XKB
^^^^^^^^^^^^^^^^^^^^^

Un'ottima guida, seppure in inglese:
http://www.charvolant.org/~doug/xkb/html/xkb.html

Per vedere la risoluzione attuale di X
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

xdpyinfo

Per far partire X su un altro terminale
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Per avere più sessioni X sulla stessa macchina::

startx -- :1

Altro modo::

Xnest :1

fornisce una finestra contenente un X server. Esempio interessante di applicazione che è contemporaneamente un X client e X server.

xnest come client
^^^^^^^^^^^^^^^^^

È possibile con xnest per esempio collegarsi a un xdm (o gdm) che ha attivo l'xdmcp, X Display Manager Protocol (stile rdesktop)::

Xnest :1 -query indirizzoserver

Mouse in X e su console
^^^^^^^^^^^^^^^^^^^^^^^

Probabilmente è sufficiente mettere in /etc/gpm.conf::

device=/dev/psaux
repeat_type=raw
type=ps2

poi nel file di configurazione di X /dev/gpmdata come device per il mouse

Tasti windows in X
^^^^^^^^^^^^^^^^^^

aggiungere in ~/.Xmodmap::

keycode 115 = F13
keycode 116 = F14
keycode 117 = F15

quindi in .xsession: modmap ~/.Xmodmap. Ora F13, F14 e F15 sono sx-Win
, dx-Win e menu-contestuale.

Esportare il display tramite ssh
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Assicurarsi che sul server sia abilitata la voce::

X11Forwarding yes

in /etc/ssh/sshd_config, quindi sul client esportare il display *prima* di effettuare la connessione ssh::

export DISPLAY=:0.0

a questo punto collegandosi via ssh al server con le opzioni::

ssh -X -C (per la compressione)

è possibile lanciare le applicazioni in modo che visualizzino il display sul client, attenzione sul server dev'essere installato il client X (xbase-clients per DebIan)

Gestione font decenti
^^^^^^^^^^^^^^^^^^^^^

installare possibilmente i font di Microsoft, su debian::

apt-get install msttcorefonts

sistemare sempre per primi i font "bitmapped" nel file di configurazione di xfree, esempio::

FontPath "/usr/lib/X11/fonts/100dpi" # font bitmap
FontPath "/usr/lib/X11/fonts/75dpi"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" # font scalabili
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
FontPath "/usr/lib/X11/fonts/encodings"

Cambiare i font di un applicazione
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

E' sufficente utilizzare xlsfonts e inserire il font selezionato nel
file ~/.Xdefault, esempio::

*xterm*font:

si possono fare delle prove con::

xterm -fn

una volta terminato lanciare::

xrdb -merge ~/.Xdefault

Cambiare i font per GTK 1.X
^^^^^^^^^^^^^^^^^^^^^^^^^^^

E' sufficente utilizzare gtkfontsel e inserire il font selezionato nel
file ~/.gtkrc, esempio::

style "default"
{
font = "-adobe-courier-medium-r-normal-*-12-120-75-75-m-*-*-*"
}

Avviare un applicazione all'avvio di xdm senza la necessità del login dell'utente
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Creare uno script e salvarlo in /etc/X11/xdm/Xsetup, attenzione viene lanciato dall'utente root

Installazione di grub
---------------------

::

grub-install device

Hylafax: stampare i fax in entrata
----------------------------------

Per stampare direttamente i fax in entrata di hylafax , aggiungere nel
file /var/spool/fax/bin/faxrcvd il comando::

$FAX2PS $1 | lpr

Chi utilizza cosa
-----------------

Per vedere che processo sta utilizzando la tal porta
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

fuser port/tcp o udp

Per vedere che processo sta utilizzando il tal file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

lsof | grep file

Per vedere i processi che stanno in ascolto
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

netstat -l

Cambiare una stringa in uno o più file
--------------------------------------
::

sed -i 's:stringadasostituire:stringanuova:g' *

oppure::

perl -pi -e 's/stringadasostiruire/nuovastringa/g' *

cambiare password ad un utente di postgresql
---------------------------------------------

::

alter user utente with password 'password';

o se si usano password criptate::

alter user utente with crypted password 'password';

Configurare la scheda sonora
----------------------------

Installare la documentazionie del kernel e seguire le indicazioni per
la propria scheda, ``pnpdump > isapnp.conf`` genera il file di
configurazione da editare per abilitare le varie opzioni, usare
modconf per installare definitivamente i moduli

Togliere i beep fastidiosi
--------------------------

in x::

xset b off

in console::

setterm -blength 0

Togliere i messaggi di errore dalla console
-------------------------------------------

Modificare /etc/syslog.conf in modo da deviare il log su file , o per
bloccarlo definitivamente::

dmesg -n1

Estrarre un attachment mime da un file
--------------------------------------

::

metamail -w file

Dischi CD Floppy Chiavette USB
-------------------------------

Copiare una distro da una partizione all'altra (anche non uguali)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

tar cfv - * | (cd /mnt/disk2 ; tar xfv -)

oppure::

cp -avx /mnt/dev1 /mnt/dev2

altrimenti::

cp -ra / /hda2

Ricreare il device di un disco
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

mknod -m 660 nomedev( per es hda1) b 3 1

per debian poi::

chgrp disk nomedev

Per rimontare un disco in rw
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

mount /device -o remount,rw

Recupero di un floppy danneggiato
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

RecuperaDischetto, con una ricetta di Andrea Gelpi

Masterizzare
^^^^^^^^^^^^

Aggiungere un masterizzatore ide senza ricompilare il kernel originale
======================================================================

in /etc/lilo.conf aggiungere::

append="hdX=ide-scsi" dove X e' la lettera del device

e in /etc/modules::

ide-scsi

CD Audio
========

::

cdrdao copy --on-the-fly --speed 2 --device 0,0,0 --source-device 0,1,0 \
--driver generic-mmc --source-driver generic-mmc --force

CD Dati
=======

::

cdrecord -v dev=0,0,0 speed=4 -isosize /dev/cdrom

Convertire da ext2 a ext3 e viceversa
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Anche su fs montato::

tune2fs -j /dev/hdaX

su fs *smontato*::

tune2fs -O ^has_journal /dev/hdaX

e per sicurezza::

fsck.ext2 -f /dev/hdaX

Utilizzo chiavetta usb
^^^^^^^^^^^^^^^^^^^^^^

Assicurarsi di avere in /etc/fstab::

usbdevfs /proc/bus/usb usbdevfs defaults,noauto 0 0

installare il modulo usb-storage::

modprobe usb-storage

ora è possibile montare la chiavetta::

mkdir /mnt/chiavetta
mount /dev/sda1 /mnt/chiavetta

in realtà sda1 è il nome del device in una configurazione desktop standard
(senza dischi scsi ecc), comunque caricando il modulo usb-storage
in /var/log/messages si dovrebbe vedere il nome del device assegnato, nel caso non esistesse il device è possibile crearlo con MAKEDEV::

cd /dev/
MAKEDEV sda

eventualmente è possibile modificare l'fstab in modo da poter montare la chiavetta agilmente da kde o gnome::

/dev/sda1 /mnt/chiavetta auto user 0 0

Avere un report dell'hardware del sistema
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Si può utilizzare il comando::

lshw

Uso di GNU PG
--------------

Creare una nuova chiave
^^^^^^^^^^^^^^^^^^^^^^^^

::

gpg --gen-key

Esportare una chiave pubblica
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

gpg --armor --export

Copiare la chiave privata di Gnu PG da una macchina ad un'altra
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

gpg -armor --export-secret-keys "nome e/o indirizzo di posta" > mykey.sec

gpg --import --allow-secret-key-import < mykey.sec

Ascoltare la radio è facile
---------------------------

Rai 3 ad esempio è ascoltabile con::

realplay http://www.radio.rai.it/new_player/radio3.ram

Disabilitare il reboot con CTRL ALT CANC
----------------------------------------

commentare la line in /etc/inittab::

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Ripristinare la password di root
--------------------------------

Fare il boot specificando Linux init=/bin/sh::

# mount -n -t remount,rw /
# mount -avt nonfs,noproc,nosmbfs
# cd /etc
# vi passwd
# vi shadow

mettere il secondo campo (la password) vuoto

Il primo mount fa si che il root filesystem (dove presumibilmente
giace la directory /etc e quindi il file delle password...) sia
scrivibile; il secondo monta tutti gli altri filesystem che non siano
NFS o roba comunque non utile.

La modifica della password a questo punto può essere fatta con un
qualsiasi editor, come indicato sopra, oppure normalmente con il
solito::

# passwd
Enter new UNIX password:
Retype new UNIX password:

Rinominare una serie di file
----------------------------

Esiste l'utilissima utility rename contenuta nel pacchetto perl::

rename 's/pippo/pluto/' *

macutio segnala un'alternativa contenuta in util-linux che usa questa sintassi::

rename from to files

from: la substring da sostituire
to: la substring con cui sostituire from
files: il file cui applicare la sostituzione

Kernel
------

Dove diavolo trova Linux l'elenco dei moduli da installare?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Due cose da sapere riguardo ai moduli:

1. il caricamento di alcuni moduli viene effettuato al volo quando ce
n'è bisogno (se il kernel e` stato compilato per comportarsi cosi`,
ed è la stragrande maggioranza dei casi).

Tipicamente ciò succede quando si tenta di accededere a un block
device o ad un char device in /dev.
Ad esempio, quando si tenta di accedere ad un dispositivo SCSI, il
kernel di fatto manda in esecuzione un bel::

modprobe block-major-8

e normalmente, in /etc/modules.conf c'e` un bel::

alias block-major-8

per cui l'effetto finale è quello per cui vien fatto un modprobe
del modulo specifico, che risulta nel caricamento del modulo e di
tutti gli altri moduli da cui esso dipende. Bello, eh? :)

2. oppure, negli script di boot (del tipo /etc/rc.d/boot.local o
simili, cambiano da distribuzione a distribuzione), ci sono i
vari::

modprobe

del caso.

modprobe è un comando che non fa altro che leggere il proprio
file di configurazione (che è /etc/modules.conf) e lanciare insmod e
rmmod (che fanno il "vero" lavoro) con i parametri opportuni.

C'è da tener ben presente una differenza fondamentale tra l'usare
modprobe e l'usare direttamente insmod/rmmod:

3. modprobe è a conoscenza delle dipendenze esistenti tra i moduli (e
oltre a caricare quello che gli dici, carica prima anche quelli di
cui ha bisogno, eventualmente eseguendo anche le fasi di pre e post
install e passando le opzioni specificate con *options*). E tanto
per cambiare, viene fatto esattamente l'opposto quando si tratta di
rimuovere un modulo (``modprobe -r``).

4. insmod invece non sa niente di tutto questo.

Per cui la regoletta è: usare sempre modprobe, salvo che non si abbia
una ragione valida per usare insmod/rmmod.

Il kernel esegue::

modprobe -s -k (attraverso una call a `request_module()

- ``-s`` per fare il logging attraverso syslogd e

- ``-k`` per impostare l'autocleaning sul modulo caricato (o moduli)
dopo aver adeguatamente settato l'environment.

Questo meccanismo è piuttosto singolare: il kernel invoca un programma
in userspace. Da quanto capisco, è stato scelto di fare così perché
questa strategia semplificava di molto la gestione del loading on
demand dei moduli (cioè non si deve replicare buona parte di quello
che fa ``modprobe`` in kernel space, modprobe permette una discreta
flessibilità e configurabilità, vedi le varie
``pre-install``/``post-install``/``pre-remove``/``post-remove``).

`Come viene spiegato qui`__, è possibile correggere il path del
programma da eseguire sostituendo il valore di default.

__ http://www.linuxhq.com/kernel/v2.4/doc/kmod.txt.html

Sembra che la cosa sia piaciuta, perché in realtà il kernel offre un
meccanismo del tutto generale per richiedere l'esecuzione di
programmi in userspace: ``call_usermodehelper``, che apparentemente
funziona come la nota ``execve(2)``.

Note per kernel hackers: ``call_usermodehelper()`` e
``request_module()`` sono sincrone, cioè dormono finché il programma
invocato non è terminato (con ovvie conseguenze su gestione di
lock/semafori e necessità di scrivere codice rientrante) e non c'è
verso di sapere se l'azione fatta dal programma invocata si è conclusa
con successo o meno. Il codice è simile a::

available = check_for_feature();
if (!available)
request_module("feature");
if (!check_for_feature())
goto error
else
goto success

Riferimenti:

* kernel/kmod.h e kernel/kmod.c

* Documentation/modules.txt

* net/socket.c per un esempio di come usare request_module()

* http://www.xml.com/ldd/chapter/book/ch11.html

p.s. : DebIan offre quel favoloso strumento che si chiama modconf!:)

Spiccioli di grafica
--------------------

Immagine trasparente con Gimp?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

Livello -> Trasparenza -> Aggiunta canale alpha

Seleziona -> Per colore

Modifica -> Pulisci

Ridurre le dimensioni di un filmato
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

::

apt-get transcode ;)

transcode -i originale.mpg -y ffmpeg -F mpeg4 -o ridotto.mpg -Z 400x200

Qemu, boot da CD
----------------

Creare un immagine su disco::

dd of=nomeimmagine.img bs=1024 seek=numerobyte count=0

nota, numero byte può essere espresso anche in mega esplicitando una M maiuscola dopo la cifra, un esempio di avvio di qemu con l'immagine creata::

qemu -hda nomeimmagine.img -cdrom /dev/cdrom -boot d -m 256 -enable-audio -user-net -pci

-- diaolin: puoi trasformare le immagini di vmware in immagini di qemu con vmdk2raw.

-- diaolin: puoi creare una immagine anche senza usare dd ma lanciando il comando::

qemu-mkcow [-f disk_image] cow_image [cow_size]

esempiuccio::

immagine raw da 5Gb
qemu-mkcow nuova.raw 5000

Utilizzo di find
----------------

Esempio di utilizzo di find::

find /directory/ -iname "file*" -exec cat {} \;

Conversione di codifica dei file con iconv
------------------------------------------

iconv è un utility che permette di convertire un file da una codifica all'altra, il programma si blocca se c'e' qualche carattere non supportato nella nuova codifica visualizzando la riga contenente l'errore è quindi possibile sistemare il file, esempio di utilizzo::

iconv --from-code utf-8 --to-code iso-8859-1 file.txt -o file.new

Caratteri di escape
-------------------

A volte è utile utilizzare dei caratteri di escape, ad esempio per colorare il file /etc/motd (il benvenuto che si ha quando ci si collega ad un PC), il carattere di escape viene rappresentato con ^[ ma è un carattere singolo non due, per produrlo o utilizzare un editor pensato a questo scopo tipo::

tetradraw

oppure ecco alcune note per gli editor più comuni::

emacs: ^Q ESC
vi: ^V ESC
joe: ` 0 2 7
jed: ` ESC

alcuni caratteri di escape utili::

blu ^[[44;37m
normale ^[[40;37m
clear ^[[H^[[J

altri colori::

Nero 0;30 Grigio Scuro 1;30
Blu 0;34 Blu Chiaro 1;34
Verde 0;32 Verde Chiaro 1;32
Ciano 0;36 Ciano Chiaro 1;36
Rosso 0;31 Rosso Chiaro 1;31
Viola 0;35 Viola Chiaro 1;35
Marrone 0;33 Giallo 1;33
Grigio Chiaro 0;37 Bianco 1;37

fonte: http://it.tldp.org/HOWTO/Bash-Prompt-HOWTO-5.html