Pense bête

De BlaxWiki
Aller à la navigationAller à la recherche

//////////////////////////////////////////////////////////////////////////////////////////////////////
NB : ceci est mon "pense-bête" _personnel_ : j'y mets mes notes au fur et à mesure de ma découverte de
Linux - Mandrake/Mandriva principalement, Debian, Knoppix et dérivés(kanotix ...) et Cygwin parfois-.
Vous y trouverez donc des erreurs, des explications incomplètes ou qui ne correspondent plus aux versions actuelles et des choses que je suis le seul à comprendre :
il est donc bien préférable de se fier aux documents cités en références dont ces explications sont généralement tirées.
Mais comme certaines explications peuvent être utiles, je laisse ce fichier en ligne.
Il n'y a pas de classement ou de liens : utilisez la fonction "recherche" de votre navigateur (ou de votre éditeur de texte).

A utiliser à vos risques et périls :)

Jean-Claude Garaud
///////////////////////////////////////////////////////////////////////////////////////////////////////

Géographie
==========
http://www.geoportail.fr
Googleearth

Les mines de renseignements
===========================
http://mdvmondelinux.tuxfamily.org/Da-Charte,105?lang=fr	Charte Mandriva avec liens intéressants
http://www.linfo.org/main_index.html				The Linux Information Project
http://www.linux-pour-lesnuls.com
http://www.google.fr/linux					Google pour Linux
http://wiki.mandriva.com/fr/Accueil
http://wiki.mandriva.com/fr/Vade_Mecum
http://forum.mandriva.com/index.php?&op=Fr
http://forum.mandriva.com/index.php?&op=En
http://club.mandriva.com/xwiki/bin/view/KB/GettingHelp		Vademecum du débutant
http://club.mandriva.com/xwiki/bin/view/KB/GettingHelp?language=fr#HLEVADEMECUMDUDEBUTANT
http://librenix.com/						Linux System Administration Portal
http://tldp.org/						The Linux Documentation Project
http://tldp.org/LDP/intro-linux/html/				Introduction to Linux
	http://tldp.org/LDP/intro-linux/html/chap_04.html	Processes
http://www.freenix.fr/unix/linux/Guide/				Le guide du rootard
http://www.delafond.org/survielinux/				Guide de survie du débutant sous Linux
http://lea-linux.org
http://www.trustonme.net/global.php				Didacticiels divers
http://www.jennings.homelinux.net/tips.html			Linux tipsfreenx
http://www.ac-creteil.fr/reseaux/systemes/linux/Welcome.html
http://www.funix.org/fr/linux/main-linux.php3?ref=main&page=menu
http://www.zebulon.org.uk/
http://christian.caleca.free.fr/index.html
http://aplawrence.com
http://linux-newbie.sunsite.dk/index.html
http://www.unixguide.net/linux/linuxshortcuts.shtml
http://www.freeos.com
http://www.anfalab.org
http://tldp.org
http://www.linux-france.org/article/cesar/index.php?page=501	Petit journal d'un linuxien novice
http://astuce.linux.free.fr/
http://troumad.free.fr/Linux/Linux.sxw
http://guide.andesi.org						installer distribution Debian
http://funix.chez.tiscali.fr/informatique/linux/		Configs diverses
http://linux-sottises.net					Configs diverses
http://homepages.shu.ac.uk/~cmsps/unix/index.html		Unix, Linux and X
http://www.shu.ac.uk/schools/cms/teaching/ps/unix/utools.html	Petits outils (wc, tee, tr, sort, cut, paste, cmp, sdiff, join, lp, pr, uniq, awk etc.)
http://www.univ-st-etienne.fr/infsci/linfo/l0/unix/Cours/Html/	UNIX Principes de base
http://cyberzoide.developpez.com/unix/				Pense bête pour UNIX
http://www.lalitte.com/nat					Réseau : NAT
http://www.commentcamarche.net/
http://cryptos.ch/						MDKMondelinux
http://www.protocols.com/
http://www.w3schools.com/default.asp				HTML, XML, SQL, PHP, etc.
http://club.mandriva.com/xwiki/bin/KB/				Documentations Mandriva
http://soft.zoneo.net/Linux/					ZoneO-trucs pour Mandriva Linux
http://tille.xalasys.com/training/tldp/ch04s02.html		Boot process
http://www.funix.org/fr/linux/main-linux.php3?ref=main&page=menu	Courrier Electronique
http://www.coagul.org/article.php3?id_article=234		Copier/partager/synchroniser un fichier entre deux postes, sauvegardes
http://faculty.ucr.edu/~tgirke/Documents/UNIX/linux_manual.html	Linux essentials
http://www.comptechdoc.org/os/linux/usersguide/			CTDP Linux User's Guide 
http://www.linuxguide.it/linux_commands_line_en.htm		Linux en ligne de commange
http://framasoft.blip.tv/					vidéos sur le libre

Interfaces graphiques (bureau, gestionnaire de fenètres)
========================================================
icewm
http://troumad.developpez.com/linux/serveurx/icewm/
http://www.trustonme.net/didactels/73.html

Aide
====
man <commande externe>
help <commande interne>

Utiles
======
Easy urpmi			http://easyurpmi.zarb.org/?language=fr
Easy Mandriva			http://s186790720.onlinehome.fr/

Tutorials
=========
http://www.linuxplanet.com/linuxplanet/tutorials/?Sort=Title

Traducteur en ligne
===================
http://www.reverso.net

Processus de boot de linux, runlevel, services
==============================================
http://forum.zebulon.fr/index.php?showtopic=54333
http://www.linux-wizard.net/howto.php?section=1&key=services

Pour la gestion des services :
# mcc
puis -> services
ou directement (mcc appelle drakservices) :
# drakservices
ou, plus puissant (permet de changer l'ordre de démarrage ou arrêt), installer, très sympa !
# tksysv

En ligne de commande :

- Démarrage/arrêt :
# service <nom-du-service> status | start | stop | restart
ou bien (équivalent) 
# /etc/rc.d/init.d/<script_du_service> status | start | stop | restart

- Ajouter un service ou changer l'ordre de démarrage des services
Tous les scripts des services sont dans /etc/init.d/
Les services à lancer pour un runlevel "x" (8 runlevel possibles de 0 à 7) sont listés dans les répertoires /etc/rc.d/rcx.d.
Les services à lancer (ou arrêter) sont simplement des liens vers les scripts qui sont dans /etc/init.d,
avec un nom de la forme :
Sxyservice	Script de démarrage (S pour start), xy numéro d'ordre de démarrage
Kxyservice	idem pour l'arrêt (K pour kill)

Nb :
# runlevel
N 5
indique le runlevel actuel (5 en mode graphique pour Mandrake) 

Démarrage automatique d'applications
====================================
cf :
~/.kde/Autostart
/usr/share/autostart

Configuration du démarrage, gestionnaire de connexion
=====================================================
Voir mcc > Démarrage

Démarrage avec/sans interface graphique et connexion avec/sans login et mot de passe
------------------------------------------------------------------------------------
mcc > Démarrage > Configurer la connexion automatique

Démarrage de KDE (sauvegarde de la session)
===========================================
K > System > Configuration > KDE > KDE Components > Session Manager
ou plus directement :
$ kcontrol
	> KDE Components > Session Manager
On Login
   choisir :
	Restore previous session	: sauvegarde automatique de la session rechargée au prochian démarrage
	Restore manually saved session  : fait apparaître un nouveau choix dans le menu K : "Save Session"
					   La session sauvegardée sera rechargée au prochain démarrage
	Start with an empty session

 
Screen
======
http://www.rackaid.com/resources/tips/linux-screen.cfm

NB : 	C-a	représente l'appui simultanné sur les touches 	Ctrl et A
	C-d							Ctrl et D
$ screen	Crée un screen (écran) avec une fenêtre (windows), en fait une nouvelle console avec shell
		qui répond maintenant, en plus du comportement du shell normal, à l'appui sur C-a
C-a		Après avoir lancé la commande screen, C-a permet d'envoyer une commande à screen plutôt qu'au shell normal 
C-a ?		Aide touches rapides		
C-a c		Crée dans un screen (écran) une nouvelle fenêtre (window) avec un shell
C-a n		next window
C-a p		previous window
C-d		supprime la fenêtre sur laquelle on est
C-a k		quitter screen
$ exit		idem
C-a d		"détacher" (=ferme) une fenêtre. On revient au shell normal.
		La fenêtre existe toujours. Pour la "réattacher" (la faire réapparaître),
		utiliser screen -ls pour lister les fenêtres et leur état (attached/detached), puis :
$ screen -r <PID.fenêtre>	"réattache" la fenêtre <PID.fenêtre>
$ screen -dr <PID.fenêtre>	"détache" puis "réattache" lafenêtre <PID.fenêtre> (utile pour passer dans une autre session)
$ screen -x <PID.fenêtre>	duplique le fenêtre

C-a H		Creating logfile "screenlig.0
C-a H		Logfile "screenlig.0 closed
C-a H		Appending to logfile "screenlig.0
etc

C-a M		monitor (affiche au bas des windows l'état d'activité d'autres windows)

$ screen -ls			Liste les écrans avec leur PID
$ screen -list			idem
$ screen -S toto		crée un écran qui a pour nom "toto"

$ ps auwx | grep -i screen 	Affiche les demons et fenêtres
$ killall screen		Pour supprimer screen (un peu brutal !)

En résumé :
-----------
$ screen -S nom			crée un screen et lui donne le nom "nom"
$ screen -ls			liste les "screen" créés
[Ctrl][A][d]			détache le screen
$ screen -r nom			rattache le screen "nom"
$ screen -r numéro		idem en passant le n° donné par screen -ls
$ screen -x nom			duplique la console "nom"
$ exit				termine le sceen actuel

Consoles (terminal) diverses et graphiques
==========================================
screen
Yakuake				http://yakuake.uv.ro/
Hotwire				http://submind.verbum.org/hotwire/wiki		http://cgwalters.livejournal.com/

Souris en console texte
=======================
# urpmi e
# service gpm status
et s'il n'est pas démarré :  service gpm start
Le fichier de configuration est dans /etc/sysconfig/mouse

Souris graphique
================
# drakmouse ou mousedrake

sort
====
cf. http://www.shu.ac.uk/schools/cms/teaching/ps/unix/utools.html

Soit le fichier "essai.csv"
s00225	Mm.156919	Cathepsin Z
s00311	Mm.205266	Acetyl-Coenzyme A acyltransferase 1
s00514	Mm.42146	Toll-like receptor 6
s00360	Mm.20271	RIKEN cDNA D330023I04 gene

Trier les codes Mm :
$ sort -n -t. -k2 essai.csv (ou sort -n -t. +1 essai.csv)
s00360  Mm.20271        RIKEN cDNA D330023I04 gene
s00514  Mm.42146        Toll-like receptor 6
s00225  Mm.156919       Cathepsin Z
s00311  Mm.205266       Acetyl-Coenzyme A acyltransferase 1

-n	numérique
-t.	séparateur : le point
-k	clé

Join
====
Pour joindre des fichiers qui ont un champ en commun
 
Exemple :
---------
Fichier t1 :
------------
Article	Couleur
basket	bleu
pantalon	vert
chaussure	noir
lacets	rouge
cirage	noir
lunettes	noir

Fichier t2 :
------------
Prix	Article	Magasin
400	chaussure	Leclerc
150	jeans		Auchan
15	cirage	Carrefour
300	basket		Decathlon
200	pantalon	Leclerc
5	lacets		Leclerc

Comparer et joindre le champ 2 du fichier 1 (-1 2 ou j1 2) au champ 1 du fichier 2.
-------------------------------------------------------------
$ join -1 1 -2 2 t1 t2
Article Couleur Prix Magasin
pantalon vert 200 Leclerc
lacets rouge 5 Leclerc

=> Ne fonctionne pas : trier les fichiers avant sur les champs commnuns (Article):
$ sort -k1 t1 > tt1
$ cat tt1
Article	Couleur
basket	bleu
chaussure	noir
cirage	noir
lacets	rouge
lunettes	noir
pantalon	vert

$ sort -k2 t2 > tt2 
$ cat tt2
Prix    Article Magasin
300     basket          Decathlon
400     chaussure       Leclerc
15      cirage  Carrefour
150     jeans           Auchan
5       lacets          Leclerc
200     pantalon        Leclerc

$ join -1 1 -2 2 tt1 tt2
Article Couleur Prix Magasin
basket bleu 300 Decathlon
chaussure noir 400 Leclerc
cirage noir 15 Carrefour
lacets rouge 5 Leclerc
pantalon vert 200 Leclerc

-a numéro_de_fichier : même sortie avec en plus les lignes qui n'ont pas de correspondance
----------------------------------------------------------------
$ join -a1 -a2 -1 1 -2 2 tt1 tt2
$ join -a1 -a2 -1 1 -2 2 tt1 tt2
Article Couleur Prix Magasin
basket bleu 300 Decathlon
chaussure noir 400 Leclerc
cirage noir 15 Carrefour
150 jeans Auchan
lacets rouge 5 Leclerc
lunettes noir
pantalon vert 200 Leclerc

-v n°_de_fichier ; n'afficher que les lignes qui n'ont pas de correspondance
-------------------------------------------------------------
$ join -v1 -v2  -1 1 -2 2 tt1 tt2
$ join -v1 -v2  -1 1 -2 2 tt1 tt2
150 jeans Auchan
lunettes noir

cut
===
extrait une colonne de données d'un fichier
cf. http://www.shu.ac.uk/schools/cms/teaching/ps/unix/utools.html

awk
====
** http://www.vectorsite.net/tsawk1.html		A Guided Tour Of Awk
* http://www.gnu.org/software/gawk/manual/gawk.html	The GNU Awk User's Guide
*** http://www.cs.hmc.edu/qref/awk.html			Getting started with awk
http://sparky.rice.edu/~hartigan/awk.htm		How to Use AWK
*** http://www.uga.edu/~ucns/wsg/unix/awk/			UNIX Utilities - awk
*** http://stud.wsi.edu.pl/~robert/awk/			Awk Tutorial
*** http://www.bolthole.com/awk6.html			Awk et shell
http://dmoz.org/Computers/Programming/Languages/Awk/	liens divers
http://allman.rhon.itam.mx/dcomp/awk.html		Introduction to akw
http://www.tldp.org/LDP/abs/html/awk.html		Awk et bash
http://www-128.ibm.com/developerworks/library/l-awk1.html
						l-awk2.html
						l-awk3.html
http://www.student.northpark.edu/pemente/awk/gawk_str.htm	String manipulations
*** http://www.oracle.com/technology/pub/articles/dulaney_awk.html AWK: The Linux Administrators' Wisdom Kit
http://lea-linux.org/cached/index/Dev-awk.html		Introduction à (g)awk
http://www.stationlinux.org/fiche.67.html		Gawk Chapitre 	1
http://www.stationlinux.org/fiche.75.html				2
http://www.stationlinux.org/fiche.76.html				3
http://www.stationlinux.org/fiche.77.html				4
http://www.stationlinux.org/fiche.81.html				5

Imprimer tout le fichier (idem cat fichier.txt) :
	$ awk '{print}' fichier.txt
Imprimer les lignes contenant "toto" (idem grep toto fichier.txt)
	$ awk '\toto\' fichier.txt
	$ awk '"toto"' fichier.txt	idem (!)
Imprimer les champs 5 7 et 12 des lignes contenant "toto" 
	$ awk '\toto\ {print $5,$7,$12}' fichier.txt
Imprimer les champs 3 et 7 si le champ 3 est inférieur à 2000
	$ awk '{if ($3 < 2000) print $3, "    ",$7}' fichier.txt
   Nb : pour entrer la tabulation : <ctrl><v><tab>, ou bien mettre "\t"
Afficher les utilisateurs par numéro croissant
	$ awk -F":" '{ print $3 "\t" $1 }' /etc/passwd |sort -g
Utiliser comme séparateur la tabulation
	$ awk -F"\t" '{ print $4 "\t" $10 }' fichier
Afficher le temps CPU de ssh
	$ while true ; do ps auwx | grep [s]sh | awk '{print $3}'; sleep 1; done
   NB : [s] évite l'affichage de la commande grep 

Editeurs en console
===================
emacs
-----
http://www.tuteurs.ens.fr/unix/editeurs/emacs.html

Lancer :
$ emacs -r		# reverse vidéo

vi
--
Jed
---

Editeurs HTML
=============
http://en.wikipedia.org/wiki/List_of_HTML_editors

Editeurs en mode graphique
==========================
kwrite
kate
gedit		voir les très nombreus plugins sur http://live.gnome.org/Gedit/Plugins
		En particulier pour avoir le correcteur orthographique : urpmi gedit-plugins

X pour windows
==============
putty		www.putty.org/
cygwin		www.cygwin.com
Xming		sourceforge.net/projects/xming
		www.straightrunning.com/XmingNotes/

Outils de traitement de texte
=============================

expand / unexpand
-----------------
Remplace les tabs par des espaces et vice-versa


Programmation, bash, shell scripts
==================================

Introduction à l'écriture de scripts shell :
- Les bases	http://ftp.traduc.org/doc-vf/gazette-linux/html/2005/111/lg111-D.html
— Partie 2	http://ftp.traduc.org/doc-vf/gazette-linux/html/2005/112/lg112-F.html
- Partie 6	http://ftp.traduc.org/doc-vf/gazette-linux/html/2005/116/lg116-C.html

BASH
°°°°
- Bash Guide for Beginners / (Linux Shell Scripting Tutorial v1.05r3
 A Beginner's handbook)
--------------------------
http://www.tldp.org/LDP/Bash-Beginners-Guide/html/index.html
http://www.freeos.com/guides/lsst/

- BASH Programming - Introduction HOW-TO
----------------------------------------
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

- Guide avancé d'écriture des scripts Bash / Advanced Bash-Scripting Guide
------------------------------------------
http://www.bsdbooks.net/shells/scripting/fr/
http://abs.traduc.org/abs-3.1-fr/
http://www.tldp.org/LDP/abs/html/
http://www.mankira.com/modules/bash/index.html
http://personal.riverusers.com/~thegrendel/abs-guide-3.3.tar.bz2

http://subsignal.org/doc/AliensBashTutorial.html	Aliens Bash Tutorial
http://www.shelldorado.com/

Bash et history (en particulier):
---------------------------------
http://www.deadman.org/bash.html

Racourcis clavier
------------------
http://www.labo-linux.com/tips/raccourcis-claviers-pour-bash/

Dialog/Xdialog
°°°°°°°°°°°°°°
http://linuxgazette.net/101/sunil.html
http://ftp.traduc.org/doc-vf/gazette-linux/html/2004/101/lg101-P.html
http://www.delafond.org/traducmanfr/man/man1/dialog.1.html
http://thgodef.nerim.net/xdialog/doc/index.html

Quelques trucs
==============

Nom de l'hôte
-------------
$ hostname
(voir aussi uname -a)

Afficher les processus qui tournent
-----------------------------------
ps aux
<Ctrl><Esc>		idem en mode graphique
top
pidof NomDuProgramme

Voir aussi procps (http://procps.sourceforge.net/)

Affichage des informations sur les processus ((RAM activité cpu ...)
--------------------------------------------------------------------
vmstat 1			(1 = rafraîchossement toutes les secondes)
(pour avoir vmstat : urpmi procps)

Changer la priorité des processus
---------------------------------
nice
renice

Identifier le shell
-------------------
echo $SHELL
cf. http://unix.about.com/library/weekly/aa092500a.htm
La commande ps retourne les processus actifs, et en particulier le shell

Connaître la configuration matérielle et logicielle
---------------------------------------------------
cf. http://lea-linux.org/admin/exploration_config.html

Version de mandrake installée :
cat /etc/mandrake-release
ou bien
less /etc/mandrakelinux-release
less /etc/mandrake-release
less /etc/mandriva-release

Version du noyau Linux (kernel version)
---------------------------------------
$ uname -sr (cf. man uname)
Lister les noyaux installés :
$ rpm -qa kernel* | sort

Documentation sur les noyaux
http://wiki.mandriva.com/en/Docs/Howto/Mandriva_Kernels

Déterminer le type d'un fichier
-------------------------------
file nomfichier
Exemple :
# file $(which httpd)
/usr/sbin/httpd: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

Librairies utilisées par un programme
-------------------------------------
# ldd $(which httpd)
        libm.so.6 => /lib64/libm.so.6 (0x00002ac136da4000)
        libpcre.so.0 => /lib64/libpcre.so.0 (0x00002ac136efa000)
...

Infos sur un fichier (ou répertoire)
------------------------------------
stat nom_fichier
(donne en particulier le nombre de "hard links")

Récupérer le code de sortie d'une commande (errorlevel)
-------------------------------------------------------
Très utile dans les scripts, ce code peut aussi être visualisé directement en ligne de commande grâce à echo $?.
Exemple :
$ mount | grep /dev/hda1
$ echo $?
1
=> la partition /dev/hda1 n'est pas montée, n'existe pas, est déjà montée ... (voir man mount)

$ mount | grep /dev/sda7
/dev/sda9 on /mnt/backup type ext3 (rw)
$ echo $?
0
=> la partition /dev/sda9 est montée

Extraire ce qui est lisible d'un fichier programme
-----------------------------------------------------
$ strings <fichier>

Déterminer le type d'un fichier
-------------------------------
$ file Nom/du/fichier
ou éventuellement jeter un coup d'oeil sur le début du fichier :
$ head Nom/du/fichier				les 10 premières lignes
$ head -c 20 Nom/du/fichier			les 20 premiers bytes
$ head -n 2 Nom/du/fichier			les 2 premières lignes
$ strings Nom/du/fichier | head			les 10 premières lignes imprimables

Liste des utilisateurs connectés
--------------------------------
$ who
$ finger

Informations sur un compte
--------------------------
$ grep <login> /etc/passwd
$ finger <login>


Configuration matérielle (hardware)
===================================
lspci
urpmi hardinfo			(MDV 2008. Ressemble à mcc + benchmarks))


D'après Gnu/linux magazine N° 71

Bus PCI
-------
$ lspci
$ lspci -v
$ lspcidrake

Bios et hardware
----------------
# dmidecode			(à installer)
Exemple : chercher les caractéristiques de la carte mère :
# dmidecode | less
Dans less	taper	h		(pour la doc en ligne)
			-i 		(pour des recherches en ignorant la casse)
			/board		(pour trouver la 1° occurence de board)
			n		(pour la suivante)
			N		(pour revenir à la précédante)

# lshw					List hardware
# lshw -html

Test des disques durs :
----------------------
# hdparm -i /dev/hdx
Nb : ne fonctionne pas (actuellement 14-4-2005) avec disques SATA ; dans ce cas taper hdparm /dev/sdx qui ne retourne pas des infos vraiment intéressantes 

# hdparm -t /dev/sda
 Timing buffered disk reads:  182 MB in  3.01 seconds =  60.49 MB/sec

# hdparm -T /dev/sda
 Timing cached reads:   1518 MB in  2.00 seconds = 758.37 MB/sec

SMARTmontools (=smartctl)
-------------------------
# urpmi smartmontools
# smartctl -a /dev/sda


Processeurs et autres infos
--------------------------
$ cat /proc/cpuinfo		processeur
$ free (ou free -m)	 	état de la mémoire.
$ cat /proc/meminfo		"
$ lspci 			liste des périphériques sur bus PCI
$ lshw				hardware lister (à installer)
$ dmidecode			à installer : semble contenu dans lshw et LM Sensors,

Périphériques, udev
===================
http://www.marmottux.org/index.php/2004/10/29/5-udev-ou-comment-remettre-les-peripheriques-en-place

Utilitaire de contrôle des disques durs
Vérifier l'état de santé des disques durs
==========================================

SMARTmontools
-------------
http://smartmontools.sourceforge.net/
man smartctl
smartctl -h
http://lea-linux.org/cached/index/Hardware-hard_plus-smart.html

Fichier de configuration
/etc/smartd.conf

Tout afficher
-------------
# smartctl -a /dev/hda 
# smartctl -a -d ata /dev/sda			pour disque SATA quand "smartctl -a /dev/sda" ne suffit pas

N'afficher que les erreurs
--------------------------
# smartctl -a -q errorsonly /dev/hda 

Décodage des informations retournées
------------------------------------
Pour comprendre ce qui s'affiche, voir les exemples commentés sur
http://smartmontools.sourceforge.net/#sampleoutput

CD bootables contenant smartmontools
------------------------------------
voir la liste page http://smartmontools.sourceforge.net/#sampleoutput
	"Is there a bootable standalone CD or floppy that contains smartmontools?"

Arrêter le PC
=============
cf: http://www.faqts.com/knowledge_base/view.phtml/aid/24476/fid/10

halt
poweroff
reboot
shutdown

Pour l'arrêter complètement :
	halt	(ou su -c halt)
	shutdown now
	shutdown -h now
(h = halt)


Avec redémarrage :
	shutdown -r now
(r= reboot)
ou
	<CTRL><ALT><DEL>

A partir de X Window, d'abord
	<CTRL><ALT><BACKSPACE>
pour quitter X Windows, puis
	<CTRL><ALT><DEL>


	shutdown +3
(shutdown dans 3 minutes)
	shutdown -c
supprimer l'arrêt programmé par la commande précédante

	shutdown -Fr now
	shutdown -fr now
-F = avec fsck au reboot
-f = sans fsck au reboot

	init 5

Fichiers standard
-----------------
cf. http://livefirelabs.com/unix_tip_trick_shell_script/june_2003/06092003.htm
Un programme UNIX standard ouvre par défaut 3 fichiers
	Nom			Numéro
- standard input (stdin)	0
- standard output (stdout)	1
- standard error (stderr)	2

Redirections
------------
cf. http://unix.about.com/library/weekly/aa110600b.htm#stderr

Rediriger la sortie d'une commande vers un fichier :
cmd > fic
Rediriger stderr vers un fichier :
cmd 2> fic
Rediriger stdin et stderr vers le même fichier :
cmd > fic 2>&1
Rediriger stdin et stderr dans 2 fichiers différents :
cmd > fic1 2> fic2
Rediriger à la fois stdout et stderr vers le fichier fic
cmd &>fic
Diriger le résultat (stdout) d'une commande simultanément vers l'écran et un fichier :
cmd | tee fic

Diriger le résultat d'une commande (stdout + stderr) simultanément vers l'écran et un fichier :
cmd 2>&1 | tee fic

Pour ajouter à un fichier déjà existant, remplacer > par >>
Pour tee, l'option d'ajout est -a :
cmd | tee -a fic

Arborescence (nom des répertoires)
==================================
http://www.pathname.com/fhs/2.2/
okki666.free.fr/docmaster/articles/linux025.htm

Différence entre bin et sbin : bin=binaires, sbin=binaires système.
=> pour un utilisateur standard, bin peut être dans le PATH, mais sbin n'a aucune raison d'y être.

/	racine (root) du système de fichiers
/bin	programmes nécessaires pour démarrer le système en mode mono-utilisateur.
/boot
/dev	device files : points d'entrées vers des périphériques physiques
/etc	fichiers de configuration
/home	données propres à chaque utilisateur
/lib	shared libraries nécessaires aux programmes de démarrage (principalement des programmes placés dans /bin et /sbin).
/mnt	pour le montage pour les périphériques en mode block (cdrom, floppy ...)
/proc	infos sur l'état du système et les différents processus
/sbin	programmes nécessaires au fonctionnement du système
	Les commandes placées dans /sbin (et dans /bin) ne sont en général pas exécutées par les utilisateurs.
/tmp	fichiers temporaires
/usr	usr = Unix System Resources. Données que les utilisateurs peuvent se partager
/var	fichiers qui sont susceptibles de changer fréquemment : logs, les files d'attentes pour les impressions, etc.

Répertoires dans /usr

X11R6		système Xwindow
X11R6/bin	exécutables pour le système Xwindow.
X11R6/lib	librairies pour les programmes dans /usr/X11R6/bin.
X11R6/lib/X11	librairies utiles au démarrage du serveur Xwindow.
X11R6/include/X11	fichiers d'entêtes des applications X11.

bin		programmes utilisables sur le système.
bin/X11		liens symboliques (et historiques) vers /usr/X11R6/bin
dict		dictionnaires utilisés par les vérificateurs orthographiques
etc		fichiers de configuration qui peuvent être partagés entre plusieurs machines. Vide sur MDK
include		fichiers entêtes (.h) pour le compilateur C
lib		librairies utilisées par les programmes des utilisateurs. Sous-répertoires pour les grosses applications
		Contient aussi des programmes qui ne sont jamais lancés directement
X11		lien symbolique vers /usr/X11R6/lib/X11

local		ce qui est spécifique à la machine locale
local/bin	programmes
local/lib	librairies
local/doc	documentations
man		man pages
src		sources des diverses applications installées sur le système.
src/linux	sources du noyau.

Les répertoires dans /var
lock		fichiers de verrouillage. Par convention, le nom des fichiers est toujours LCK.<périphérique>
log		logs du système
preserve	sauvegardes d'édition de vi.
spool		contient les files d'attentes d'impressions
spool/cron	entrées crontab pour l'automatisation des tâches.
spool/lpd	fichiers en attente d'impression.
spool/mail	boites à lettres (mailbox) et les messages (mails) des utilisateurs.

PATH
----
Affichage :
echo $PATH

Ajout :
PATH=$PATH:nouveau_rep

Pour que la nouvelle valeur soit utilisée par le shell et les threads :
export PATH

Ou en une seule commande :
export PATH=$PATH:nouveau_rep

Ajouter le nouveau path à l'environnement d'un utilisateur :
Editer .bash_profile
Y mettre : PATH=$PATH:nouveau_rep
et vérifier que la commande export PATH se trouve dans le script (sinon la rajouter)

Ajouter le nouveau path à l'environnement de tous les utilisateurs (sauf root) :
Editer /etc/profile
Y ajouter comme ci-dessus le nouveau path avant la commande d'export du PATH

Raccourcis clavier et souris, quelques touches rapides très pratiques
=====================================================================
http://linux-newbie.sunsite.dk/lnag_commands.html#shortcuts
et touches système :
http://www.linux-france.org/article/cesar/index.php?page=5035

[Alt][Ctrl][Fn]			Afficher la console n
[Ctrl][Fn]			Afficher le bureau n
[Alt][Ctrl][->]			Affiche le bureau suivant
[Alt][Ctrl][<-]			Affiche le bureau précédent
Roulette de la souris sur les images des bureaus dans la barre de tâches

[Ctrl][+]			Zoomer (nombreux browsers, konqueror, firefox ...)
[Ctrl][-]			'dé'zoomer
[Ctrl][Alt][Esc]		lance xkill
[Ctrl][Alt][BkSpc]		kill le serveur X-windows courant
[Ctrl][d]			en début de ligne : ferme le terminal courant
				sinon envoie EOL au processus courant
[Ctrl][z]			Stoppe le processus courant puis :
				bg pour l'envoyer en tâche de fond
				fg pour le remettre en avant.

Fenêtres
--------
Déplacer : 	[Alt] [bouton gauche de la souris]
Redimensionner :[Alt] [bouton droit de la souris]

Sous KDE
--------
[Ctrl][Esc] 			Visualisation avec possibilité de suppresion des processus
[Alt][F12]			(Bascule) permet d'émuler la souris à l'aide des flèches du clavier
[PrintScreen]			Ouvre KSnapshot, logiciel de copie d'écran
[Alt][PrintScreen]		Met une image de la fenêtre courante dans le presse-papier
[Ctrl][Alt][PrintScreen]	"	      de l'écran	"		"
[Ctrl][Alt][d]			(Bascule) fait apparaître/disparaître les fenêtres présentes sur le bureau
[Alt][LeftMouseButton] 		Permet de déplacer une fenêtre dont la barre de titre est inaccessible

Raccourci touches rapides [Alt][F2]
-----------------------------------
Ouvre une fenêtre pour taper une commande.
A partir d'une session utilisateur, pour lancer une commande en root :
kdesu commande

Ce raccourci manque dans KDE, session root
Pour l'installer :
Menu : System / Configuration / KDE / Accessibility / Keyboard shortcuts / Modifier Keys
et cliquer sur Defaults

magic sysrq keys (touches magiques)
----------------
Pour arrêter une machine plantée.
http://snafu.freedom.org/linux2.2/docs/sysrq.txt (EN)
http://fr.wikipedia.org/wiki/Magic_SysRq_key
http://club.mandriva.com/xwiki/bin/view/KB/MagicSysRqKey
NB : il faut que le noyau ait été compilé avec 'Magic SysRq key' à yes (CONFIG_MAGIC_SYSRQ).

[ALT][SysRQ][command key]

[command key] :
'r'     - Turns off keyboard raw mode and sets it to XLATE.
'k'     - Kills all programs on the current virtual console.
'b'     - Will immediately reboot the system without syncing or unmounting
          your disks.
'o'     - Will shut your system off via APM (if configured and supported).
's'     - Will attempt to sync all mounted filesystems.
'u'     - Will attempt to remount all mounted filesystems read-only.
'p'     - Will dump the current registers and flags to your console.
't'     - Will dump a list of current tasks and their information to your
          console.
'm'     - Will dump current memory info to your console.
'0'-'9' - Sets the console log level, controlling which kernel messages
          will be printed to your console. ('0', for example would make
          it so that only emergency messages like PANICs or OOPSes would
          make it to your console.)
'e'     - Send a SIGTERM to all processes, except for init.
'i'     - Send a SIGKILL to all processes, except for init.
'l'     - Send a SIGKILL to all processes, INCLUDING init. (Your system
          will be non-functional after this.)

En résumé, en cas de plantage faire dans l'ordre :
[Alt][Syst][s]		synchronise les partitions montées
[Alt][Syst][u]		remonte les partitions en readonly
[Alt][Syst][b]		reboot
ou encore 
[Alt][Syst][r]		débloque le clavier ?
[Alt][Syst][s]		synchronise les partitions montées
[Alt][Syst][u]		remonte les partitions en readonly
[Alt][Syst][e]		arrête tous les processus sauf init
[Alt][Syst][i]		"
[Alt][Syst][b]		reboot

Dans konqueror
--------------
F4	ouvre une console au niveau du répertoire dans lequel on se trouve
Cliquer avec le bouton du milieu de la souris sur un répertoire : ajoute un onglet avec le contenu de de répertoire 

Lister les modules, lister le hardware
======================================
$ cat /proc/modules
ou
# lsmod

$ lspci



Xev (Xevent)
============
Xev creates a window and then asks the X server to send it events
Pour récupérer, en particulier, le code des touches

Utilisation de "info"
=====================
 <q>		quitter
 <p>		previous node
 <n>		next node

Menus :
se déplacer à l'aide des flèches sur une entrée de menu indiquée par ::
<entrée>	sélectionne l'entrée de menu
<u>		up (pour revenir en arrière)

ps
===
$ ps affiche tous les processus lancés par l'utilisateur dans le terminal
$ ps -x affiche tous les processus lancés par l'utilisateur
$ ps -aux affiche tous les processus lancés par tous les utilisateurs

pstree
------
affiche les processus sous forme d'arborescence

ls
==

Pour afficher la configuration de l'affichage en couleur :
---------------------------------------------------------
$ dircolors -p
NB : le code de couleur y est indiqué.

Nombre de fichiers dans un répertoire ou dans une partition
-----------------------------------------------------------
ls | wc -l
ls -ARl | wc -l

-A	ne liste pas les entrées . et ..
-R	récursif
-1	affiche un fichier par ligne
-l	compte lenombre de lignes

Affichage avec année :
----------------------
ls -l --time-style=long-iso

Récursif
--------
ls -R /repertoire

less
====
less fichier
ls -l /etc | less

Aide :
------
h ou H

Recherche :
-----------
/chaine_cherchée (les chaînes trouvées apparaissent en surbrillance)
	Pour passer à la suivante :   n
			 précédente : Shift n
Quitter :
---------
q

Renommer un fichier (ou un répertoire)
=====================================
mv source destination

Renommer des fichiers
=====================
rename .htm .html *.htm
krename 	(urpmi krename)
gprename	(gprename.sourceforge.net/)
metamorphose

En ligne de commande :
for f in `ls`; do mv $f $f|sed s/toto/titi/; done

Changer les espaces en _
------------------------
(NB : La boucle "for" ne fonctionne pas dans ce cas car "for" découpe les noms au niveau du caractère espace : voir par exemple le résultat de :
$ for f in `ls`; do echo $f ; done
Utiliser à la place la boucle "while read")

$ ls | while read d ; do mv "$d" "$(echo $d | sed s/" "/"_"/)" ;done

Supprimer les espaces
---------------------
$ ls | while read d ; do mv "$d" $(echo "$d" | tr -d " ") ;done

Insérer un espace après (par exemple) la première lettre "t"
------------------------------------------------------------
$ ls | while read d ; do mv "$d" "$(echo $d | sed s/"t"/"t "/)" ;done


Recherches : grep, egrep, agrep, rgrep, find ...
==========================================
http://www.linux-tutorial.info/modules.php?name=Tutorial&pageid=32
http://cryptos.ch/article.php3?id_article=26
http://b.berteau.free.fr/trucs.php

Rechercher une chaîne de caractères dans l'ensemble des fichiers d'une arborescence
---------------------------------------------------------------------------------
grep -rH chaîne *		-H ou --with-filename pour afficher le nom des fichiers contenant la chaîne 
-r est équivalent à -R, --recursive, -d recurse
rgrep chaîne

ou encore :
find /repertoire/de/depart -type f -exec grep -il chaine {} \;
=> recherche à partir de "/repertoire/de/depart" les fichiers (= type f) contenant la chaine de caractères "chaine" (-i = sans tenir compte de la casse) et affiche juste le nom des fichiers trouvés (-l)

Rechercher une chaîne de caractères dans l'ensemble des fichiers d'un répertoire
---------------------------------------------------------------------------------
find répertoire -print | xargs grep chaîne_cherchée
=> -print | xargs permet de faire afficher en début de ligne le nom du fichier qui contient la chaîne cherchée

ou beaucoup plus simple et mieux (possibilité de suivre les liens) :
rgrep -iFlr chaîne_cherchée /répertoire/de/départ
i	ignore case 
l	list filename only
F	follow links
r	recursively scan through directory tree

Rechercher les fichiers avec leur extension
-------------------------------------------
Exemple : rechercher tous les fichiers html à partir du réperoire en cours (.)
$ find . -type f -name *.html

Changer le nom de fichiers
--------------------------
toto en titi sur un enesmble de répertoires :

$ find . -type f -name toto | while read "df1"; do d=$(dirname "$df1") ; f2="/titi" ; df2=$d$f2; mv "$df1" "$df2" ; done
Les "" sont nécessaires qand les noms de fichiers ou de répertoires contiennent des caractères espace

Mettre en minuscules :
$ find . -type f -name TOTO | while read df1 ; do d=$(dirname "$df1") ; f2=/toto ; df2="$d$f2" ; echo $df2 ; mv "$df1" "$df2" ; done

Rechercher simultannément plusieurs chaînes
--------------------------------------------
Exemple
egrep "while|read|for" /repertoire/*

Afficher le contenu de tous les fichiers d'un répertoire en évitant les lignes vides et les commentaires
----------------------------------------------------------
egrep -v "^$|^#" /repertoire/* | less
-v	--invert-match
^	début de ligne
$	fin de ligne
^#	ligne commençant par #

Afficher le nom des fichiers contenant une chaîne
grep -l chaîne_cherchée /repertoire/*

agrep : recherche approximative (fuzzy)
--------------------------------------

vi
==
http://www.guilde.asso.fr/ressources/contrib/vi.html
Mode d'emploi de vi : taper vimtutor
Voir aussi : http://www.linux-pour-lesnuls.com/astucevi.php

Remplacements
=============
sed
kfilereplace

sed
===
http://www.faqs.org/faqs/editor-faq/sed/
http://thomas.leduc.free.fr/faqs/index.php?theme=sed

sed s/"chaîne_cherchée"/"chaîne_de_remplacement"/g fichier_source > fichier_destination
s	substituer
/	entre // la chaîne à chercher et la chaîne qui la remplace
g	répéter la substitution

Remplacer \ par / (slash et back-slash)
---------------------------------------
r="\toto \titi"
echo $r | sed   's/\\/\//g' > fic
ou bien :
echo $r | sed   s/\\\\/\\//g > fic
cat fic
/toto /titi

Modifier une variable
---------------------
r=$(echo "C'est toi ? Bonjour toi !" | sed 's/toi/vous/g')
echo $r
C'est vous ? Bonjour vous !

Une meilleure solution est d'utiliser :
r="C'est toi ? Bonjour toi !"
$ echo ${r//toi/vous}
C'est vous ? Bonjour vous !
cf. "Remplacements" et "Remplacements multiples" ci-dessous

Pour remplacer \ par / (slash et back-slash)
r="\toto \titi"
$ echo ${r//\\//}
/toto /titi

$ c=${r//\\//}
$ echo $c
/toto /titi

Autres exemples sed plus loin ...

Quelques commandes intéressantes
================================
locale
------
Affiche l'environnement local
locale -a		toutes les informations locales

Jeu de caractères utilisé
-------------------------
$ locale charmap
ISO-8859-1

lspci
-----
lspci |less
lspci v |less
lspci vv |less


Affiche toutes les infos concernant le bus PCI et les périphériques qui y sont connectés.

wc
--
Affiche le nombre de lignes dans un fichier (fichier align.R par exemple)
$ wc -l align.R
492 align.R
$ cat align.R |wc -l
492

tail
----
tail /var/log/syslog			affiche les 10 dernières lignes
tail -n 30 /var/log/syslog		affiche les 30 dernières lignes
tail -f /var/log/messages		affiche en continu les 10 dernières lignes du fichier

lsof
----
En l'absence de toute option, lsof retourne la liste de tous les fichiers ouverts appartenant aux pocessus actifs
lsof -i			tous les fichiers internet
lsof -i :25		tous ceux qui utilisent le port 25 (SMTP)
lsof -i |grep imap	tous les processus IMAP actifs

Exemple : tester si un service est à l'écoute sur un port donné
# lsof -i :25
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
master  5709 root   11u  IPv4  14330       TCP *:smtp (LISTEN)
=> postfix (="master") est à l'écoute sur le port 24 (smtp) 

Afficher qui et quel processus utilise les fichiers dans le répertoire tmp :
# lsof +D /tmp

ldd (library dependancy dump)
-----------------------------
Liste les dépendances (librairies nécessaires pour le fonctionnement) d'une application. Exemple :
# which visudo
/usr/sbin/visudo
# ldd /usr/sbin/visudo
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/tls/libc.so.6 (0xb7eaf000)
        /lib/ld-linux.so.2 (0xb7fec000)

Voir aussi ldconfig et /etc/ld.so.conf
Explication de la facon dont les librairies sont liées dynamiquement aux applications : 
http://www.linux.com/feature/114007


nm
--
Affiche les symboles contenus dans les fichiers objet. Exemple :
$ nm -s /lib/ld-linux.so.2
0000fe80 t access
000154c4 b alloc_end
00014ed4 d any_debug
00011900 r auxvars.0
00000000 a _begin
0000efc0 W calloc

t,b ... = type de symbole
En minuscules : local
En majuscules : global (externe)
	t = dans le texte (code)
	b = data, non initialisé
	d = data, initialisé
	r = data, readonly
	a = absolu
	W = weak (defini à l'extérieur)
etc.
Voir man nm


find
----
http://www.linux-mag.com/2001-04/newbies_01.html
http://www.linux-mag.com/2002-09/power_01.html

Nb:
- AND implicite entre les opérateurs !
- la commande est par défaut récursive ; pour limiter la profondeur de recherche : -maxdepth n
- ne plus utiliser -name avec les versions récentes de Mandrake : si on l'utilise, le message d'erreur suivant s'affiche :
	find: paths must precede expression
	Usage: find [path...] [expression]

find / -name fichier.txt		localiser fichier.txt à partir de la racine
find . -name fichier.txt					à partir du répertoire où l'on se trouve

find / -name -type d repertoire		
find / -name fichier.txt -ls		affiche à la manière de ls

find / -name fichier.txt 2>/dev/null	supprime les messages d'erreur
find / -name '*fic*'			trouve la chaîne fic dans les noms de fichiers ou répertoires
find / -iname '*fic*'			ignore la casse
find / -size +10000k			trouve les fichiers de plus de 10000k (k = kilobytes, c = bytes)
find /home -iname '*do*' -type d 2>/dev/null	tous les répertoires contenant do dans le nom (ignore la casse)
						-type	d	directory
							f	regular file
							l	symbolic file
						-user uname
							username ou ID
find / -amin -10    # find files accessed in last 10 minutes
find / -atime -2    # find files accessed in last 48 hours
find / -empty       # find empty files and directories
find / -group cat   # find files owned by group cat
find / -mmin -5     # find files modified in last 5 minutes
find / -mtime -1    # find files modified in last 24 hours
find / -nouser      # find files owned by an invalid user
find / -user fred   # find files owned by fred
find /usr/local/toto -user bibi		# affiche tous les fichiers à partir du répertoire /usr/local/toto
					  qui ont pour utilisateur bibi 


Expressions
(and est implicite !)
find / -user fred -or -user george		tous les fichiers appartenant à fred ou george

Commandes
find ./tmp/ -name '*.tmp' -exec rm \{\} \;	efface tous les fichiers *.tmp du répertoire ./tmp
						attention, l'alias rm='rm -i' n'est pas utilisé !

chkconfig
---------
pour gérer les services (cf. man chkconfig)

# chkconfig --list |grep on		Liste des services démarrés
# chkconfig --list |grep httpd
httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
# chkconfig --add nom_service		ajouter un service

runlevel
--------
pour afficher le runlevel actuel et le précédent
Voir aussi init, telinit, et le fichier /etc/inittab
telinit n	pour changer de runlevel (passer au runlevel n)

mcc
---
Centre de controle Mandrake
fonctionne en mode graphique ou texte.

S'il n'est pas installé :
# urpmi drakconf

Pour lancer mcc en ligne de commande :
# mcc
ou
# drakconf
ou
# drakxconf

et pour les services :
# drakxservices

Session KDE root
ou bien session KDE buggée
Root desktop

Configuration de Mandriva
=========================
http://wiki.mandriva.com/fr/Configurer_Mandriva_Linux
http://wiki.mandriva.com/fr/Centre_de_Contrôle_Mandriva

et aussi :
Mandriva Management Console (LDAP, Web, Samba, DNS/DHCP) : http://mds.mandriva.org/content/MMC/install/en/mmc-generic-installation.html#id2518056

Bureau KDE root
===============
rm -rf ~/.kde
Redémarrer l'interface graphique : une interface standard est recrée.
Méthode la plus simple et la plus rapide pour obtenir pour root une interface KDE standard.
Si ça ne suffit pas, voir plus loin "Configuration de la session root de KDE pour qu'elle se comporte comme une session ordinaire"

Root logins are not allowed (MDV 2007)
======================================
# locate kdmrc
...
/etc/kde/kdm/kdmrc

Editer /etc/kde/kdm/kdmrc
Changer AllowRootLogin=false en AllowRootLogin=true
Redémarrer X (Alt Ctrl Backspace par exemple)

Configuration de KDE
====================
* > System > Configuration > Control Centre > KDE Components
En ligne de commande :
kcmshell --list				pour affichier la liste des configurations possibles

Associations par défaut
-----------------------
... > KDE components > Components chooser
permet de configurer le client mail, l'éditeur de texte, le browser web, etc. par défaut, 

> KDE Components > File Associations
------------------------------------
pour définir les associations de fichiers

Ou plus rapidement :
$ kcmshell filetypes

KDE4
====
Plasmoïdes
----------
http://www.kde-look.org/
Panel spacer : http://www.kde-look.org/content/show.php/Panel+Spacer?content=89304


Liens
=====

symboliques (symlink)
-----------------------
ls -s nom_fichier_réel nom_fichier_lien

hard link
-----------
ln nom_fichier_existant nouveau_nom_fichier
Pour connaître le nombre de hard links : stat NomFichier
Pour connaître les noms de fichiers correspondant à un inode :
$ ls -il /bin/gzip
159758 -rwxr-xr-x  3 root root 47856 mai 18 20:15 /bin/gzip*
$ find / -inum 159758 -xdev -ls 2>/dev/null
159758   48 -rwxr-xr-x   3 root     root        47856 mai 18 20:15 /bin/gunzip
159758   48 -rwxr-xr-x   3 root     root        47856 mai 18 20:15 /bin/gzip
159758   48 -rwxr-xr-x   3 root     root        47856 mai 18 20:15 /bin/zcat

Lien sur un répertoire
----------------------
$ sudo ln -s répertoire/existant lien/à/créer

Prompt
======
cf. http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/
$ echo $PS1
[\u@\h \W]\$

Quelques séquences escape intéressantes :
              \d     the date  in  "Weekday  Month  Date"  format
                     (e.g., "Tue May 26")
              \h     the hostname up to the first `.'
              \H     the hostname
              \j     the  number of jobs currently managed by the
                     shell
              \l     the basename of the shell's terminal  device
                     name
              \t     the current time in 24-hour HH:MM:SS format
              \T     the current time in 12-hour HH:MM:SS format

	      \@     the current time in 12-hour am/pm format
              \u     the username of the current user
              \w     the current working directory
              \W     the  basename  of the current working directory

Path
====
echo $PATH
Le path est créé/modifié dans de nombreux fichiers d'initialisation :
etc/rc.sysinit, /etc/profile, .bash-profile

Pour le modifier :
PATH=$PATH:/nouveau/path
export PATH

Su et PATH
===========
$ su
permet de passer sous root, mais avec le path de l'utilisateur d'origine. Pour avoir le path de root :
$ su -
cf. le prompt :
[user@PC user]$
[root@PC user]#
[root@PC root]#

Sudo
====
Paramétrage :
# visudo
et entrer les utilisateurs autorisés à exécuter des applications d'administration.

Ubuntu et root
==============
https://help.ubuntu.com/community/RootSudo

Sous compte utilisateur initialement créé :
$ sudo su - root
$ sudo commande
$ sudo -i			pour ouvir un shell root
pas de mot de passe root (il n'en a pas !)

Pour pouvoir ouvrir une sesson graphique :
- définir un mot de passe root
- éditer le fichier de configuration de kde (/etc/kde3/kdm/kdmrc) ou celui de gdm
et changer AllowRootLogin=false en true

Tuer un processus ou un ensemble de processus
=============================================
$ ps -aux | grep <nom du processu>	pour connaître le n° (PID) du processus
$ kill -9 n° du processus
$ killall nom du processus
$ xkill					(se lance aussi avec CTRL+ALT+ESC)
CTRL+ESC				lance la "ProcessTable" où on peut choisir les processus à tuer.
$ ksysguard				idem raccourci CRTL+EXC ci-dessus

Tuer une session X plantée (KDE, Gnome ou autre, ça arrive !!!) : <Ctrl><Alt><Backspace>

Voir aussi skill, pkill, xkill, ksysguard

www.freebsd.org/cgi/man.cgi?query=kill&sektion=1 :
 Some of the more commonly used signals:
     1       HUP (hang up)
     2       INT (interrupt)
     3       QUIT (quit)
     6       ABRT (abort)
     9       KILL (non-catchable, non-ignorable kill)
     14      ALRM (alarm clock)
     15      TERM (software termination signal)

http://sial.org/howto/shell/kill-9/:
Useless use of kill -9, un script intéressant : reallykill

Device or resource busy
=======================
ps ux
ps auf
lsof			liste des fichiers ouverts
fuser			pour identifer des processus qui utilisent des fichiers ou sockets
kill -9 $pid		pour tuer le processus qui bloque (quand on le connaît)

Le plus pratique :
umount -fl /point/de/montage/recalcitrant

Bash, Bashdb
============

Commandes internes au bash
--------------------------
Aide en ligne :
$ help commande
Ou sur page wab :
http://www.tldp.org/LDP/abs/html/internal.html

Bashdb
--------
Bashdb = BASH with Debugger : à récupérer sur http://bashdb.sourceforge.net/
Bashdb nécessite bash version 3 : récupérer les sources de bash et la doc sur http://www.gnu.org/software/bash/

Installations
-------------
voir les fichier "INSTALL" de bash et bashdb

1 - Commencer par patcher le source de bash comme indiqué dans le fichier "INSTALL" de bashdb :
se positionner dans le source de bash et :
patch -p1 < rep_source_de_bashdb/patch/bash-3.00.patch
./configure --enable-debugger
make
make install

NB : bash version 3 s'installe par défaut dans /usr/local/bin/.
Pour l'installer ailleurs lire le help de configure :
./configure --help		(cf. --prefix=/endroit/ou/l'installer)

2 - Puis installer le debuggueur :
./configure --with-bash=/usr/local/bin/bash
(en effet il faut indiquer à configure où se trouve bash3 : il ne trouve que la version bash2 dans /bin !)
make	rule car il ne trouve pas texi2html : l'installer
make check
make install

Scripts bash
=============
Première ligne :
#! /bin/bash

Tutorials :
- Guide avancé d'écriture des scripts Bash : http://abs.traduc.org/abs-3.1-fr/
- Linux Script Programming
http://www.comptechdoc.org/os/linux/programming/script/linux_pgscript.html

Exécuter un script sans avoir mis le droit x (et sans le faire précéder de ./) :
$ source nom_du_script
$ bash nom_du_script

Sinon, mettre le droit x :
$ chmod u+x nom_du_script
puis l'exécuter :
$ ./nom_du_script

Utile
°°°°°
Expressions régulières
----------------------
http://www.funix.org/fr/unix/expr-sed.htm

Caractères spéciaux
-------------------
cf. man echo :

\a	BEL
\\	\
\n	newline (saut ligne)
\b 	backspace (retour arrière)
\c	sans saut de ligne
\f	form feed
\r	CR
\t	tabulation
\v	tab vertical

Attention : dans la commande echo, -e est indispensable pour interpréter les caractères précédés de \ :
$ echo -e "abc\ndef"
abc
def
$ echo -e "abc\bdef"
abdef
$ echo -e "abc\tdef"
abc     def
$ echo -e "abc\fdef"
abc
   def
$ echo -e "abcde\rfg"
fgcde

Entrer un caractère spécial dans une commande immédiate
Par exemple pour initialiser la variable tab avec un caractère de tabulation, taper:
tab=" puis <ctrl><v> puis la touche tabulation.puis ".
Vérifier que la variable tab contient bien le caractère spécial :

echo "$tab" | od -a
0000000  ht  nl

echo "1${tab}2"
1       2

Envoyer le résultat d'un bloc de code dans un fichier
-----------------------------------------------------
Mettre le bloc de code entre {}
{
echo "bloc de code"
} > trace
Le résultat des dans le fichier "trace"

Débogage, "Trace on/off" :
--------------------------
# bash -vx ./monscript

dans le script :
set -vx				(active le débogage)
set +vx				(désactive le débogage)

Option de débogage :
Nom		Option		Description
No Exec		-n		Lit les commandes mais ne les exécute pas
Verbose		-v		Affiche toutes les lignes au moment où elles sont lues par le shell
Trace		-x		Affiche les commandes et leurs arguments lorsqu'elle sont exécutées

set -x envoie les messages vers stderr (fichier standard n° 2)
set +x les supprime
Pour récupérer les messages de stderr dans un fichier :
./monscript 2> /tmp/erreurs
ou bien
./monscript 2&1 > /tmp/erreurs

Le fichier est lu ligne à ligne.
Les lignes lues ne sont pas précédées du signe +, celles qui sont exécutées sont précédées de +

Utilisation des codes ascii
---------------------------
man ascii
Exemples :

En octal :
$ echo $'\125'
U

En décimal
$ echo $'\125'
U

en hexadécimal :
$ echo $'\x55'
U

Afficher le code ascii de chaîne, fichiers, etc.
-----------------------------------------------
hexdump
od

IFS
---
http://www.livefirelabs.com/unix_tip_trick_shell_script/oct_2003/10132003.htm

"Internal Field Separator", variable du shell.
Par défaut contient 3 caractères : space, tab, et newline
Utilisé pour délimiter les mots dans les commandes telles que read et set

$ echo "$IFS" | od -a
0000000  sp  ht  nl  nl
sp = space
ht = horizontal tab
nl = newline
le dernier nl est généré par la commande echo, en effet :
echo | od -a
0000000  nl

Pour que echo ne génère pas de "newline"
$ echo -n "$IFS" | od -a
0000000  sp  ht  nl

Idem en octal :
$ echo -n "$IFS" | od -b
0000000 040 011 012

Afficher le code ascii d'un caractère
-------------------------------------
$ echo -n a |od -i
0000000     97
0000001

$ echo -n z |od -i
0000000    122
0000001

$ code=`echo -n a |od -i | awk ' {print $2} '`
$ echo $code
97


Modifier IFS
------------
OLDIFS=$IFS
IFS=$'\n'

Test du contenu :
echo "$IFS" | od -a
0000000  nl  nl

Puis aprés utilisation remettre IFS à sa valeur initiale :
IFS=$OLDIFS
unset OLDIFS

Décompte du temps, chronomètre
==============================
usleep n		ne fait rien pendant n microsecondes
usleep 10000000		"		"    10 secondes
echo $SECONDS		affiche le temps en secondes depuis le démarrage d'un shell, d'un script. Peut être remis à 0 : SECONDS=0

read
====
http://www.faqs.org/docs/bashman/bashref_55.html
http://linuxreviews.org/beginner/Bash-Beginners-Guide/en/x4195.html
et redirections :
http://www.tldp.org/LDP/abs/html/x12886.html

Attention !
read ne retourne pas les caractères IFS (sp tab et nl, cf. ci-dessus) :
car=" "
echo -n "$car" | od -a
=> 0000000  sp
mais :
read -n 1 car			# On tape sur la barre espace
echo -n "$car" | od -a
=> 0000000			# Comme si on n'avait rien tapé !

Pour que read n'interprète pas ces caractères, modifier IFS. 

Entrer au clavier un nom de fichier, avec autocomplétion du nom
-----------------------------------------------------------------
echo "Entrez le nom du fichier :"
read  -e nom_fichier

Lire le contenu d'un fichier ligne àligne
------------------------------------------
while read line
do
echo $line
done <fichier

Dans la boucle, stdin est redirigé vers le fichier, ce qui fait qu'une commande "read clavier" dans la boucle n'a aucun effet. Pour y remédier :
(cf. redirections http://www.tldp.org/LDP/abs/html/x12886.html)

# duplique stdin dans le "file descriptor" 6
exec 6<&0

while read line
do
echo -n "Taper sur une touche"
# lit sur le fd 6
read -s -n 1 touche <&6		# -s pas d'écho, -n 1 un seul caractère à taper
echo
echo
echo "Contenu de la ligne : " $line
echo "Touche : " $touche
echo
done <essai

# remet stdin comme avant la boucle et ferme le fd 6
exec 0<&6 6<&-

"File descriptors"
------------------
Nombre de fd disponibles :
$ ulimit -n
1024

Fd ouverts :
ls /dev/fd

Boucles
-------
Exemples

for I in 1 2 3 ; do echo $I; done
ou bien :
for ((I=1;I<=3;I++)); do echo $I; done
1
2
3

Avec un fichier "films" contenant par exemple :
Le train sifflera trois fois
Merlin l'Enchanteur

$ j=0 ; for i in `cat films` ; do echo $i ; ((j++)) ; done ; echo Il y a $j mots
Le
train
sifflera
trois
fois
Merlin
l'Enchanteur
Il y a 7 mots

Pour rompre le déroulement d'une boucle for, while ou until :
    * continue [n]
          revient au début de la boucle
          n = niveau de boucle
				n = 1 revient début de la boucle
				n = 2 revient au début de la boucle précédente
				etc.	
    * break [n]
          o sort d'une ou n boucles
          o n = niveau de boucle comme ci-dessus 
    * exit n
          o fin du script avec un code de sortie (n) 

``, '' et ""
------------
``	=> sortie de la commade incluse dans ``
Exemples : affectation de variable
TOTO=`ls *.txt`
echo $TOTO
0t.txt

''
	=> prend l'expression plus ou moins littéralement !?
TOTO='ls *.txt'
echo $TOTO
ls 0t.txt

history
=======
Recherche rapide : <Ctrl><R> chaîne_à_chercher

history		affiche la liste des 500 dernières commandes
history | grep chaine_à chercher	affiche les commandes contenant "chaine_à_chercher"
!20		Pour rappeler la commande n° 20
!p		Pour rappeler la commande commençant par p (si plusieurs affiche toutes les commandes)
!tel		"					 tel
!-2		rappelle l'avant dernière commande

La liste des commandes semble être mémorisée dans le fichier .bash_history, mais les commandes
$ cat .bash_history
et
$ history
ne donnent pas le même résultat (sans doute une écriture différée des dernières commandes dans .bash_history) !

Pour effacer (par mesure de sécurité) l'historique :
$ history -c
et en plus supprimer le fichier .bash_history

Rappel de commandes
-------------------
!$		dernière commande

pushd, popd
-----------
pour mémorise un chemin et y revenir.
Pour pushd, passer un répertoire en argument, sinon message d'erreur :
$ pushd
-bash: pushd: no other directory.
Pas d'argument pour popd.

Pour mémoriser l'emplacement actuel :
$ pushd ./ (ou pushd .)

Disques plein, disque occupation, taille des fichiers, taille des répertoires, inodes
=====================================================================================

Information sur les partitions
------------------------------
# dumpe2fs /dev/sdb1

Taille des inodes :
# dumpe2fs /dev/sdb1 | grep -i "inode size"
dumpe2fs 1.40.2 (12-Jul-2007)
Inode size:               128


Disque plein
------------
C'est souvent le cas du disque contenant la racine /
Peut provenir d'une poubelle pleine. Elle se trouve dans ~/.local/share/Trash
Peut provenir des fichiers de log dans /var

Plusieurs solutions

1 - Visualiser les répertoires les plus gros
du -h --max-depth=1 /
Puis visualiser de proche en proche les répertoires les plus pleins 

2 -Lister les fichiers par ordre de taille croissante :
du -k | sort -nr | less			# trier par taille (en KO) décroissante
du -B 1048576 | sort -nr | less		#		   (en GO)

3 - Pour détecter les gros fichiers, taper par exemple (faire varier la taille) :
find / -mount -size +500000k -print (ici dans le répertoire /)
Puis supprimer les fichiers/répertoires inutiles par la commande :
rm -rf /dossier/à/supprimer/*
NB : 	r=récursif
 	f=force, efface sans avoir à valider chaque nom de fichier

4 - filelignt
-> affichage graphique de l'utilisation des disques

Lister les fichiers supprimés qui sont encore ouverts par des processus en cours :
ls -ld /proc/*/fd/* 2>&1 | fgrep '(deleted)'

Pour voir si c'est un problème de manque d'inodes :
df -i

fragmentation / défragmentation
===============================
# filefrag

Poubelle (trash) sur KDE
========================
Si elle a été effacée par erreur, copier ~/Desktop/trash.desktop d'un autre utilisateur.
Vérifier que le propriétaire et les droits sont corrects (rw pour le propriétaire est suffisant)

Effacer sans passer par la poubelle
===================================
[Shift][Delete]
Pour avoir cette possibilité dans le menu "Edit" de Konqueror :
Settings > Configure Konqueror> Show 'Delete' context menu entries which bypass wastebin

Récupérer des fichiers effacés (undelete, recover)
==================================================
Voir
- unrm
- Foremost (http://www.korben.info/recuperer-des-fichiers-effaces-sous-linux-ubuntu.html)

Choix clavier et langue
=======================
K /System / Configuration / Configure your Desktop / Accessibility / Keyboard Layout
K /System / Configuration / Configure your Desktop / Accessibility / Country - Region & Language

Ou plus rapidement :
$ kcontrol		-> Regional and accessibility

Ou pour la lanque seulement :
$ localedrake

Pour tout le système :
# mcc
ou plus rapidement
# keyboarddrake

Choix du répertoire d'enregistrement par défaut - /.mdk-folders/documents/
==========================================================================
Cf. http://wiki.mandriva.com/en/Releases/Mandriva/2006/Notes#Default_folder_for_documents

Pour changer le path :
K > System > Configuration > KDE > System Administration > Paths
ou plus simplement :
$ kcontrol
	System Administration > Paths	

Dans le cas de OOo :
Tools > Options > OpenOffice.Org > Paths

Solution radicale pour éviter que le path par défaut passe par ~/.mdk-folders
- surprimer ~/.mdk-folders
- supprimer le script /etc/X11/xinit.d/desktop-directories

khotkeys
========
Ne veut pas se lancer en direct !!
"ERROR: Communication problem with khotkeys, it probably crashed"
Pour le lancer, passer par le menu :
K > System > Configuration > KDE > System > KHotkeys

Raccourcis clavier (hotkeys)
============================
~/.kde/share/config/khotkeysrc
kcontrol

Evènements X (keycode, codes clavier, souris ...)
=================================================
xev
se trouve dans le package X11R6-contrib

Correspondance n° IP <-> adresse
================================
nslookup NomMachine-ou-n°IP
host NomMachine-ou-n°IP
ipcalc -h n°IP

Si nslookup, host, ipcalc ne retourne rien : whois n°IP
whois ne fonctionne pas avec le nom du PC : utiliser host <nom_PC> pour obtenir le N° IP

Infos sur un N° IP ou une  adresse
==================================
ping
nslookup ou host
finger
whois

Infos sur le système
====================
cat /proc/cpuinfo
cat /proc/meminfo		(utilisation de la RAM
				NB : Linux utilise toute la ram a sa disposition.
				Il ne la libère que s'il en a besoin)
cat /proc/net/ip_conntrack	table de suivi de connexions
				
Sous KDE, voir également
K > KDE > Configuration > Information


Infos sur la carte écran et les drivers, test de rapidité de la carte écran
===========================================================================
glxinfo			(installer mesa-demos)
glxgears
xdpyinfo

Police de caractères
====================
cf. http://www.telenovela-world.com/~spade/linux/howto/Francophones-HOWTO-3.html

ISO 8859-1 (latin 1) a tous les caractères Français sauf les "oe liés" l'euro et l'y tréma majuscule. Préférer ISO 8859-15 (latin 9).

Centre de contrôle KDE
======================
Passer par le menu K, ou bien :
kcontrol

Configuration du bureau
=======================
K > System > Configuration > Configure your Desktop
Pour choisir/modifier les fontes de caractère :
LookNFeel > Fonts
Pour remettre les fontes par défaut, cliquer en bas au milieu sur "Defaults"

Icône affichant une liste pour le choix du terminal
--------------------------------
Clic droit sur le tableau de bord > Ajouter au tableau de bord > Bouton Special > Session de terminal
En anglais :
Clicl droit sur panel > Add to panel > Special Button > Terminal Session

Voir l'ensemble des bureaux (desktop)
=====================================
kompose

Copie d'écran
=============
ksnapshot (lancé par appui sur la touoche [Impr écran]
import Nom_fichier.jpg		et sélectionner à la souris la zone à copier

Sensors, monitoring, température, voltage
=========================================
sensors
ksensors
xmbmon

ksensors
--------
Installer ksensors (qui appellera les dépendances nécessaires) :
liblm_sensors
librrdtool
lm_sensors

Lancer :
# sensors-detect
Accepter les réponses par défaut.

La command d'installation du ou des modules nécessaires est indiquée à la fin, exemple :
#----cut here----
# Chip drivers
modprobe w83627hf
# sleep 2 # optional
/usr/bin/sensors -s # recommended
#----cut here----

Lancer :
# modprobe w83627hf
pour que sensors fonctionne.
Puis sensors fonctionne :
# sensors

A la fin est indiqué de copier un alias dans /etc/modules.conf : le copier plutôt dans 
/etc/modprobe.conf (qui remplace module.conf, obsolète).

NB : losrqu'on lance ksensors il n'affiche rien. Le configurer pour qu'il affiche ce que l'on désire. Attention pour chaque choix d' affichage cliquer sur apply, sinon le choix n'est pas mémorisé !!
Mode d'emploi : http://www.mepis.org/docs/en/index.php/Ksensors

Ce qui suit n'est sans doute plus nécessaire :
Puis est demandé de copier plusieurs lignes (commandes) dans etc/rc*. Les copier plutôt dans /etc/rc.local.

Eventuellement, lancer depmod -a pour remettre à jour les dépendances entre modules du noyau.

Pour tester sensors :
Exécuter dans une console les commandes qui viennent d'être copiées dans /etc/rc.local
Lancer la commande "sensors".

TeX LateX
=========
http://en.wikibooks.org/wiki/LaTeX/Absolute_Beginners
Pour les présentations sous LateX : beamer
Editeur Latex :
Texmaker

OpenOffice (OOo)
================
Installation de Open Office 3
-----------------------------
Télécharger la version "rpm" ad hoc sur le site 
http://fr.openoffice.org/about-downloads.html
Les rpm sont dans un fichier tr.gsz à décompresser :
$ tar -zxvf OOo_3.1.0_LinuxX86-64_install_fr.tar.gz
Puis
aller dans le répertoire contenant les rpm : OOO310_m11_native_packed-3_fr.9399/RPMS
# rpm -Uvh *.rpm
# cd desktop-integration/
# rpm -Uvh openoffice.org3.1-mandriva-menus-3.1-9393.noarch.rpm

2 épertoires ont été créés :
/opt/openoffice.org
/opt/openoffice.org3

OOo et format word 2007
=======================
Voir : http://www.korben.info/lire-et-ecrire-les-docx-de-word-2007-sous-open-office.html
ou http://www.getdeb.net/release.php?id=1995

Ajout de fontes, fontes Windows
===============================
Pour ajouter des fontes à OpenOffice
File > Wizards > Install fonts from the web
Ne semble pas fonctionner ?

Meilleure solution : ajouter les fontes Microsoft pour toutes les applications :

Installation des fontes de caractères Microsoft
===============================================
Cf. http://corefonts.sourceforge.net/

Installer (urpmi) si ce n'est déjà fait :
-----------------------------------------
- rpm-build
- wget
- freetype-tools
- chkfontpath

Créer un environnement pour la création de rpms dans le répertoire utilisateur (<user>)
---------------------------------------------------------------------------------------
Cf. Mandriva Rpm HowTo :
http://club.mandriva.com/xwiki/bin/KB/MandrivaRpmHowTo
(peut se faire automatiquement avec le script :
http://club.mandriva.com/xwiki/bin/view/KB/RPMSetupScript)

Créer l'arborescence :
$ mkdir -p ~/rpm/BUILD
$ mkdir ~/rpm/RPMS
$ mkdir ~/rpm/RPMS/i586
$ mkdir ~/rpm/RPMS/x86_64
$ mkdir ~/rpm/RPMS/noarch
$ mkdir ~/rpm/RPMS/SOURCES
$ mkdir ~/rpm/SPECS
$ mkdir ~/rpm/SRPMS
$ mkdir ~/rpm/tmp

Créer les fichiers de configuration :

.rpmrc
buildarchtranslate: i386: i586
buildarchtranslate: i486: i586
buildarchtranslate: i586: i586
buildarchtranslate: i686: i586

.rpmmacros
%_topdir /home/<user>/rpm
%_tmppath /home/<user>/rpm/tmp

%_signature gpg
%_gpg_name  Mandrivalinux
%_gpg_path  ~/.gnupg

%distribution  Mandrivalinux
%vendor  Mandrivasoft

Création du rpm des fontes
--------------------------
Télécharger http://corefonts.sourceforge.net/msttcorefonts-2.0-1.spec
et l'enregistrer dans ~/rpm/SPECS

Lancer :
$ rpmbuild -bb ~/rpm/SPECS/msttcorefonts-2.0-1.spec
(ça télécharge automatiquement les fontes et ça crée le rpm)

Installer le rpm
----------------
# rpm -ivh /home/<user>/rpm/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm
# service xfs restart
Relancement du serveur de polices de X	[OK]
et vérifier par exemple dans OOo que les nouvelles fontes sont effectivement présentes (si nécessaire relancer Ooo).


Système de gestion et Réservations de Ressources
=================================================
MRBS	http://mrbs.sourceforge.net/
GRR	http://demos.adullact.org/

Installation d'une distribution par le réseau
=============================================
La doc est dans la racine de la distribution, fichier INSTALL.txt

A noter avant de commencer l'installation !
*******************************************
- la configuration du disque (pour éventuellement éviter d'effacer par la suite la partition home)
- L'adresse IP et le nom de la machine
  L'adresse IP du DNS
  L'adresse IP du gateway (passerelle)
- Le nom du driver (xxx.o) de la carte réseau (sur une machine qui fonctionne déjà, voir mcc > Hardware > Hardware > EthernetCard)
- L'adresse du serveur où récupérer la distribution
- Le chemin vers le répertoire où se trouve la distribution sur ce serveur, pour MDK10.0 par exemple :
	/pub/linux/distributions/mandrakelinux/official/10.0/i585

Installation d'une distribution Mandrake/Mandriva
*************************************************

Installation à partir de disquettes :
-------------------------------------
Récupérer network.img et pour MDK10.0 network-drivers.img, graver les images sur disquettes. Les outils pour graver ces images sont indiqués dans  i586/doc/install/fr/install.htm ou INSTALL.txt : rawrite sous DOS et dd sous linux.
Booter sur la disquette network.img.

Installation à partir d'un CD-ROM minimum
-----------------------------------------
Récupérer boot.iso, Graver et booter
Dans le cas de l'installation pour x86_64 le boot.iso fourni pour Mandriva 2006.0 est incorrect (au moins le 10-2-2006) : le message d'erreur suivant s'affiche :
"The modules for this kernel (2.6.8.1-12mdkBOOT) can't be found on this
mirror, please update your boot disk"
Dans ce cas, booter sur le CD1 de la distribution, taper sur F2 et choisir alt1.

Installation de MDK 10.1
------------------------
En mode expert, le choix du clavier a disparu !§"@&&
Pour qu'il apparaisse, choisir autre chose que Language English (US) !!!

On peut sélectionner plusieurs langues : arrivé à "Choose language to use", cliquer sur advanced et cocher les langages à utiliser.

Configuration des imprimantes : passer en mode expert !!
la configuration en mode normal met le souk !
CUPS configuration : décocher :
- "Automatically find available printers on remote machines"
- "The printers on this machine are available to other computers" 

Documentation, notes importantes sur la version installée
---------------------------------------------------------
/usr/share/doc/mandriva-release-2006.0/		(cas de MDV 2006.0)

Installation de Debian Sarge par FTP
************************************
Télécharger le CD d'installation, actuellement 
debian-31r0a-i386-netinst.iso
Graver et booter dessus

Nb : ce fichier est à chercher dans le répertoire "iso" et non pas comme pour MDV
dans le répertoire de la distribution, /i586/install/images


Installation de kanotix sur le disque dur, à partir du CD live (V2005-04)
=========================================================================
Menu K > KANOTIX > Kanotix-installer
o Install Kanotix to HD
- Onglet "Partitioning" :
	l'installateur propose d'installer Kanotix sur une partition existante ce qui ne convient généralement pas
	=> créer les partitions nécessaires. Si on veut installer Kanotix sur plus d'une partition (préférable), créer ces partitions (fisk par exemple) et les formater (mkfs -V -t ext3 -c /dev/hdxy) : kanotix-installer ne propose en effet de formater que / 
	Cocher "Set mountpoints..." et indiquer les points de montage des différentes partitions.
- Répondre aux différentes questions posées dans les onglets ("Grub", "User", "Network", "Installation")
- Dans l'onglet "Installation", cocher "Save configuration only (~/.knofig) et cliquer sur [Begin installation] :  rien n'est installé, mais le fichier .knofig est créé ; il est plus facile de vérifier et régler les paramètres d'installation directement à partir de ce fichier : l'ouvrir à l'aide de kwrite (sudo kwrite ~/.knofig)
Dans ce fichier :
	- Vérifier que la partition / est bien cell voulue, par exemple :
		HD_CHOICE='/dev/hdb6'
	- A la question :
	# Here you can give additional mappings. (Experimental) You need to have the partitions formatted yourself and give the correct mappings like: '/dev/hda4:/boot /dev/hda5:/var /dev/hda6:/tmp'
	indiquer les partitions crées et formatées à utiliser, par exemple
		HD_MAP='/dev/hdb7:/usr /dev/hdb8:/var /dev/hdb9:/home'
	- Mettre :
		HD_IGNORECHECK='no'
	pour que l'espace disque soit vérifié (ne semble cependant pas être vérifié à cause du bug noté plus loin).
	- Sauvegarder ~/.knofig

- Redémarrer Kanotix-installer, qui en principe relit le fichier ~/.knofig (vérifier si tout est OK)
- Onglet Partitioning :
	on peut décocher "format with" si l'on a déjà formaté la partition /
	cocher "Set mountpoints ... " et vérifier que les points de montage désirés existent
Onglet Installation :
	Cocher "Save configuration and start installation"
	Cliquer sur [Begin installation] 
	Un message d'erreur indique que les partitions autres que / ne sont pas formatées, ce qui est bien sûr un bug : pour que l'installation se lance quand même, cocher "Force Installation ...] et cliquer sur [Begin installation]

L'installation se fait sans problème, on peut redémarrer.
Malheureusement Kanotix installe Grub sans tenir compte des autres linux installés sur la machine.
Pour réinstaller un menu Grub complet :
- afficher les fichiers /boot/grub/menu.lst des différentes distributions installées sur la machine.
- éditer le menu /boot/grub/menu/lst de Kanotix


Installation de Mandriva sur eeecp
==================================
http://wiki.mandriva.com/fr/Magnum03_installer_mandriva_sur_eee
Contient de nombreuses astuces, à voir.

"Broadcast" d'un message
========================
wall
----
Envoie sur toutes les consoles d'une machine
$ wall message

write
-----
$ write user							
write: user est loggé à plus d'un endroit; on écrit à pts/3
message
(terminer par <ctrl><D> ou <ctrl><C> pour envoyer le message) 

mesg
----
Pour activer/désactiver l'affichage par wall ou write
$ mesg y			pour autoriser l'affichage
$ mesg n 			pour l'interdire
$ mesg				affiche y ou n suivant que l'affichage est autoris� ou non

Voir également : ytalk



Envoyer un message à tous les utilisateurs d'un PC distant
===========================================================
Cf. Sending a Message to All Users on a Remote UNIX/Linux/FreeBSD System
http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/02/freebsd-sending-message-to-all-users_23.html

(Utilise la propriété de ssh de pouvoir lancer des commandes sur la machine distante :
ssh user@host commande

$ ssh utilisateur@pc_distant wall << EOF
message ...
EOF

Encore plus simple, pas besoin de <<EOF quand il n'y a pas de caractères spéciaux dans le message (', " par exemple):
ssh utilisateur@pc_distant wall Bonjour du pc local
et "Bonjour du pc local" s'affiche sur les consoles de l'utilisateur sur pc_distant

Compilation / installation de programmes
========================================

Savoir / vérifier (conserver une trace de) ce qui est installé
--------------------------------------------------------------
Avant l'installation :
# find /* > avant
Après l'installation
# find /* > apres
Comparer :
diff avant apres > modifs

Librairies :
------------
Chemin vers les librairies : voir /etc/ld.so.conf et ldconfig (cf. man ldconfig)
Lister les librairies en cache :
# ldconfig -p
Mettre à jour le cache :
# ldconfig

make
----
Peut éventuellement être accéléré avec l'option -f

Noyau
=====
http://lea-linux.org/kernel/
http://www-phase.c-strasbourg.fr/inform/linux/cours/linux-admin-10.html#ss10.7
http://www.freenix.fr/unix/linux/HOWTO/Kernel-HOWTO.html

Infos : uname -a

Mise à jour
-----------
# urpmi kernel
Il faut évidemment redémarrer le PC pour que le nouveau noyau soit chargé.

Compilation du noyau
--------------------
Si ce n'est déjà fait, installer (K > Configuration > Packaging >Install software) :
- les outils de compilation :
	Mandrake choices > Development >
- les sources du noyau
	Find in names : kernel
	kernel-source-xxxxmdk

Les sources s'installent automatiquement dans usr/src/linux-x.y.z-xxxmdk
le lien usr/src/linux est créé (ou modifié s'il existe déjà) automatiquement : il pointe sur usr/src/linux-x.y.z-xxxmdk

# cd /usr/src/linux
# make xconfig

NB :
- sauvegarder la configuration dans un fichier.
Avec "Save and exit" la configuration est sauvegardée dans un fichier caché (!!!) .config, la configuration précédante est dans .config.old
Pour garder une trace d'une configuration, utiliser "Store configuration to file" qui permet de créer un fichier avec le nom de son choix, mais ce n'est pas cette config qui est utilisée aux étapes suivantes (c'est .config !)
- vérifier les messages d'erreur qui s'affichent dans la console texte et corriger si nécessaire.


Puis :
# make dep
# make clean
# make bzImage
# make modules

Pour garder une trace de la compilation dans le fichier compil-kernel.txt :
script compil-kernel.txt
make bzImage
Ctrl-D

Pour compiler en une seule commande :
make dep clean bzImage modules modules_install

Installation des modules :
Attention : si on ne change de version de noyau il est généralement conseillé de faire une sauvegarde des modules actuels:
mv /lib/modules/x.y.z-xxxmdk /lib/modules/x.y.z-xxxmdk-old
C'est probablement inutile car la commande make modules_install crée un répertoire différent de x.y.z-xxxmdk : x.y.z-xxxmdkcustom

# make modules_install

Installation du noyau
---------------------
# make install
Cette commande :
- copie bzImage (qui se trouve dans /usr/src/linux-xxxxmdk/arch/i386/boot)
dans /boot sous un nom différent du noyau actuel pour qu'il ne soit pas écrasé (i.e. vmlinuz-x.y.z-xxxmdkcustom).
- renomme vmlinuz en vmlinuz.old et crée un nouveau vmlinuz, lien qui pointe sur vmlinuz-x.y.z-xxxmdkcustom
- crée initrd-x.y.z-xxxmdkcustom.img et fait pointer initrg.img sur ce fichier
- crée config-x.y.z-xxxmdkcustom.img mais le lien config pointe toujours sur le fichier config-x.y.z-xxxmdk.img original
- crée un fichier System.map-x.y.z-xxxmdkcustom mais le lien System.map pointe toujours sur le fichier System.map-x.y.z-xxxmdk original
- Les fichiers message et message-graphic sont également mis à jour
- essaye de modifier Grub et le réinstalle, ce qui est parfaitement inutile !

Il vaut mieux modifier Grub à la main ; rajouter les lignes permettant de booter si nécessaire sur l'ancien noyau dans le fichier /boot/grub/menu.lst :

# Chargement du nouveau noyau : rien à modifier
title linux custom (nouveau noyau)
kernel (hd1,0)/boot/vmlinuz root=/dev/hdc1 quiet devfs=mount acpi=off vga=791
initrd (hd1,0)/boot/initrd.img

# Chargement de l'ancien noyau, indiquer le vmlinuz et le inird d'origine :
title linux original (ancien noyau)
kernel (hd1,0)/boot/vmlinuz-x.y.z-xxxmdk root=/dev/hdc1 quiet devfs=mount acpi=off vga=791
initrd (hd1,0)/boot/initrd-x.y.z-xxxmdk.img

Contrairement à Lilo, inutile de réinstaller grub.

Installation du noyau 2.6 en bref
=================================
=> Télécharger la dernière version (actuellement linux-2.6.10.tar.bz2) sur www.kernel.org : choisir la version full (F).
=> Décompresser :
$ tar -jxvf linux-2.6.10.tar.bz2

=> Lire la doc dans le dossier crée (linux-2.6.10/README)
=> Configurer le noyau à l'aide de l'une ou l'autre des commandes suivantes :
	make menuconfig	 ou	make O=/home/name/build/kernel menuconfig
   	make xconfig			"			xconfig
	make gconfig			"			gconfig
Avant toute modification sauvegarder la config par défaut dans (par exemple) .config.original : elle peut éventuellement resservir NB lorsqu'on enregistre la config est mémorisée par défaut dans .config.
Pour le choix des drivers à intégrer dans la config, voir :
	la doc de la carte mère
	lspci -v |less
	ou encore ce qu'indique une version de MDK déjà installée (mcc -> hardware)


Remarques :
- Dans Device Drivers / Character devices, cocher "Legacy (BSD) PTY support" (contrairement aux conseils affichés) sinon rien ne s'affiche dans AUCUNE console graphique (Kde, Gnome ...) !
 

=> Compiler, créer une image compressée du noyau (bzimage), installer les modules, etc. :
$ make			ou 	make O=/home/name/build/kernel
# make modules_install	
# make install		ou	ou 	sudo make O=/home/name/build/kernel modules_install install
=> Modifier Grub :
Editer /boot/grub/menu.lst

Rajouter par exemple
# Nouveau noyau
title linux (noyau 2.6.10)
kernel (hd0,0)/boot/vmlinuz-2.6.10 root=/dev/sda1 acpi=ht resume=/dev/sdb2 splash=silent vga=791
initrd (hd0,0)/boot/initrd-2.6.10.img

NB : rien à changer pour le noyau d'origine, si ce n'est éventuellement le titre
# MDK 10.1 noyau 2.6.8.1-12mdk d'origine
title linux (MDK 10.1 d'origine)
....
En effet les liens vmlinuz et initrd.img pointent toujours sur les fichiers du noyau d'origine.
Dans le cas où l'on essaye plusieurs noyaux, il est cependant prudent d'indiquer les fichiers réels : en effet vmlinuz et initrd.img peuvent alors ne pas pointer sur les bons fichiers ce qui peut résulter en un "kernel panic".

dkms (Dynamic Kernel Module Support)
------------------------------------
voir : http://www.linuxjournal.com/article/6896

Perl
====
http://www.cpan.org/

Version et autres infos : perl -V

CPAN = Comprehensive Perl Archive Network

Vérifier la présence de modules
-------------------------------
perldoc Librairie::Module
ou bien

Info sur un module
# perl -MCPAN -e shell
cpan> i Librairie::Module

Installer un module
-------------------
# perl -MCPAN -e 'install Librairie::Module'

ou bien :
# perl -MCPAN -e shell
Puis au niveau du prompt cpan> :
cpan> install Librairie:Module
Pour quitter : <Ctrl> D

Configuration de CPAN
----------------------
Nb : A la première utilisation de CPAN un questionnaire de configuration s'affiche. Y répondre.
Pour vérifier les paramètres entrés et faire des modifications le mieux est peut-être d'éditer directement le fichier de configuration /usr/lib/perl5/5.8.5/CPAN/Config.pm
Voir en particulier les lignes :
'urllist' => [q[ftp://ftp.u-strasbg.fr/CPAN]],
'keep_source_where' => q[/root/.cpan/sources],

Pour modifier cette configuration :
# vi /usr/lib/perl5/5.8.8/CPAN/Config.pm

Mettre àjour CPAN
------------------
cpan> install Bundle::CPAN
cpan> reload CPAN

Affichage de l'heure
====================
xclock -digital -update 1 &		# Horloge digitale avec mise à jour de l'affichage toutes les secondes
sunclock
sunclock -dateformat   %H:%M%:%S%_%a%_%d%_%b%_%y	# idem avec affichage ne plus des secondes

Commandes avec mesure du temps
==============================
time
uptime
wait
w
top
sleep [secondes]

Mesurer le temps d'exécution d'un programme (compilation par exemple) et émettre un bip à la fin
------------------------------------------------------------------------------------------------
$ time ma_commande ; echo -e \\a

Temps pendant lequel le système a fonctionné
--------------------------------------------
$ uptime
 17:53:55 up  7:21,  4 users,  load average: 0.06, 0.17, 0.15

Attendre qu'un processus se termine
-----------------------------------
$ wait <PID> ; echo 'Processus <PID> terminé'
La commande echo s'exécute ('Processus <PID> terminé' s'affiche) quand le processus de PID <PID> est terminé.

Affichage des utilisateurs connectés et du temps de connexion
--------------------------------------------------------------
$ w
$ w
 18:08:51 up  7:36,  5 users,  load average: 0,01, 0,10, 0,15
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
toto      pts/0     11:02    7:06m  0.00s 20.65s kded [kdeinit] --new-startup
toto      pts/1     18:08    0.00s  0.12s  0.01s w
toto      pts/2     17:44    5:34   0.22s  0.22s /bin/bash

Attendre 10 secondes
--------------------
$ sleep 10

Débloquer une console occupée par une commande (background, foreground, jobs)
=============================================================================
Faire suivre la commande par &
ou bien :
<ctrl><z>	arrête la commande en cours d'exécution
bg		la fait passer en arrière plan (background)
fg		la refait passer en premier plan (foreground)

Exemple avec xclock :
---------------------
$ xclock
						<= taper <Ctrl><z>
[1]+  Stopped                 xclock
$ jobs
[1]+  Stopped                 xclock
$ bg
[1]+ xclock &
$ jobs
[1]+  Running                 xclock &
$ fg
xclock
						<= taper <Ctrl><z>
[1]+  Stopped                 xclock
$ jobs
[1]+  Stopped                 xclock
$ kill %1

[1]+  Stopped                 xclock

Eviter de tuer une application à la fermeture de la console dans laquelle elle a été lancée
===========================================================================================
Exemple :
nohup konqueror &

Comparaison (ou synchronisation) de répertoires
================================================
diff			(diff -r rep1 rep2 > resultat)
kdiff3
mc
krusader		***
meld			**

Comparaison de fichiers
=======================
diff
diff3
kdiff3
xxdiff
kompare (dans kdesdk)
krusader		***
mc

Non testés
----------
unison
gnome-commander

Comparaison de 2 fichiers ou contenus de 2 répertoires
======================================================
diff fic1 fic2 | less
sdiff fic1 fic2 | less		comparaison "side by side"
sdiff -s fic1 fic2 | less	seules les différences sont affichées

Comparaison rapide de 2 répertoires (avec sous répertoires)
-----------------------------------
ls -aR répertoire-n°1 > rep1
ls -aR répertoire-n°2 > rep2
kdiff3 rep1 rep2

Imprimantes
===========
mcc est merdique, utiliser plutôt :
Kmenu > System > Configuration > KDE > Peripherals > Printers
ou bien (équivalent) :
$ kcmshell printmgr

En bas de page passer en mode administrateur  (bouton [Administrateur Mode].
Choisir dans la liste déroulante :
Print system currently used: CUPS (Common...)
Cliquer sur la première icône en haut à gauche (elle ouvre le fenêtre "Add printer wizard"
Pour une imprimante réseau (TCP) : Network printer (TCP)
Entrer l'addresse IP de la machine et le port (9100)
Choisir le modèle : pour une imprimante Postscript il y a une case à cocher en bas à gauche
sinon choisir le pilote d'impression
Dans la page <Test> <Settings...> ne pas oublier de modifier si nécessaire le paramétrage de l'imprimante, en particulier le format qui doit êre A4.
Dans la page Users Access Settings, définir les utilisateurs autorisés

Réglage des marges de l'imprimante :
------------------------------------
Dans l'utilitaire "Configure - Printing manager"
- sélectionner l'imprimante,
- cliquer en bas à droite sur le bouton "Settings" et dans la page qui s'ouvre
- choisir l'onglet "Margin"
Pour les imprimante tektronix Phaser la marge minimum est d'environ 20 pixels.
Après avoir entré les valeurs de configuration, vérifier que le format de page et bien A4 et ne pas oublier de sauvegarder.

Autre possibilité pour administrer CUPS :
-----------------------------------------
localhost:631

Impression dans un fichier (imprimer dans un fichier - file printer)
--------------------------------------------------------------------
Tools > System Tools > Control Center > Peripherals > Printers > Printer > Print to File (PDF).
Sinon, créer une imprimante (raw ou postscript) sur un port non utilisé (LPT2 par exemple)
On récupèrera le fichier dans /var/spool/cups. C'est un fichier postscript (ps) : on peut le transformer en pdf avec :
ps2pdf source.ps destination.pdf


Disques et partitions : commandes utiles
========================================
Liste les disques et partitions des disques
# fdisk -l

Visualisation des partitions montées :
$ mount (sans paramètre)
ou bien :
$ less /etc/mstab

Test et réparation des disques
------------------------------
fsck
cf man fsck

Pourcentage de fragmentation
----------------------------
# fsck -n <partition>
n pour interdire toute réparation
<partition> par exemple /dev/hda1

donne en fin de rapport le % de fragmentation ("% non-contiguous").

Nommage des périphériques et partitions avec Linux et Grub
==========================================================
D'après http://www.debian-fr.org/article.php?page=viewarticle&article=5

Convention (idem linux et grub ):
hd	-> périphériques IDE
sd	-> périphériques SCSI et assimilés (SATA, etc.)

Numérotation linux IDE :
				disque maître		esclave
contrôleur primaire		hda			hdb
contrôleur secondaire		hdc			hdd

Numérotation linux SCSI
sda, sdb ...
a, b ... dans l'ordre des N° de la chaîne SCSI

Numérotation grub
Numérote les disques 0, 1, 2 etc. dans l'ordre de leur découverte par le BIOS. Le BIOS fait sa recherche dans l'ordre contrôleur primaire maître/esclave, contrôleur secondaire maître/esclave.
Exemple : hd(0,2) : 0, n° du disque, 2 numéro de partition

Equivalence :
	grub		linux
	hd(1,1)		hdb2

Créer, modifier les partitions
==============================
fdisk
cfdisk
diskdrake
Partimage
LVM (http://lea-linux.org/leapro/lvm.html)

swap : à placer de préférence en fin de disque : l'accès y serait plus rapide

Créer/changer une partition swap
================================
Pour créer une partion swap : fdisk, cfdisk ou diskdrake
La formater sous diskdrake ou par la commande
# mkswap /dev/...
Lister les disques et partitions
# fdisk -l
Lister les partitions swap actives
# swapon -s
Désactiver une partition swap
# swapoff /dev/...
Activer une (autre) partition swap
# swapon /dev/...
Vérifier dans /etc/fstab que la nouvelle partition swap sera montée au démarrage 

Webmin
======
Aprés installation de webmin (# urpmi webmin), ne pas oublier de le démarrer, sinon message :
"Could not connect to localhost (port 10000)

Démarrage :
# service webmin status
miniserv.pl est arrêté
# service webmin start
Lancement de Webmin                                             [  OK  ]

Se connecter :
https://localhost:10000
login et mot de passe de root.

Firewall (shorewall) : il ne semble pas utile de modifier les autorisations. En cas de problème mettre dans le fichier "rules":
ACCEPT	loc	fw	tcp	10000

Redimensionner des partitions
=============================
Gparted (le CD live)


Partitionnement et clonage de disque
====================================
A voir : GParted-Clonezilla
Live-CD bootable contenant GParted et Clonezilla.


Copie/clonage de disques et de partitions
=========================================

Avec 2 disques identiques la commande dd permet d'obtenir une réplique exacte du disque source : sauf erreur la commande doit être :
        # dd if=/dev/hda of=/dev/hdc

Dans le cas où l'on veut remplacer un petit disque par un plus gros, avec éventuellement un changement de la taille et/ou du  nombre de partitions, dd ne convient pas.

Aprés plusieurs essais (rsync, mirrordir, tar, cp), une solution toute simple au problème de "clonage" de disques : en très bref les 3 étapes pour copier le disque d'origine (hd0) sur le nouveau disque :

1 - copie des partitions et répertoires de hd0 vers hd1 à l'aide de la commande :
        cp -a
2 - modification du fichier de configuration /etc/fstab
3 - modification du boot (grub ou lilo)

Ce qui donne avec un peu plus de détails :

1 - copie des partitions et répertoires de hd0 vers hd1 à l'aide de la
commande cp -a
----------------------------------------------------------------------------------------------------
- Connecter le nouveau disque (hd1)
- Lancer Linux (MDK)
- Avec diskdrake ou au moyen des outils en ligne de commande (fdisk ou cfdisk,
mkfs) créer sur hd1 les partitions désirées et les formater
- Redémarrer l'ordinateur avec UN LINUX SUR DISQUETTE OU CD : j'utilise
tomsrtbt (http://www.toms.net/rb/), mais tout autre Linux sur disquette ou CD
doit convenir, par exemple Knoppix (http://knoppixfr.tuxfamily.org/), ou
encore le CD n°1 d'installation de MDK : il suffit qu'il contienne la
commande cp
- Avec la commande cp -a, copier les partitions et répertoires de hd0 vers
leur emplacement prévu sur hd1

Questions :
* Pourquoi utiliser un Linux sur disquette ou CD ?
C'est pour obtenir une copie de ce qui est réellement sur disque et non pas de
ce que Linux y met ou veut bien laisser copier lorsqu'il fonctionne. Par
exemple /proc contient une série de fichiers qui n'existent qu'en RAM ; il
n'y a rien sur le disque : /proc n'est qu'un point de montage pour l'accés à
une partie de la RAM.
* Pourquoi utiliser cp plutôt que mirrordir ou rsync plus pratiques ?
C'est parce que cp se trouve dans toutes distributions Linux ce qui n'est pas
le cas des autres commandes (pas de rsync, mirrordir ... dans tomsrtbt).

2 - modification du fichier de configuration /etc/fstab
---------------------------------------------------------------------------
- Rebooter sous MDK (ce n'est pas indispensable, mais l'interface est plus
conviviale que celle d'un Linux sur disquette)
- Mettre à jour le fichier /etc/fstab sur hd1

3 - modification du boot (grub ou lilo)
-----------------------------------------------------
- Mettre à jour le fichier de configuration du programme de boot sur hd0
(et/ou sur hd1 si par la suite on veut démarrer directement à partir de hd1)
Dans le cas de GRUB, le fichier � modifier est /boot/grub/menu.lst.
Dans le cas de  LILO (à vérifier : non testé) modifier /etc/lilo.conf et exécuter la commande
"/sbin/lilo" avec les options -b bootdev et -C config-file pour indiquer
d'une part le disque sur lequel installer le boot et d'autre part le fichier
de configuration que l'on vient de modifier.

C'est tout. Au redémarrage le menu de grub ou de lilo apparaît et permet de
booter le système copié sur hd1.

Avec tous les détails, une réalisation concrète qui a parfaitement fonctionné :

J'ai un PC qui tourne sur MDK9.1. J'utilise l'environnement graphique KDE. Le
disque dur d'origine (hd0) a 3 partitions :
- hda1          /
- hda2          swap
- hda3          home
Il devient trop petit (3 Go). J'ai récupéré un disque de 20 Go. Après montage
dans le PC, ce 2° disque est vu comme hdc.
Je désire partitionner le 2° disque dur (hd1) en :
- hdc1          /
- hdc2          swap
- hdc3          usr
- hdc5          var
- hdc6          home

1 - Avec diskdrake, partitionner le nouveau disque (hd1) et formater les
partitions
2 - Redémarrer Linux à partir d'une disquette tomsrtbt. Se "loger" en "root"
avec le mot de passe par défaut "xxxx"
3 - Créer les points de montage pour pouvoir monter le disque source et le disque destination
        # cd /mnt
        # mkdir source
        # mkdir dest
        # cd /

4 - Monter les disques source  (hda) et destination  (hdc) et copier le
répertoire racine
        # mount /dev/hda1 /mnt/source
        # mount /dev/hdc1 /mnt/dest
        # cp -a /mnt/source/* /mnt/dest
        # umount /mnt/dest

5 - La même chose pour /usr
        # mount /dev/hdc3 /mnt/dest
        # cp -a /mnt/source/usr/* /mnt/dest
        # umount /mnt/dest

6 - La même chose pour /var
        # mount /dev/hdc5 /mnt/dest
        # cp -a /mnt/source/var/* /mnt/dest
        # umount /mnt/dest

7 - La même chose pour /home
        # umount /mnt/source
        # mount /dev/hda3 /mnt/source
        # mount /dev/hdc6 /mnt/dest
        # cp -a /mnt/source/* /mnt/dest
        # umount /mnt/dest
        # umount /mnt/source
        # reboot
Sortir la disquette tomsrtbt

7 - Redémarrer sous MDK

8 - Supprimer de hdc1 non pas les répertoires /usr, /var et /home mais leur
CONTENU qui est maintenant sur les partitions respectivement hdc3, hdc5 et
hdc6
        # mount /dev/hdc1 /mnt/dest
puis sous konqueror supprimer le CONTENU de /usr, /var et /home
(NB : la commande
	# rm -rf nom_repertoire/*
efface bien le contenu du répertoire nom_repertoire, mais pas les fichiers
cachés !)

9 - Mettre à jour le fichier /etc/fstab du nouveau disque
Remplacer :
        /dev/hda1 / ext3 defaults 1 1
        /dev/hda2 swap swap defaults 0 0
        /dev/hda3 /home ext3 defaults 1 2
par :
        /dev/hdc1 / ext3 defaults 1 1
        /dev/hdc2 swap swap defaults 0 0
        /dev/hdc3 /usr ext3 defaults 1 2
        /dev/hdc5 /var ext3 defaults 1 2
        /dev/hdc6 /home ext3 defaults 1 2

10 - Mettre à jour le menu de boot de grub (/boot/grub/menu.lst)
pour faire apparaître l'option de boot du système Linux installé, maintenant
hd1

NB : pour le moment hd0 est toujours en place. On peut donc utiliser son "boot
device" ; il suffit d'ouvrir le fichier menu.lst qui se trouve sur hda1 :
        # mount /dev/hda1 /mnt/source
        # kwrite /mnt/source/boot/grub/menu.lst

et de le modifier : j'ai rajouté, juste en dessous de "default 0" (pour que le
PC démarre par défaut sur MDK qui est sur hd1) :

        title linux dd 20 Go
        kernel (hd1,0)/boot/vmlinuz root=/dev/hdc1 quiet devfs=mount acpi=off vga=791
        initrd (hd1,0)/boot/initrd.img

Noter vga=791 : ce n'est pas indispensable, mais ça permet de bien mieux voir
les messages (d'erreurs éventuelles) au démarrage du système. Pour la signification de ce n°, voir plus loin à "Amélioration de l'affichage des infos au démarrage de MDK"

11 - Rebooter, c'est fini et la nouvelle copie de MDK fonctionne comme l'original

NB : les commandes rsync et mirrordir (au contraire de cp) ont une option "exclude-from" pratique pour éviter de
copier les répertoires inutiles avec la commande cp (ça prend du temps et il
faut ensuite les effacer, voir points 4 et 8 ci-dessus). Les utiliser si elles sont dispoonibles sur la disquette ou le CD utilisé.

Clonage de partitions
=====================
Clonezilla Live : http://wiki.mandriva.com/fr/Clonezilla_Live


Icônes KDE
==========
Remplacer les infâmes icônes "conectiva crystal" (installées par défaut par MDK 9.1) par les bonnes vieilles icônes KDE classiques plus lisibles.
---------------------------------------------------------------------------------------------
K> System > Configuration > KDE > LookNfeel > Icons
Si KDE classic apparaît dans la liste, sélectionner et cliquer sur <OK>
Si KDE classic est absent, K > Configuration > Packaging > Install Software
Faire une recherche sur le mot "classic"
Dans la liste qui apparaît, sélectionner et installer kdeartwork-kde-classicxxxx.mdk
Fermer et rouvrir le "KDE control module" ouvert au départ, pour faire appraître KDE classic dans la liste des thèmes disponibles
Sous root, il faut sans doute aussi redémarrer KDE pour que les icônes classiques soient affichées.

Taille des icônes
-----------------
K > System > Configuration > KDE > Appearance & Themes > Icons > Advanced
Sous 2008.1 :
Menu > Tools > System Tools > KDE Control Center > Icons > Advanced

Installation/mise à jour de KDE
===============================
http://docs.kde.org/development/en/kdebase/faq/install.html#id2546955
Paquets obligatoires :
kdelibs
kdebase
aRts

Monitoring système
==================
K > System > Monitoring> Ksysguard
Torsmo

Outils pratiques ou indispensables
==================================

Disquette, CD ou clé bootable avec Linux minimum
------------------------------------------------
Tomsrtbt
Damn Small Linux (DSL)
Toutou Linux (http://moulinier.net/) ou Puppy Linux

sleuthkit	http://www.sleuthkit.org/sleuthkit/
---------------------------------------------------
pour récupérer des fichiers effacés, analyser une machine piratée, etc..

Lire les partitions ext2/ext3 à partir de Windows 
-------------------------------------------------
Explore2fs				http://www.chrysocome.net/explore2fs
Ext2 Installable File System		www.fs-driver.org

Monitoring, sécurité, graphes, clusters, etc
============================================
Top 100 Network Security Tools	http://sectools.org/index.html
Nagios			http://www.nagios.org/
	Oreon/Centreon	www.oreon-project.org/
	GroudWork	http://www.groundworkopensource.com/community/
munin			http://munin.projects.linpro.no/
MRTG
RRDtool			http://oss.oetiker.ch/rrdtool/	
Sentinix		http://sentinix.tigerteam.se/
OpenMosix		http://openmosix.sourceforge.net
			http://openmosix.sourceforge.net/instant_openmosix_clusters.html
nessus			www.nessus.org/
			http://mdvmondelinux.s3ii.info/Auditer-la-securite-de-son-reseau

Sécurité
========
http://doc.mandrivalinux.com/MandrakeLinux/90c/fr/Server_Conf_Guide.html/security.html
Hardening a Linux Installation : http://www.cromwell-intl.com/SECURITY/linux-hardening.html

kdewallet
---------
Configuration : K > System > Configuration > KDE > Security & Privacy > KDE Wallet
ou
$ kcontrol
	> Security & Privacy > KDE Wallet

Gestion des ACL
---------------
http://www.linuxfrench.net/article.php3?id_article=1463

setfacl
getfacl
gtk-acl	

Commandes simples
-----------------
w				Utilisateurs "logués", ce qu'il font, etc.
who				Utilisateurs "logués"
rwho -a			? à revoir, ne semble pas fonctionner
finger nom_utilisateur 	Infos concernant un utilisateur
last |less			Liste des derniers utilisateurs "logués"
Nb : une connexion ftp anonymous laisse une entrée du type :
ftp      ftpd1385     81.184.29.30.dyn Thu May  10:14 - 10:21  (00:07)
		      adresse source		temps de connexion

Comparer la liste des fichiers (ou répertoires) cachés à différents temps:
# find / -type f -name ".*" -ls > hiddenFiles-`date +%Y-%m-%d`
# find / -type d -name ".*" -ls> hiddenDir-`date +%Y-%m-%d`

msec
----
http://www.mandrakesecure.net/en/docs/msec.php
http://club.mandriva.com/xwiki/bin/KB/SecureSmsec
man msec

Configuration globale ou fine de la sécurité en interface graphique
-------------------------------------------------------------------
# draksec
ou encore :
# mcc	(Mandrake control center, onglet Security)

drakperm
--------
Pour connaître le niveau (msec) de sécurité actuel
Pour voir et fixer les permissions

Changer de niveau de sécurité :
-----------------------------
Sous root, pour passer au niveau 4, par exemple :
msec 4

Configuration : voir le fichier
-------------------------------
/var/lib/msec/security.conf

Outils divers
--------------
nmap
hping
tcpdump
IDS :
	snort
	psad

Rejet des "script kiddies"
-------------------------
Interdire la connexion à partir d'une adresse IP en cas de tentatives infructueuses répétées.
Voir :
- Port knocking
	http://www.linuxjournal.com/article/6811
	http://www.portknocking.org/
- fail2ban
- Blacklister les Ips indésirables : http://www.frit.net/linux/black/
- denyhost : http://tdot.blog-city.com/securing_ssh_with_denyhosts.htm
- BlockHosts : http://www.aczoom.com/cms/blockhosts/
- crackblock : http://www.zipcon.net/~sirius/crackblock.html

Détection des scans
-------------------
scanlogd
scandetd

Pam
---
http://www.linux-kheops.com/doc/cours/jgourdin/outils-tcp-ip/Linux-pam.html

DNS : trou de sécurité
======================
http://ftp.traduc.org/doc-vf/gazette-linux/html/2008/153/lg153-C.html

DNS gratuit
====================
www.opendns.com/ 
Voir aussi http://en.wikipedia.org/wiki/OpenDNS

Liste des ports (IANA)
======================
cat /etc/services

nmap
====
(pour une interface graphique :
# urpmi nmap-frontend
puis
$ nmapfe
)

Détecter les PCs on-line :
$ nmap -sP 192.168.0.*
$ nmap -sP 192.168.0.*/25		(scanne les 126 premières addresses)
$ nmap -sP 192.168.0.{50..100}		(scanne de 192.168.0.50 à 192.168.0.100)

Scan des ports d'une machine
----------------------------
Lister les ports ouverts

Exemple :
nmap localhost

Attention :
1 - Par défaut nmap ne scanne que les ports 1 à 10024
Pour scanner tous les ports possibles :
nmap -p 1-65535 localhost
nmap -sU -p 1-65535 localhost

2 - nmap localhost ne montre que les ports ouverts sur l'interface 127.0.0.1 (loopback) ce qui n'est pas représentatif des ports réellement accessibles


Tests pour savoir si un serveur n'est pas compromis par un rootkit
==================================================================
cf. A la recherche de Rootkits
http://www.viginews.com/affichage_article.php?id=822
http://www.omninerd.com/2005/11/22/articles/43

Chkrootkit
----------
# urpmi chkrootkit
chkrootkit		vérification complète du système

# cd /usr/lib/chkrootkit/
# ./ifpromisc		pour vérifier que l'interface n'est pas en mode "promiscuous"
# ./chkproc		pour détecter un processus caché

rkhunter
--------
rkhunter --check
less /var/log/rkhunter.log

netstat
-------
Keep an Eye on Your Linux Systems with Netstat: Using Netstat For Surveillance And Troubleshooting, http://www.linuxplanet.com/linuxplanet/tutorials/5633/1/

netstat -vtlnp
-v	verbose
-l	(--listening) affiche uniquement les sockets en écoute
-n	(--numeric) addresse du socket en numérique (sinon affichage du nom canonique)
-p	(--program) affiche le PID et le nom du programme associé au socket 

netstat -taup
-a	(--all) affiche tous les sockets (en écoute ou non) 
-t	--tcp
-u	--udp

netstat -vatn
netstat -vt

lsof
----
lsof -i
liste les connexions internet ouvertes.
lsof -i :80
liste les connexions internet ouvertes sur le port 80

On peux ainsi vérifier quels ports sont ouverts et voir si certains ports n'ont pas derrière eux un programme suspect.

COMMAND     PID     USER   FD   TYPE    DEVICE SIZE NODE NAME
httpd2    10738 apache    4u  IPv6  22984       TCP *:http (LISTEN)
httpd2    10739 apache    3u  IPv6  22981       TCP *:https (LISTEN)
Dans ce cas par exemple le programme httpd2 avec comme user apache ecoute en TCP sur le port 80 (http) et 443 (https), ce qui est normal

lsof -i permet de détecter des processus suspects éventuellement attachés à des ports connus (80 par exemple).
Pour les arrêter :
- soit chkconfig <COMMAND> off, ce qui évite que <COMMAND> soit relancé au démarrage
mcc -> System -> Services permet de faire la même chose.
- soit trouver la commande
ps aux |grep <COMMAND>
et tuer le processu correspondant kill -9 <PID>
mais il repartira au prochain démarrage.

Contrôle des ports à partir de l'extérieur
-------------------------------------------
Sites proposant des contrôles :

http://outils.sdv.fr/
http://grc.com/x/ne.dll?rh1dkyd2
http://scan.sygatetech.com/

Netfilter / Iptables
--------------------
http://christian.caleca.free.fr/netfilter.html
http://christian.caleca.free.fr/netfilter/iptables.htm
http://www.netfilter.org/documentation/		(pointeurs sur documentation)
http://iptables-tutorial.frozentux.net/iptables-tutorial.html
http://logi.cc/linux/netfilter-log-format.php3	(netfilter log format)
http://olivieraj.free.fr/fr/linux/information/firewall/fw-03.html

which iptables			Pour voir si la commande iptables est présente
lsmod | grep iptable		pour voir si le module est installé.
iptables -L -v			affiche les règles de fitrages.
iptables -F			pour supprimer toutes les règles (F = flush)

tail -f netfilter.log |grep 1.25	affiche ce qui concerne la machine x.x.1.25
 					dans les 10 dernières lignes des logs d'iptables
iptables -L FORWARD -vn |grep 80	ce qui concerne le port 80 (http, affichage numérique)
iptables -L FORWARD -v |grep 80		ce qui concerne le port 80 (http, affichage en clair)

Pour bloquer (ou débloquer) l'accès réseau
------------------------------------------
# iptables -P INPUT DROP		bloque
# iptables -P INPUT ACCEPT		débloque

NB : quand le le réseau fonctionne, mais que le PC ne répond à aucune tentative de connection ( ping, telnet, etc), vérifier avec iptables la policy de "Chain INPUT" ; n'est pas "DROP"
# iptables -L
Chain INPUT (policy DROP)

Si c'est le cas :
# iptables -P INPUT ACCEPT 


Iptables pour IPv6
------------------
Installer si ce n'est pas encore fait iptables-ipv6
Pour bloquer IPv6 tant qu'il n'est pas utilisé :
# ip6tables -F
# ip6tables -P INPUT DROP
# ip6tables -P OUTPUT DROP
# ip6tables -P FORWARD DROP

Vérifier l'état des programmes installés
----------------------------------------
rpm -Va

Shorewall
==========

Version et aide
---------------
sudo shorewall version
sudo shorewall help 

Interface de configuration Mandriva :
-------------------------------------
drakfirewall

La version installée par Mandrake est souvent très en retard. Certains rpm semblent même être buggés !
D'autre part la configuration faite par MDK ou MDV est calamiteuse : plus rien ne fonctionne !!
=> Supprimer la version de shorewall installée par MDK / MDV, télécharger la dernière version stable sur http://www.shorewall.net/
(NB : moins de problèmes avec les derniéres versions de MDV)

Tout est très bien expliqué sur le site http://www.shorewall.net/
NB : les actions prédéfinies sont dans /usr/share/shorewall/actions.std (et non pas /etc/shorewall/actions.std)

Installation :
--------------
- Récupérer la dernière version de shorewall sur le site http://www.shorewall.net/
- Installer :
# rpm -ivh shorewall....115
Shorewall a besoin du package iproute. En cas de message d'erreur indiquant qu'iproute n'est pas trouvé, vérifier qu'il est bien installé :
# which ip
/sbin/ip
Puis relancer l'installation avec :
# rpm -ivh --nodeps shorewall....

Les fichiers à renseigner obligatoirement pour que ça fonctionne :
	/etc/shorewall/interfaces
	/etc/shorewall/rules
ainsi que
	/etc/shorewall/zones	dans le cas des versions 2.3
et	/etc/shorewall/policy	dans le cas de la version 3

Fichier /etc/shorewall/interfaces
'''''''''''''''''''''''''''''''''
Mettre :
	net	eth0	detect	norfc1918,routefilter,tcpflags,nosmurfs
dans le cas d'une connexion par modem, rajouter :
	net     ppp0		norfc1918,routefilter,tcpflags,nosmurfs	

Fichier /etc/shorewall/rules
''''''''''''''''''''''''''''
Indiquer ce qui est autorisé et ce qui est interdit. 
NB : un certain nombre d'actions sont prédéfinies dans le fichier /usr/share/shorewall/actions.std : voir le contenu de ce fichier.
Mettre au moins :
	ACCEPT		net	fw		icmp	8
# ou bien AllowPing	net	fw
	ACCEPT		fw	net		icmp

Rajouter éventuellement :
	ACCEPT		net	fw		tcp	http
# ou bien AllowWeb	net	fw
	AllowSSH	net	fw
et pour un serveur :
	AllowFTP	net	fw
	AllowSMB	net	fw
	AllowSMB	fw	net
	AllowSMTP	net	fw
	AllowIMAP	net	fw

Version 3
.........
Dans /etc/shorewall/rules des macros sont utilisées au lieu de Allow... : voir http://www.shorewall.net/Macros.html. Ces macros sont situées dans /usr/share/shorewall/
Exemple :
Ping/ACCEPT	net	fw
SSH/ACCEPT:info	net	fw
SMB/ACCEPT	net	fw

Voir la liste ds ports à ouvrir :
http://www.shorewall.net/ports.htm

Fichier /etc/shorewall/policy
'''''''''''''''''''''''''''''
Pour que ça fonctionne, le fichier policy doit contenir :
fw		net		ACCEPT
net		all		DROP		info
all		all		REJECT		info

et non pas comme installé par défaut par les rpm MDK :
loc		net		ACCEPT
net		all		DROP		info
all		all		REJECT		info

(!!! explication ??)

Version 3
.........
Le fichier /etc/shorewall.policy est vide !

/etc/shorewall/zones
''''''''''''''''''''
A partir de Shorewall 2.2.0, le fichier /etc/shorewall/zones est vide : seule la zone fw est défine par défaut.
Définir les zones à utiliser, par exemple (cf. http://shorewall.net/shorewall_setup_guide.htm) :
net     Net             Internet
loc     Local           Local networks
dmz     DMZ             Demilitarized zone

Version 3
---------
- dans /etc/shorewall/zones mettre les zones proposées en exemple :
fw      firewall
net     ipv4
loc     ipv4
dmz     ipv4


Puis démarrer le firewall par :
# shorewall start
(ou redémarrer par shorewall restart)
Vérifier que les règles sont bien installées : iptables -L

Principal fichier à configurer pour autoriser différents services (http, ftp, imap, etc.) à fonctionner :
/etc/shorewall/rules
Si les services ne sont pas prédéfinis dans /usr/share/shorewall/actions.std autoriser les ports "à la main" comme indiqué dans la doc contenue dans le fichier /etc/shorewall/rules

Commandes intéressantes :
-------------------------
# shorewall version		par de -- !
# shorewall stop
# shorewall clear
# shorewall start
# shorewall restart

Pour voir l'état des règles de filtrage :
-----------------------------------------
La dernière ligne générée par shorewall start se termine par "Shorewall Started" si shorewall a bien démarré. Sinon, en cas d'erreur la dernière ligne est "Terminated" et le PC risque de ne pas être protégé sans que l'on s'en rende compte !!! 
Il est donc indispensable de vérifier à postériori si shorewall a bien démarré en affichant les règles de filtrage :
# iptables -L -v
Il serait bon de générer un message clair (pop-p et son) pour avertir de la non-installation des règles de filtrage (à voir, ça existe peut-être déjà)

Pour voir les messages générés par shorewall
--------------------------------------------
less /var/log/messages
tail -f /var/log/messages

grep /var/log/messages

Ports souvent sollicités
------------------------
DPT=631
ipp		631/tcp    IPP (Internet Printing Protocol)
ipp		631/udp    IPP (Internet Printing Protocol)
Dû à cups. Remède, dans /etc/cups/cupsd.conf changer "Browsing On" (défaut) en "Browsing off"
et redémarrer cups (service cups restart

Trier/formater les messages à partir des fichiers de log avec awk
-------------------------------------------------------------
Par exemple, afficher le n° IP des machines (SRC=), rejetées sur le port 631 avec les ports source (SPT=) et destination (DPT=) :
# grep 631 /var/log/messages |grep SPT=631 |awk '{print $9 " " $18 " " $19}' |less
SRC=192.168.0.23 SPT=631 DPT=631

Repérer les tentatives réussies ou échouées de connexions ssh
-------------------------------------------------------------
Pour que les connexions réussies soient enregistrées dans /var/log/messages, mettre dans /etc/shorewall/rules (on rajoute :info) :
ACCEPT:info     	net	fw	tcp	22
AllowSSH:info		net	fw
SSH/ACCEPT:info		net	fw

Connexions réussies :
# grep "Accepted password" /var/log/messages |less 

Connexions refusées :
# grep "Failed password" /var/log/messages |less
Pour compter le nombre de connexions refusées par jour
# grep 'Failed password' /var/log/auth.log | grep sshd | awk '{print $1,$2}' | sort | uniq -c

NB : elles sont aussi enregistrées dans /var/log/auth.log
C'est le résultat du paramétrage par défaut défini dans /etc/ssh/sshd.config :
# Logging
#SyslogFacility AUTH
#LogLevel INFO

Avec un formatage :
# grep "Failed password" /var/log/messages | awk '{print $2 " " $1 " " $3 " " $10 " " $11 "      " $13 }' | less
14 Oct 14:17:19 user janaina    ::ffff:209.209.13.165
14 Oct 14:17:20 user alves      ::ffff:209.209.13.165
14 Oct 14:17:22 user miotto     ::ffff:209.209.13.165
Nb : pour entrer la tabulation entre $10 et $13 : <Ctrl><V> puis <tab>

En savoir plus sur l'auteur de la tentative d'intrusion :
$ whois 209.209.13.165
InReach Internet INREACH98 (NET-209-209-0-0-1)
                                  209.209.0.0 - 209.209.127.255
Roger Caplan INREACH-ROGERCAPLAN (NET-209-209-13-160-1)

Infos complémentaires (adresse, N° de tel, etc.)
$ whois '!NET-209-209-13-160-1'
ou simplement (les '! ne semblent pas nécessaires)
$ whois NET-209-209-13-160-1 |less

Blocage des tentatives d'accès "brute fore" sur le port 22
----------------------------------------------------------



Anti-virus
==========
Clamav/Klamav
Doc : http://www.clamav.net/doc/latest/
Kalmav = interface graphique

Installation
------------
# urpmi clamav
Généralement pas à jour !
Installation à patir de sources
$ tar -zxvf clamav-xxx.tar.gz
$ cd clamav-xxx
$ ./configure
$ make
# make install

Désinstallation (à faire avant une nouvelle installation)
# make uninstall

Utilisation
-----------
- Mise à jour de la base des virus
# freshclam
ERROR: Clamd was NOT notified: Can't connect to clamd through /var/lib/clamav/clamd.socket
=> installer Clamd !
# urpmi clamd
# service clamd status
clamd is stopped
# service clamd start

Voir "Setting up auto-updating" et le reste de la doc.

ERROR: Please edit the example config file /usr/local/etc/freshclam.conf.
ERROR: Please edit the example config file /usr/local/etc/clamd.conf.
=> Complètement idiot ! Editer ces fichiers et mettre dans :
-----------------------------------------
# Comment or remove the line below.
Example
-----------------------------------------
"Exemple" en commentaire

- Scan antivirus:
# fdisk -l 	pour afficher la liste des partitions à scanner
# clamscan -ri	/point/de/montage/de/la/partition/ou/répertoire
# clamscan -r --bell -–log=rapport.txt /point/de/montage/de/la/partition/ou/répertoire
# clamscan -ri	--remove /point/de/montage/de/la/partition/ou/répertoire
-r 		récursive
-i ou --quiet	pour n'avoir que les virus de signalés 

CD bootables avec ClamAV
------------------------

ClamAV live CD
//////////////
http://www.volatileminds.net/projects/clamav/tutorial.html

Utilisation :
.............
Dans un environneemnt sans DHCP :
$ sudo ifconfig ethx <n° IP du PC> netmask 255.255....
	x = le n° de l'onterface
	netmask : à adapter au réseau (en général 255.255.255.0)
$ sudo route add default gw <n° IP de la passerelle>
Malheureusement il n'est pas possible d'enregistrer un fichier /etc/resolv.conf pour indiquer un serveur DNS (nameserver <n°IP du DNS>)
ce qui fait que la commande suivante (freshclam) revoie une erreur.
=> en l'absence de DHCP, utiliser de préférence SysRescueCD (cf. plus loin qui permet de définir un serveur DNS)

Puis :
$ sudo freshclam	(mise à jour)
$ sudo fdisk -l		(pour lister les partitions)
$ sudo mount -t ntfs-3g /dev/sda1 /mnt -o force
	(/dev/sda1 par exemple une partition NTFS
	 ntfs-3g pour permettre l'effacement des virus sur une partition NTFS)
$ sudo clamscan -ri --remove /mnt 

SystemRescueCd (SysRescueCD)
////////////////////////////
A télécharger de www.sysresccd.org/Index.fr.php 

Après démarrage du CD live:
- Choisir le type de clavier (16 pour français)
- Si nécessaire (dans le cas où il n'y a pas de DHCP) configurer le réseau :
net-setup ethx		(x=0 ou plus rarement 1)
Il arive parfois que l'auto-configuration de l'interfacee réseau par DHCP n'a pas réussi : utiliser aussi net-setup dans ce cas.
Vérifier que le réseau fonctionne (ping sur une machine connue)
- Mettre à jour l'anti-virus :
freshclam
- Lister les partitions à scanner :
fdisk -l
ou
cat /proc/partitions
- Créer un (ou des) point(s) de montage
mkdir /mnt/1		(ne pas monter directement la partition à scanner dans /mnt)
- Monter la partition à scanner (par exemple pour une partition NTFS sda1)
mount -t ntfs-3g /dev/sda1 /mnt/1
ou, en cas de problème de montage :
mount -t ntfs-3g /dev/sda1 /mnt -o force

ls /mnt/1		(pour vérifier que c'est bien cette partition qu'on veut scanner)
- Scanner avec l'anti-virus
clamscan -ri /mnt/1
ou pour directement supprimer les virus :
clamscan -ri --remove /mnt/1

Distributions sur CD bootable (CD live) outils pour contrôler, réparer, récupérer un système
============================================================================================
SystemRescueCd						http://www.sysresccd.org/Main_Page
INSERT (Inside Security Rescue Toolkit)			http://www.inside-security.de/insert_en.html
Ultimate Boot CD					http://www.ultimatebootcd.com/index.html

Installation de Mandriva (sur disque, clé USB, etc) à partir d'un site FTP
==========================================================================
http://wiki.mandriva.com/fr/Installer_Mandriva_Linux#Installation_depuis_un_miroir_local.2C_disque_dur.2C_r.C3.A9seau_local.2C_ou_Internet

Mandriva (ou autres distributions sur clé USB)
==============================================
	http://www.mcnlive.org/
	http://loli.fsa.ulaval.ca/index.php?id=591
	http://www.eeextra.com/eee/how-to-create-a-live-linux-usb-pendrive.html
	http://wiki.mandriva.com/en/Draklive ou http://wiki.mandriva.com/fr/Draklive
	http://wiki.mandriva.com/fr/TwikiCookerHowToFr#Installer_.C3.A0_partir_d.27une_clef_USB
	http://wiki.mandriva.com/fr/One_sur_live_usb
	http://en.wikipedia.org/wiki/Live_USB
	http://unetbootin.sourceforge.net/

Autres :
	http://pc-silencieux.disk91.com/index.php?2008/01
	http://valaurea.free.fr/documents/sig11_flash.html

Anti-virus sur CD bootable
==========================
Utile pour vérifier la présence de virus sur un PC windows

Insert (Inside Security Rescue Toolkit)
---------------------------------------
http://www.inside-security.de/insert_en.html
A base de Knoppix + clamav
Pour contrôler une partition :
1 - monter la partition à contrôler, par exemple :
# mount /dev/hda1 /mnt/hda1
2 - aide en ligne :
# clamscan --help
2 - Lancer le scan anti-virus :
# clamscan -r --bell /mnt/hda1
-r = recursive
--bell = sonne pour chaque virus rencontré
Avec enregistrement du résultat dans un fichier :
# clamscan -r --bell --log=rapport.txt /mnt/hda1
ou encore :
# clamscan -r --bell -log rapport.txt /mnt/hda1

System rescue CD (SystemRescueCd, SysRescueCD)
==============================================
http://www.sysresccd.org/Index.fr.php

Communiquer sous SSH avec un PC tournant sous sysresccd :
- Changer le mot de passe root :
# passwd
- Vérifier que SSH tourne :
# /etc/init.d/sshd status | start | restart

D'un PC externe, on peut maintenant se connecter avec SSH de différentes façons sur le PC tournant sous SysRescueCD.
Exemples (IP du PC sous SysRescueCD 192.168.1.20) :
- ssh simple :
	$ ssh root@192.168.1.20
- sftp sous konqueror :
	sftp://root@192.168.1.20/
- sshfs, pour monter la partition /root de SysRescueCD sur une partition locale (mnt/disk par exemple)
ou encore monter la partition root de 
	$ sshfs root@192.168.1.20:/ mnt/disk

Arpwatch
========
arp =  address resolution protocol
Maintient une base de donnée des adresses MAC visibles sur le réseau et de leurs paires d'IP associées
Pour voir s'il tourne :
$ ps auwx | grep arp
Sinon pour lancer le démon :
# arpwatch
Pour voir les stations sur le réseau :
# cat /var/log/messages | grep arp
$ less /var/lib/arpwatch/arp.dat
Pour l'afficher sous forme de page html
$ arpwatch2html.pl

Ethereal/Wireshark
==================
Wireshark est le nouveau nom de ethereal
www.ethereal.com/
www.wireshark.org/

User's guide : http://www.ethereal.com/docs/eug_html_chunked/
filtres : http://home.insight.rr.com/procana/

Utilisation :
Capture/Options
Capture Filter: port 80 (par exemple)
Cocher "Update list of packets in real time"
[Start]

Mise à jour de l'affichage : bouton [Clear] (sur la page initiale, ligne "filter") 

Etherape
========
http://etherape.sourceforge.net/

Tcpdump
=======
tcpdump -i eth0 -s0 -X host IP_ou_nom_de_la_machine_à_scanner
s0	lonqueur capturée, 0 signifie à tcpdump d'utiliser une longueur ad-hoc pour capturer des paquets entiers
-X	affichage en hexa et ASCII

NB : sur MDV tcpdump fonctionne en donnant le n° IP mais pas avec le nom de la machine : ceci est dû à un fichier /etc/hosts incorrect, voir bug /etc/hosts plus bas : tcpdump affiche ce qui se passe sur 127.0.0.1, c'est à dire rien au niveau de eth0.

Exemple : voir ce qui se passe sur le port 25 :
Dans une console :
# tcpdump -i eth0 -c 10 -l port 25 2>/dev/nul | while read titi; do lsof -n -i :25; done
-i eth0		interface
-c 10		-i eth0termine après réception de 10 paquets
-l		pour voir les paquets
titi		variable quelconque pour exécution de la boucle

Dans une autre console (pour tester le résultat)
$ telnet <mail server> 25	se connecte sur le serveur de mail <mail server>


Netcat (nc)
===========
www.jfranken.de/homepages/johannes/vortraege/netcat_inhalt.en.html

Pour communiquer entre 2 machines.
voir aussi cryptcat

Se connecter
------------
netcat <nom/adresse de machine> <nom du service> 
netcat <nom/adresse de machine> <numéro de port>

En mode serveur (en attente d'une connexion sur un port spécifié)
-----------------------------------------------------------------
netcat -l -p<port>			(l = listen)

Sur le serveur
--------------
$ nc -l -p 45678
-l = listen
-p 45678 = n° de port quelconque
=> nc écoute sur le port indiqué
ou
$ nc -L -p 45678 pour éviter la déconnexion
ou bien :
$ nc -l -p 45678 > reception
pour récupérer le résultat dans le fichier réception

Sur le client
-------------
(ne pas oublier de lancer le serveur avant, sinon "connection refused !)
$ nc nom_ou_IP_du_serveur 45678

En cas de non-fonctionnement, voir la configuration du (des) firewall(s) éventuel(s) 
Serveur et client communiquent maintenant par le port 45678 : on peut taper au clavier des caractères sur le serveur qui s'affichent sur le client, et des caractères sur le client qui s'affichent sur le serveur

Envoie de fichier
-----------------
$ cat /fichier.txt | nc nom_client 45678
le contenu de /fichier.txt s'affiche sur le serveur

Transfert de fichier
--------------------
Serveur : 	nc -l -p 5500 < image.jpg
Client :	nc -v <serveur> 5500 > toto.jpg

Exécution de commandes
----------------------
Sur le serveur :
$ nc -v -l -p 5600 -e /bin/bash		(ou en plus court : nc -vlp5600 -e/bin/bash)
Sur le client :
$ nc <serveur> 5600
et taper les commandes qui seront exécutées sur le serveur : le résultat s'affiche sur l'écran du client

Test de ports
-------------
http://3psilon.free.fr/index.php?pa=35

$ nc -vv 127.0.0.1 20-90
localhost.localdomain [127.0.0.1] 90 (?) : Connection refused
localhost.localdomain [127.0.0.1] 89 (?) : Connection refused
localhost.localdomain [127.0.0.1] 88 (kerberos) : Connection refused
localhost.localdomain [127.0.0.1] 87 (?) : Connection refused
localhost.localdomain [127.0.0.1] 86 (?) : Connection refused
localhost.localdomain [127.0.0.1] 85 (?) : Connection refused
localhost.localdomain [127.0.0.1] 84 (?) : Connection refused
localhost.localdomain [127.0.0.1] 83 (?) : Connection refused
localhost.localdomain [127.0.0.1] 82 (?) : Connection refused
localhost.localdomain [127.0.0.1] 81 (?) : Connection refused
localhost.localdomain [127.0.0.1] 80 (http) open

Netcat s'arrête sur le 1° port trouvé ouvert
Pour un scan complet : 
$ nc -vvz 127.0.0.1 20-90
Pour que netcat n'affiche que les ports ouverts, utiliser un seul -v :
$ nc -vz 127.0.0.1 1-255

Gnu netcat
==========
Semble plus complet que le netcat installé par défaut sur MDV 2007.0 (pas d'option -L par exemple)
Télécharger : http://netcat.sourceforge.net/download.php -> netcat-0.7.1.tar.gz
Décompresser :
$ tar -zxvf netcat-0.7.1.tar.gz
$ cd netcat-0.7.1
$ ./configure
$ make
$ sudo make install
NB : l'installation se fait par défaut dans /usr/local/bin alors que le netcat d'origine est dans /usr/bin/netcat
Pour différencier l'un de l'autre et y accéder facilement, par exemple :
$ sudo ln -s /usr/local/bin/netcat /usr/bin/ncgnu

Mode tunnel
-----------
Nb utilise l'option -L absente de nc v1.10 : utiliser Gnu netcat
cf. http://dept-info.labri.fr/~aumage/oa/Cours/ARSA/arsa.html :
nc -L<serveur:port> -p<port d'attente> pour une prolongation simple. 
nc -L<serveur:port> -p<port d'attente> -x pour tracer la conversation. 
nc -L<serveur:port> -p<port d'attente> -o <fichier> pour enregistrer la conversation dans un fichier. 

Cryptopgraphie, chiffrer des documents
======================================
encfs
http://wiki.mandriva.com/fr/Encfs
http://linux.softpedia.com/get/Desktop-Environment/Tools/EncFs-ServiceMenu-35807.shtml

Cryptographie, disques virtuels cryptés, chiffrage
==================================================
http://openpgp.vie-privee.org/linux.html

Mountloop et son interface drakloop
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
http://www.aerospacesoftware.com/cryptoloop-howto.html
/usr/share/doc/mountloop-0.15.1/README

La configuration de drakloop est stockée dans ~/.mountlooprc : on peut y modifier (si nécessaire) le nom du répertoire crypté.
NB : par contre le nom du fichier crypté "encfile" est codé en dur
dans drakloop (voir le code source perl) : si on modifie ce nom, drakloop ne fonctionne plus. Idem pour les possibilités de cryptage : seul aes est proposé. Il est tout a fait possible de nommer autrement le fichier crypté et d'utiliser d'autres chiffrages, cf./usr/share/doc/mountloop-0.15.1/README
=> dans ce cas, utiliser mountloop en ligne de commande

Montage à la main
-----------------
$ mountloop <enc> <file> <dir>
par exemple :
$ mountloop aes256 Dossier_crypte/Fichier_crypte Dossier_crypte

Menu contextuel pour monter ou démonter un fichier crypté
--------------------------------------------------------------------
http://developer.kde.org/documentation/tutorials/dot/servicemenus.html
http://www.kde-france.org/article.php3?id_article=82
http://www.coagul.org/article.php3?id_article=91
www.oreilly.com/catalog/linuxdeskhks/chapter/hack40.pdf
http://mandrakeusers.org/lofiversion/index.php/t18068.html

Ajouter dans
~/.kde/share/apps/konqueror/servicemenus (à l'usage de l'utilisateur courant)
ou dans 
/usr/share/apps/konqueror/servicemenus (pour tous les utilisateurs)
les fichiers .desktop suivants :

- Pour monter le fichier crypté
````````````````````````````````
OpenCryptFile.desktop

[Desktop Entry]
Actions=OpenCryptFile
ServiceTypes=all/allfiles

[Desktop Action OpenCryptFile]
Name=Open encrypted file
Exec=/usr/bin/kdialog --password "Password for this crypted file?" | /usr/bin/mountloop aes256 %f %d
Icon=/usr/share/pixmaps/password.png

- Pour démonter le système de fichier crypté (ou tout autre système monté)
`````````````````````````````````````````````````````````````````````````
UmountFS.desktop

[Desktop Entry]
Actions=UmountFS
ServiceTypes=inode/directory

[Desktop Action UmountFS]
Name=Unmount File System
Exec=kdesu "/bin/umount -fl %f"
Icon=encrypted

Pour activer ces actions, clic droit sur le fichier ou le dossier, puis sous-menu "Actions"

Autre possibilité : associer le fichier encfile au programme drakloop
---------------------------------------------------------------------
(K> System > Configuration > KDE > Components > File Associations
encfile -> /usr/bin/drakloop)
=> un double clic sur le fichier lance drakloop
NB : le fichier .desktop créé se trouve dans ~/.kde/share/mimelnk/application

Truecrypt (renommé realcrypt sous MDV !!)
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
http://www.truecrypt.org/
Opensource, existe pour Windows et Linux : les fichiers cryptés sont visibles sous windows et linux.
Mode d'emploi :
http://altoptions.wordpress.com/2008/01/16/realcrypt-howto-part-1/

Installations
#############
# urpmi truecrypt
Mais la version disponible pour Mandirva est obsolete !

Installation à partir des sources (version 6.1 ou 6.1a)
-------------------------------------------------------
- Télécharger le code source Mac OS X/Linux : http://www.truecrypt.org/downloads2.php
- Décompresser :
$ tar -zxvf TrueCrypt\ 6.1a\ Source.tar.gz
$ cd truecrypt-6.1-source
et lire le fichier Readme.txt :
$ less Readme.txt

- Ajouter les librairies nécessaires au fonctionnement de truecrypt (cf. fichier Readme.txt) :

Cryptoki :
_________
En fait il faut uniquement les pkcs*.h de cryptpki (pkcs11f.h,
pkcs11.h et pkcs11t.h, ne marche pas avec uniquement pkcs11.h !) : les récupérer sur "ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-11" dans le répertoire de la version la plus récente (actuellement "v2-20")
et les copier dans le répertoire "truecrypt-6.1a-source/Crypto"

wxWidgets
_________
installation : voir plus loin "Installation de wxAll"
Puis :
$ make WX_ROOT=/path/complet/vers/wxWidgets-2.8. wxbuild

fuse
____
# urpmi lib64fuse-devel (ou urpmi libfuse-devel en 32 bits)

Compilation de truecrypt :
_________________________
$ make WXSTATIC=1

Installation :
______________
l'exécutable truecrypt se trouve dans ..../truecrypt-6.1a-source/Main
$ cd Main 
# sudo chown root:root truecrypt
# $ sudo cp truecrypt /usr/bin/

Avec cette version on a une interface graphique.
Associer l'extension (.tc sous Windows, mais n'importe quelle autre extension peut être utilisée) :
$ kcmshell filetypes
et configurer.

Graver un conteneur truecrypt sur CD ou DVD 
-------------------------------------------
- DVD R+W 4.7 GB : créer un container truecrypt de 4480 MB maximum (truecrypt crée un fichier de 4 697 620 480 bytes). K3b rapporte 2 MO de libres.
- CD


Man
###
$ man realcrypt 	(man truecrypt ne marche pas !!)

# realcrypt -h		# truecrypt -h		aide
# realcrypt -V		# truecrypt -V		version

Documentations
--------------
http://www.truecrypt.org/docs/?s=tutorial
http://altoptions.wordpress.com/2008/01/16/realcrypt-howto-part-1/

Utilisation en ligne de commande
""""""""""""""""""""""""""""""""
Création d'un volume crypté
---------------------------
# realcrypt -c				et répondre aux questions
NB : si on choisit :
2) None
au lieu de
1) FAT
il faudra par la suite formater le volume, par exemple en ext3 

Formatage
---------
Si ce n'a pas été fait dans l'étape précédente :
# realcrypt -i				associe le volume à un device et le monte
et répondre aux questions. Puis :
# mkfs.ext3 /dev/mapper/realcrypt0
# mount /dev/mapper/realcrypt0 /point/de/montage
Les droits sont root:root. Les changer pour autoriser l'utilisateur et le groupe à y accéder :
# chown <utilisateur>:<groupe> /point/de/montage

# realcrypt -l					facultatif : pour lister le(s) device(s)
# realcrypt -d					pour démonter et libérer tous les devices
Pour ne démonter qu'un device (conteneur), l'une ou l'autre de ces commandes :
# realcrypt -d	/point/de/montage
ou :
# realcrypt -d	/dev/mapper/realcryptx		(x = 0, 1 ... n° du conteneur)
ou :
# realcrypt -d	/FichierConteneur
ou :
# umount /point/de/montage			(ne libère pas le device)
ou :
# umount /dev/mapper/realcryptx			(ne libère pas le device)

Utilisation courante en ligne de commande
-----------------------------------------
# truecrypt volume.tc /point/de/montage		montage en "read only
# truecrypt -d volume.tc			démonte volume.tc
# truecrypt -d					démonte tous les volumes montés

Avec l'interface graphique pas d'option pour monter les volumes NTFS en lecture/écriture (truecrypt 6.0 ou 6.1) -> utiliser la ligne de commande :
# truecrypt --filesystem=ntfs-3g --fs-options=users,rw,uid=<n° ou login utilisateur> volume.tc /point/de/montage

GUI (interface graphique)
"""""""""""""""""""""""""
http://tcgui.tc.funpic.de/en/download.htm
http://www.howtoforge.com/truecrypt-with-gui-on-ubuntu-7.10-p2
http://webscripts.softpedia.com/script/Security-Systems/truecrypt-GUI-33364.html

Installation, utilisation de tcgui (obsolète ; la versin truecrypt 6 a une interface graphique)
----------------------------------
$ tar -zxvf tcgui-0.2.tar.gz
# cp -r tcgui-0.2 /opt/

# /opt/tcgui-0.2/tcgui
et répondre aux messages d'erreur par :
# urpmi php-cli
# urpmi php-gtk2
# vi /etc/php.ini	chercher "extension" et ajouter la ligne : extension=php_gtk2.so.
			Voir le commentaire dans ce fichier : on peut aussi mettre la ligne extension=php_gtk2.so dans un fichier du répertoire /etc/php.d/

# /opt/tcgui-0.2/tcgui
File > Add MountPoint			pour ajouter un point de montage
Click droit sur le point de montage
	- pour indiquer le volume à monter 
	- ou pour supprimer le point de montage
Click droit sur le nom de volume
	- pour le démonter
Tools > Save Favorites
Tools > Mount Favorites


Installation de truecrypt-GUI (obsolète ; la versin truecrypt 6 a une interface graphique)
-----------------------------
# urpmi java
# urpmi pexpect
# groupadd truecrypt
# usermod -G truecrypt root
# usermod -G truecrypt <login utilisateur>
# chgrp truecrypt /usr/sbin/truecrypt
# ln -s /usr/sbin/realcrypt /usr/bin/realcrypt
# tar -zxvf tcgui.0.4.2.tar.gz
# bash install.sh root
$ tcgui
 
Container truecrypt formaté en NTFS
-----------------------------------
En mode graphique truecrypt 6, ou 6.1 monte un volume NTFS en "read-only"; pour autoriser l'écriture :



Lecture-écriture de partitions NTFS
===================================
http://www.jankratochvil.net/project/captive/
Captive: The first free NTFS read/write filesystem for GNU/Linux

ntfs-3g.org
http://www.ntfs-3g.org/

Serveur de log syslog-ng
========================
Voir doc et FAQ très bien faites sur :
http://www.balabit.com/products/syslog_ng/

Installation
------------
Installer à partir des rpm (actuellement syslog-ng-1.4.17-5mdk) ou récupérer les sources sur http://www.balabit.com/products/syslog_ng/upgrades.bbq, actuellement :
- syslog-ng-1.6.6.tar.gz
- libol-0.3.15+20050407.tar.gz
Décompresser :
$ tar zxvf nom_fichier
Compiler d'abord liblo puis syslog-ng :
# cd nom_répertoire
# ./configure
# make
# make install

Fichiers syslog-ng installés :
/usr/local/sbin/syslog-ng
/usr/local/man/man5/syslog-ng.conf.5
/usr/local/man/man8/syslog-ng.8

Créer le répertoire /etc/syslog-ng
Y copier le fichier de configuration autodocumenté que l'on trouve dans les sources
/contrib/syslog-ng.conf.doc
et le renommer en syslog-ng.conf

Copier le script de démarrage init.d.RedHat-7.3 que l'on trouve dans les sources, répertoire contrib/, et le renommer en syslog-ng et lui donner les droits rwxr--r-- :
# chmod 744 syslog-ng


Commandes de base
-----------------
syslog-ng --help
syslog-ng -V		-> version

Classer les fichiers de log
---------------------------
http://linuxfr.org/tips/index,1.html
Pour classer les fichiers de log dans des répertoires type AAAA/MM/JJ
ou encore HOSTS/AAAA/MM/JJ (si on fait un serveur de log), configurer syslog-ng.log :
utiliser les variables $HOSTS $YEAR ...
Exemple pour auth.log :
destination authlog {file("/var/log/HOSTS/$HOST/$YEAR/$MONTH/$DAY/auth.log");};


Configuration écran /résolution / réglage du gamma (contraste) / rafraîchissement 
=================================================================================
XFdrake
kcmshell display
krandrtray
Xdrakres
En ligne de commande :
xrandr			changement "au vol" sans redémarrer X
$ xrandr -q		affiche les résolution possibles
# xrandr -s 800×600	pour changer la résolution

Lancement automatique de processus
==================================
at, cron, kcron, drakcronat

http://www.ml.refer.org/LancementAuto.htm
http://www.faqts.com/knowledge_base/view.phtml/aid/1005/fid/436

at
°°
Exemple :

# at 12:15
warning: commands will be executed using (in order) a) $SHELL b) utilisateur shell c) /bin/sh
at> echo coucou
at> df
at> <EOT>
job 1 at 2003-09-04 12:15

NB : EOT obtenu en tapant <ctrl><d>
A 12 H 15 un message est envoyé à l'utilisateur avec le résultat des commandes echo et df

atq : liste des jobs en attente

cron
°°°°
Voir le man, pour une fois presque clair (il y a des exemples) !
http://lea-linux.org/admin/automate.php3#cron
https://help.ubuntu.com/community/CronHowto

Les tâches à exécuter sont stockées dans des fichiers texte ayant le nom de l'utilisateur (root, adm, tartempion ...) dans le répertoire :
/var/spool/cron/
A voir également : les répertoires /etc/cron.....

---- Pour programmer une tâche à répéter plusieurs fois :
Exemple : mise à l'heure de la machine à 3 H du matin tous les jours
Ouvrir le fichier avec la commande crontab -e (ça ouvre le fichier de l'utilisateur logé). Y inscrire par exemple :
0 3 * * *       /bin/nice -n 19 /usr/sbin/ntpdate -u ntp1.tuxfamily.net
Fermer : un message de mise à jour de la table s'affiche

Les champs de gauche à droite :
minute (0-59) / heure (0-23) / jour (1-31) / mois (1-12 ou les 3 premières lettres du mois) / jour de la semaine (0-7) ou les 3 premières lettres du jour.

Listes permises, par exemple :
1,2,3,4,5	pour lundi à vendredi (dans le champ jour)
1-5		idem
0-4,20-23	dans le champ heure : toutes les heures de 0 à 4 et de 20 à 23 heures

NB :
- Pour le jour de la semaine 0=7=sun
- Bien indiquer le "path" des commandes, sinon elles ne sont pas trouvées.

Les choses qu'il semble utile de mettre dans la crontab :
- mise à jour de l'heure
- mise à jour de la base slocate (updatedb)
- mise à jour automatique du système (urpmi --auto --auto-update)

----- Pour changer l'éditeur utilisé par défaut par crontab changer la variable d'environnement
EDITOR (ou VISUAL) :
$ export EDITOR=nom_de_l'éditeur

anacron
°°°°°°°
# urpmi anacron
# service anacron status


Gestion des tâches
==================
ps

Lister les "process"
===================
$ top
	q	pour quitter
	k <PID>	pour tuer le processus n° PID
	h	help

Sous KDE : <ctrl><esc>

Impression
==========
Liste des impressions en cours :
-------------------------------
$ lpq

Supprimer une impression :
------------------------
$ lprm n°_de_job

Lancer une impression à partir de la ligne de commande :
--------------------------------------------------------
$ lpr nom_du_fichier

Association (KDE)
=================
K> System > Configuration > KDE > Components > File Associations
ou plus rapidement :
$ kcmshell filetypes

Les associations sont mémorisées dans :~/.kde/share/config/profilerc
MDV 2008 : ne semble pas fontionner !

Autres possibilités :
---------------------
1 - Clic droit sur le fichier à associer à une application
Cliquer sur l'icône en forme de clé anglaise
Ajouter ou sélectionner l'application à utiliser et la mettre en tête de liste.

ou encore :
2 - Clic droit sur le fichier à associer à une application
"Open with"
Même si l'application à utiliser est dans la lite affichée, cliquer sur "Other"
On se retrouve dans la me interface que précédemment : ajouter ou sélectionner l'application à utiliser et la mettre en tête de liste.

NB : la modification s'applique (en principe) à tous les logiciels KDE.
Ce n'est pas le cas de firefox : pour changer les associations dans firefox voir plus loin "Firefox, associations fichiers-application".


Utilisation de la memoire (cache, swap)
=======================================
free

Permissions
===========
http://lea-linux.org/admin/admin_env/permissions.html
http://www.zzee.com/solutions/linux-permissions.shtml#zzee_link_1_1077830297
http://cyberzoide.developpez.com/unix/droits.php3

Droits
------
	fichiers				Répertoires
--- 	0 = No rights at all
--x 	1 = Execute only			Modification des droits des fichiers contenus possible
-w-	2 = Write only
r--	4 = Read only				Contenu du répertoire visible
r-x	5 = Read and Execute (4+1)
rw-	6 = Read and Write (4+2)		visible et contenu modifiable
rwx	7 = Read, Write, and Execute (4+2+1).

cf. http://fr.selfhtml.org/petitsassistants/chmod.htm

Exemples :
``````````
cf. http://www.zzee.com/solutions/chmod-help.shtml

# chmod 644 file.txt
ou bien :
# chmod u+rw-x,g+r-wx,o+r-wx file.txt
# ls -l file.txt
-rw-r--r--    1 root     root           33 Jul 11 17:10 file.txt

umask
-----
File creation mode mask : moodifie les droits sur les répertoires et fichiers créés
Exemple dans http://en.wikipedia.org/wiki/Umask
	Droit initial : 	777(en octal) = 111 111 111 (en binaire)
	Masque :		174 (octal)   = 001 111 100 (en binaire=)2
	NOT (résultat) :	603	      = 110 000 011


Droit initial : 777
umask 002 => 775 (rwxrwxr-x)
umask 022 => 755 (rwxr-xr-x)
umask 017 => 760 (rwxrw----)
umask 0   => 777 (rwxrwxrwx) pas de changement !

Ne changer les droits que sur les répertoires ou les fichiers, exemples :
````````````````````````````````````````````````````````````````````````` 
find -type d -print0 |xargs -0 chmod 755
ou bien
find . -type d -exec chmod 755 {} ";"
find -type f -print0 |xargs -0 chmod 644

Utilisateur propriétaire du fichier
-----------
chown [-R] nom_du_propriétaire:nom_du_groupe nom_fichiers
-R = récursif

chown root toto.txt
chown root:root toto.txt iti.sh
find /usr/local/toto -user bibi -exec chown bobo {} \;
		trouve à partir du répertoire /usr/local/toto tous les fichiers ayant pour utilisateur bibi
		pour le remplacer par l'utilisateur bobo. 

NB : après avoir changé les droits sur un répertoire, réouvrir la session POUR QUE LA MODIFICATION SOIT PRISE EN COMPTE !!!

Sticky bit
----------
http://www.unixguide.net/hp/faq/5.1.9.shtml


Disques durs
============
Bios :
Cas d'un disque dur IDE seul sur sa nappe :
s'il est reconnu avec le cavalier sur CS, mais pas sur MA, essayer sans cavalier (cas des disques WD)

Test performances
-----------------
hdparm -t /dev/drive
bonnie

Compression / décompression
===========================
http://astuce.linux.free.fr/Archivage/Comment_créer_et_décompresser_une_archive_avec_tar.html
http://www.linux-kheops.com/doc/dupoux/compress/
http://cern91.tuxfamily.org/linux/menu.php?page=tar

Compresser un fichier :
-----------------------
gzip NomFichier.ext		->	NomFichier.ext.gz
Autre possibilité : bzip2

Décompresser
------------
gunzip filename.ext.gz.
NB : le fichier compressé est supprimé : il est remplacé par le décompressé

Regrouper (et compresser) plusieurs fichiers en une seule archive
-----------------------------------------------------------------
Archiver 2 fichiers dans un seul
tar cvf NomArchive.tar NomFichier1.ext NomFichier2.ext

Désarchiver ces fichiers
tar xvf NomArchive.tar

Pour en même temps archiver et compresser
tar cvfz NomArchive.tgz NomFichier1.ext NomFichier2.ext
Options :
	c = créer l'archive
	v = verbose
	f = dans un fichier archive
	z = compresser

Voir le contenu
tar tfz NomArchive.tgz
Option :
	t "type" le  contenu de l'archive

Décompresser :
tar -xvf NomArchive.tgz
x extrait les fichiers.

Fichiers .tar.Z
gunzip toto.tar.Z	-> crée toto.tar
tar xvf toto.tar	-> décompresse toto.tar

Fichiers .tar.gz :
tar -zxvf toto.tar.gz
(ou bien en 2 temps :
gunzip toto.tar.gz
tar -xvf toto.tar

Utiliser tar pour faire une copie d'un répertoire
-------------------------------------------------
tar cf - repertoire/a/copier | (cd /repertoire/destination; tar xpvf -)
-	indique à tar 

-	entrée standard
c	crée l'archive
x	extrait l'archive
p	preserve les permissions
v	verbose


Fichiers bz2
------------
En 2 temps :
bunzip2 NomFichier.bz2		-> NomFichier.tar
tar xvf NomFichier.tar
En 1 temps :
tar jxvf NomFichier.bz2

Fichier zip
-----------
Compresser
zip -r nom_du_fichier.zip repertoire_ou_fichier
-r = récursif

Décompresser :
unzip fichier.zip

Fichiers binhex
---------------
uuDeview / xdeview (http://www.fpx.de/fp/Software/UUDeview/)

Fichiers rar
------------
unrar e fichier.rar			extrait sans création des répertoires d'origine
unrar x fichier.rar			extraction avec crétion des répertoires

Interfaces graphiques
---------------------
Ark
fileroller

Commande cp (copie)
===================
Copier le contenu d'un répertoire ou un fichier avec son (ou une partie de son arborescence)
cp -R --parents /home/toto/exemple/1 test
cp -R --parents ~/exemple/1 test
=> résultat : l'arborescence  home/toto/exemple/1 est crée dans test
cp recopie l'arborescence passée en paramètre 

Copier, archiver, mettre à jour un disque, une partition, un répertoire
=======================================================================

Avec cp
-------
cp -a source destination

Avec dd
-------
Copie de disque à disque (disques identiques, semble poser des problèmes si disques différents)
dd if=/dev/hda of=/dev/hdc

NB : la taille de block par défaut est très faible, d'où des temps de copie élevés : entrer une taille de bloc élevée, par exemple :
dd if=/dev/hda of=/dev/hdc bs=256k

Avec rsync
----------
cf.http://lea-linux.org/trucs/?aff_item=202

Créer un fichier d'exclusion : contient la liste des fichiers ou répertoires que l'on ne veut pas (re)copier. Exemple /

dir_exclus.lst :
...................
/proc
/tmp
/mnt
/home
...................

NB : il est important d'exclure /mnt surtout si la destination est montée sous /mnt (/mnt/copie dans l'exemple  suivant)

# rsync -avH --exclude-from=dir_exclus.lst / /mnt/copie
# rsync -avoH --exclude-from=dir_exclus.lst / /mnt/copie

Avec mirrordir
--------------
# mirrordir --exclude-from /dir_exclus.lst / /mnt/copie

Programmation de tâches (cron)
==============================
kcron
/etc/crontab

MBR écrasé -> partitions disque perdues : comment les récupérer
===============================================================
Le mbr contient plusieurs informations essentielles pour le fontionnement de l'ordinateur :
Extrait du "Linux System Administrator's Guide"
The MBR, boot sectors and partition table

The information about how a hard disk has been partitioned is stored in its first sector (that is, the first sector of the first track on the first disk surface). The first sector is the master boot record (MBR) of the disk; this is the sector that the BIOS reads in and starts when the machine is first booted. The master boot record contains a small program that reads the partition table, checks which partition is active (that is, marked bootable), and reads the first sector of that partition, the partition's boot sector (the MBR is also a boot sector, but it has a special status and therefore a special name). This boot sector contains another small program that reads the first part of the operating system stored on that partition (assuming it is bootable), and then starts it.

Outils de récupération de la table de partition :
-----------------------------------------------
gpart 		http://www.stud.uni-hannover.de/user/76201/gpart/
fixdisktable	http://bmrc.berkeley.edu/people/chaffee/fat32.html
testdisk	http://www.cgsecurity.org/
Testdisk semble le meilleur


Liens intéressants :
http://www.ntfs.com/mbr-damaged.htm
http://plug.linux.org.au/~steve/mbr.html#mbr

Récupération de fichiers accidentellement effacés
=================================================
En plus de testdisk, tester : 
TestDisk 	(urpmi testdisk)
ddrescue	(http://www.gnu.org/software/ddrescue/ddrescue.html)
PhotoRec	(http://www.cgsecurity.org/wiki/PhotoRec)
Cf. http://www.cgsecurity.org/wiki/PhotoRec


MBR écrasé : affectation lettre <-> partition perdue sous W2000
================================================================
Dans les OS Microsoft les partitions sont désignées par une lettre.
Sous Windows 2000 (et NT4 ?) l'affectation lettre <-> partition dépend d'une information stockée dans le mbr.
Si l'on écrase le mbr (sous DOS par fdisk /mbr, par exemple) cette information est perdue, d'où parfois impossibilité d'accéder à une session.
Pour y remédier, consulter les articles suivants de la knowledge base Microsoft

Unable to Log on if the Boot Partition Drive Letter Has Changed (article 249321)
HOW TO: Change the System/Boot Drive Letter in Windows (article 223188)

Telnet
======
telnet nom_ou_N°IP_serveur 110		Pour tester par exemple un serveur POP (143 pour IMAP)
Caractère d'échappement :
	Escape character is '^]'
soit sur le clavier :
Ctrl + AltGr + "]"
"]" = touche entre le "0" et le "=" en haut du clavier.

Apache et SSL
=============
Voir /etc/ssl/apache/README.test-certificates
Utiliser
	openssl ou
	/usr/lib/ssl/apache-mod_ssl/gentestcrt.sh   (programme spécifique MDV)


SSH
===
http://www-106.ibm.com/developerworks/library/l-keyc.html
http://www-106.ibm.com/developerworks/linux/library/l-keyc2/
http://troumad.free.fr/Linux/Linux.sxw

Démarrer / redémarrer ...
---------------------
# service sshd status
		start
		restart
		stop

Sur une knoppix (v 3.4)
# /etc/init.d/ssh
et créer un utilisateur avec mot de passe.
Plus simple :
KNOPPIX > Services > Start SSH server

De façon générale ce menu Knoppix permet de lancer plusieurs services, en particulier
- Terminal server
- NX
- Samba
- SSH

Fichiers de configuration
-------------------------
/etc/ssh
~/.ssh

Sécuriser les connexions ssh
----------------------------
Fichier /etc/ssh/sshd_config
cf. http://www.faqs.org/docs/securing/chap15sec122.html

- Spécifier quels utilisateurs peuvent se connecter :
AllowUsers toto bibi truc@test.domaine.fr

Seuls les utilisateurs toto bibi peuvent se connecter ainsi que l'utilisateur truc, mais uniquement à partir de la machine test.domaine.fr

- Interdire l'accès à root:
PermitRootLogin no

Vérifier si SSH tourne sur le PC distant et quelle est la version du programme:
------------------------------------------------------------------------------
telnet nom_ou_N°IP_PC_distant 22

Se connecter au PC distant :
----------------------------
ssh nom_ou_N°IP_PC_distant
ou bien pour avec un autre utilisateur que celui qui est utilisé
ssh -l utilisateur nom_ou_N°IP_PC_distant
ssh utilisateur@nom_ou_N°IP_PC_distant

Pour augmenter la vitesse de transfert (compression) : ssh -C 
Pour pouvoir afficher des applications graphiques (X11 forwarding) : ssh -X 
Pour pouvoir afficher des applications graphiques (trusted X11 forwarding) : ssh -Y
	En cas de message d'erreur "cannot open display", éditer /etc/ssh/sshd_config
	et vérifier que X11Forwarding est à "yes".

ConnectionTimeout :
En cas d'erreur de connexion le timeout est particulièrement long (de l'ordre de 2 minutes ?)
Pour le raccourcir par exemple à 10 secondes :
ssh -o ConnectTimeout=10  user@machine
(ConnectTimeout et non pas ConnectionTimeout comme indiqué dans la doc !)

Se connecter en root au PC distant :
------------------------------------
L'autoriser/l'interdire : voir :
/etc/ssh/sshd_config
	PermitRootLogin yes | no
	AllowUsers
	DenyUsers

Lancer une application sur la machine distante
----------------------------------------------
ssh utilisateur@nom_ou_N°IP_PC_distant <commande distante>

Créer / changer un couple de clés privées/publiques
---------------------------------------------------
$ ssh-keygen -t rsa			pour générer un couple de clés	RSA
$ ssh-keygen -t dsa							DSA
et répondre aux questions.
Un couple de clés est créé dans /<répertoire>/<nom_fichier> qui a été indiqué :
<nom_fichier> contient la clé privée
<nom_fichier>.pub contient la clé publique
La clé publique contient à la fin <login>@<machine>

ssh-keygen sans passphrase permet de se connecter à un serveur ssh sans taper de mot e passe (la passphrase). Mais c'est un trou de sécurité.
Pour un login sans mot de passe, il est préférable s'utiliser ssh-agent, ssh-add et keychain. Voir plus loin à "Utilisation de ssh-agent"


Problèmes
---------
***1***
ssh: connect to host toto port 22: Connection refused
1 - Le port 22 doit être ouvert (vérifier le firewall)
2 - Vérifier que le serveur sshd est installé ET qu'il est démarré
NB : après installation (urpmi openssh-server) le serveur n'est pas démarré automatiquement
Le lancer avec :
# service sshd start

***2***

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
...
Agent forwarding is disabled to avoid attacks by corrupted servers.
X11 forwarding is disabled to avoid attacks by corrupted servers.
Are you sure you want to continue connecting (yes/no)? 

Cause probable :
PC1 = PC sur lequel on a tapé la commande ssh PC2 et qui affiche le message d'erreur
PC2 = PC que l'on essaye de connecter

Une nouvelle installation de SSH a été faite sur PC2. Pour que ce message ne s'affiche plus, supprimer dans le fichier ~.ssh/known_hosts de PC1 la (les) lignes commençant par le(s) nom(s) correspondant à PC2.

***3***

Cygwin : "connection refused"
Voir l'installation, la configuration et le démarrage de sshd sur :
"How to install OpenSSH sshd server and sftp server on a Windows 2000 or Windows XP or Windows Server 2003"
(http://pigtail.net/LRP/printsrv/cygwin-sshd.html)

En résumé :
Aujourd'hui les étapes 1 et 2 sont inutiles : c'est fait par ssh-host-config

(1)  My Computer, Properties, Advanced, Environment Variables, System variables
Ajouter une nouvelle variable :
Variable name : CYGWIN
Variable value : ntsec tty

(2) Rajouter au path :
  ;X:\cygwin\bin
(remplacer X par la lettre du disque sur lequel se trouve cygwin)

(3) Lancer Cygwin puis :
ssh-host-config
- privilege separation : yes
- local user : yes
- install sshd as a service : yes
- CYGWIN= ntsec tty

(4) Démarrer sshd :
net start sshd (ou cygrunsrv --start sshd)

Pour stopper sshd :
net stop sshd (ou cygrunsrv --stop sshd)

Connexion directe sous konqueror
---------------------------------
cf.http://www.linux.org/lessons/short/fish/t1.html#FISH-STORY
fish://nom_ou_N°IP_PC_distant
fish://utilisateur@nom_ou_N°IP_PC_distant
fish://utilisateur@nom_ou_N°IP_PC_distant/repertoire/à/consulter

Attention : avant d'utiliser fish se connecter au moins une fois avec user@ssh à la machine distante, sinon la connexion par fish est refusée.

fish ne fonctionne pas sous les autres browsers : "fish is not a registered protocol"

Connexion directe sous konqueror (variante)
---------------------------------
cf. http://www.linuxgazette.com/node/401
idem fish, mais la commande est sftp :

sftp://nom_ou_N°IP_PC_distant
sftp://utilisateur@nom_ou_N°IP_PC_distant
sftp://utilisateur@nom_ou_N°IP_PC_distant/repertoire/à/consulter

sftp n'a rien à voir avec le protocole ftp : c'est en fait du ssh.
Ne fonctionne pas non plus sous les autres browsers : "sftp is not a registered protocol"


Copie de fichiers
-----------------
Copier un fichier local sur un pc distant:
$ scp /rep_source/fichier utilisateur@pc_distant:~/rep_destination
$ scp /rep_source/fichier utilisateur@pc_distant:~/rep_destination/	(même résultat)
$ scp /rep_source/fichier utilisateur@pc_distant:~/rep_destination/autre_nom_de_fichier

L'inverse : copier un fichier résidant sur un pc distant dans un répertoire local :
$ scp utilisateur@pc_distant:/répertoire_distant/fichier /chemin/vers/rép_local/nom_fichier

Pour les copies récursives, option -r :
$ scp -r utilisateur@pc_distant:/répertoire_distant


Pour éviter d'avoir à taper à chaque connexion le login/mot de passe :
---------------------------------------------------------------------
1 - générer une paire de clés privée/publique (= clé/serrure)
$ ssh-keygen -t rsa
Répondre à la question "passphrase:" en entrant la phrase de son choix

Les clés générées sont dans ~/.ssh :
id_rsa		clé privée
id_rsa.pub	clé publique

Changer la "passphrase" (ou en entrer une) si nécessaire :
$ ssh-keygen -p -f ~/.ssh/id_rsa

2 - Copier la clé publique dans le fichier ~/.ssh/authorized_keys de la machine sur laquelle on veut se connecter :
$ scp ~/.ssh/id_rsa.pub utilisateur@nom_ou_N°IP_PC_distant:~/.ssh/authorized_keys
ou bien ajouter cette clé publique à un fichier ~/.ssh/authorized_keys existant
$ cat ~/.ssh/id_rsa.pub | ssh utilisateur@nom_ou_N°IP_PC_distant "cat >> ~/.ssh/authorized_keys"
ou bien utiliser ssh-copy-id pour ces copies.

3 - Utiliser ssh-agent (voir plus loin "Utilisation de ssh-agent")
(facultatif : n'est pas utile si on a pas entré de "passphrase", mais l'absence de passphrase est un trou de sécurité dans le cas ou un pirate vole la clé privée)

ssh, scp, sftp sous windows
===========================
Pour se connecter depuis Windows à une machine linux :
winscp		winscp.net/


Monter un répertoire Unix distant
=================================

shfs à revoir : ne marche plus (utiliser sshfs à la place, voir plus loin)
shfs (Secure SHell FileSystem Linux kernel module)
--------------------------------------------------
http://shfs.sourceforge.net/
Installation et mode d'emploi : http://www.labo-linux.org/index.php?page=lumieres&id=278
# urpmi shfs-utils

shfsmount utilisateur@machine_distante /point/de/montage
ou mount -t shfs utilisateur@machine_distante /point/de/montage

Attention, contrairement à fish, pour indiquer un répertoire, rajouter ":" après le nom de machine :
shfsmount utilisateur@machine_distante:/répertoire/à/monter /point/de/montage

shfsmount -o rmode=755 user@PC_distant:/répertoire/distant /point/de/montage

cf man shfsmount
-o rmode=755		pour permettre à un utilisateur autre que root d'accéder au point de montage
:/répertoire/distant	facultatif, si absent c'est le répertoire / qui est monté,

Attention : cas d'une machine W$+Cygwin protégée par firewall (kerio) 
après un shfsmount -o rmode=755 user@PC_distant:/répertoire/distant /point/de/montage
si la commande ls /point/de/montage bloque, c'est très probablement kerio qui bloque l'exécution de la commande cygwin ls : le vérifier 

Problème :
Après installation par urpmi
# urpmi shfs-utils
# shfsmount -o rmode=755 utilisateur@PC_distant:Documents /mnt/disk
shfsmount: shfs filesystem not supported by the kernel

Solutions :
- recompiler shfs à partir des sources ?
- utiliser sshfs (cf. ci-dessous) à la place de shfs.

sshfs et fuse (Filesystem in UserSpacE)
---------------------------------------
Permet, à travers ssh, de monter en local une ressource (répertoire) distante 
http://fuse.sourceforge.net/sshfs.html
http://fuse.sourceforge.net/wiki/index.php/FAQ

Pour 2008.0 (et peut-être avant) la mise en place de sshfs/fuse est simplifiée, voir plus loin : "sshfs_2008"

Installations
-------------
A la date du 13-4-2006, pas encore de rpm pour MDV 2006.0 : utiliser le rpm de cooker main.
Installer les sources du noyau
Installer sshfs-fuse

Installation à partir des sources
---------------------------------
Installer les sources du noyau
Récupérer les sources de fuse et sshfs sur le site ci-dessus

tar -zxvf fuse-2.5.3.tar.gz
cd fuse-2.5.3 
./configure
make
make install

tar -zxvf sshfs-fuse-1.6.tar.gz
cd sshfs-fuse-1.6 
./configure
make
make install

Installation à partir du rpm (Mandriva 2007 et au dessus)
---------------------------------------------------------
# urpmi sshfs-fuse

Vérifier si le système est lancé
# service fuse status
Le lancer
# service fuse start

Vérifier éventuellement (en cas d'erreur) que le module fuse est installé dans le noyau
# lsmod |grep fuse
Si ce n'est pas le cas, voir le wiki de fuse :
http://fuse.sourceforge.net/wiki/index.php/SshfsFaq
"
Create the device node
If you don't use udev, you may get this error message:
fusermount: failed to open /dev/fuse: No such device or address
Before loading the fuse kernel module, create the device node manually:
mknod -m 666 /dev/fuse c 10 229
"

Monter le répertoire distant ;
# sshfs utilisateur@PCdistant:. /Point/de/MontageLocal

Modes d'emploi
sshfs : $ sshfs -h
fuse : voir /usr/share/doc/sshfs-fuse-1.8/README

On peut créer un fichier /etc/fuse.conf et y mettre les options à utiliser tout le temps
Inutile de redémarrer le service fuse : le fichier /etc/fuse.conf est 
apparemment lu lorsque la commande sshfs est lancée.


Utilisation
-----------
Créer un répertoire pour le montage :
# mkdir /point/de/montage
Donner les droits à l'utilisateur
# chown utilisateur /point/de/montage
Monter le répertoire distant
$ sshfs utilisateur@MachineDistante:/repertoire/à/monter /point/de/montage
# sshfs utilisateur@MachineDistante:. /mnt/disk  
Si message "error while loading shared libraries: libfuse.so.2: cannot open shared object file: No such file or directory" :
- localiser libfuse.so.2 : se trouve probablement dans /usr/local/lib
=> éditer /etc/ld.so.conf et rajouter : /usr/local/lib
- lancer ldconfig pour mettre à jour la liste des répertoires contenant les libs.

Problèmes
---------
1 -"fuse: failed to open /dev/fuse: Permission denied"
Solutions :
- ajouter (sudo userdrake par exemple) au groupe fuse les utilisateurs autorisés à utiliser sshfs.
Puis se reloguer  pour que la modification soit prise en compte : relancer fuse (service fuse restart) ne suffit pas !
Pour savoir dans quels groupes se trouve l'utilisateur courant :
$ id

- peut aussi provenir du module fuse non installé :
# lsmod |grep fuse
Dans ce cas, créer le "device node à la main (cf. le wiki de fuse :
http://fuse.sourceforge.net/wiki/index.php/SshfsFaq
# mknod -m 666 /dev/fuse c 10 229

2 - "fusermount: user has no write access to mountpoint /mnt/disk"
=> monter à un endroit accessible en rwx par l'utilisateur.

3 - Répertoires montés invisibles (fantômes)
Quand sshfs est exécuté en root, le point de montage n'est pas visible d'un utilisateur ordinaire à partir de konqueror alors qu'il est existe toujours, qu'il est bien monté et utilisable à partir de la ligne de commande (ls par exemple) !!!
Idem si on essaie de voir un répertoire monté par un utilisateur ordinaire à partir de Windows (via samba) 
=> Solution
$ sshfs -o allow_other PC-distant:. ~/mnt/disk
fusermount: option allow_other only allowed if 'user_allow_other' is set 
in /etc/fuse.conf
Donc -o allow_other ne suffit pas. Créer /etc/fuse.conf comme indiqué par le message d'erreur
# echo user_allow_other > /etc/fuse.conf
$ sshfs -o allow_other PC-distant:. ~/mnt/disk
Plus d'erreur et le répertoire est vu dans Windows via samba.
Inutile de redémarrer le service fuse : le fichier /etc/fuse.conf est 
apparemment lu lorsque la commande sshfs est lancée.

Voir aussi le commentaire sur http://fuse.sourceforge.net/wiki/index.php/SshfsFaq au paragraphe "Mounting as root" :
"it's not possible to use an sshfs mount as a "real" filesystem shared between multiple users."
sshfs est une commande faite pour les utilisateurs. Malheureusement :

sshfs_2008
----------
Actuellement, sshfs est installé d'office, sinon :
# urpmi sshfs			(installe fuse aussi)
# service fuse status		(pour vérifier que le service est lancé)
Vérifier que les utilisateurs qui doivent utiliser fuse sont dans le groupe fuse (par défaut, ça l'est) :
$ cat /etc/group | grep fuse
sinon les ajouter par :
# usermod -G fuse user1
ou en éditant /etc/group ou encore par userdrake
L'utilisateur crée un point de montage dans son home (de façon à ce que de répertoire soit rwx) :
$ mkdir -p point/de/montage	(-p pour créer d'un ccoup, si besoin est, l'ensemble des répertoires)
$ sshfs PC_distant:répertoire/à/monter point/de/montage
Pour démonter le répertoire :
$ fusermount -u point/de/montage

Pour un montage automatique pas fstab
-------------------------------------
Exemple d'après http://fuse.sourceforge.net/wiki/index.php/SshfsFaq :
sshfs#guest@guest.login.com:data /mnt/guest fuse uid=1003,gid=100,umask=0,allow_other 0 0


Utilisation de ssh-agent
========================
ssh-agent est un daemon dont le seul but est de garder en mémoire (de façon sécurisée) la "passphrase" de façon à ce qu'il ne soit pas nécessaire de la taper à chaque utilisation de ssh.
La commande suivante crée la variable SSH_AUTH_SOCK qui contient le chemin d'un socket que ssh, scp (et autres commandes) vont utiliser pour dialoguer avec ssh-agent :
$ eval `ssh-agent`

Communiquer la clé privée et la phrase de passe à ssh-agent au moyen de ssh-add :
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/user/.ssh/id_rsa:

La clé privée est ainsi décryptée et stockée dans le cache de ssh-agent, prête à être utilisée
On peut maintenant utiliser ssh et scp sans avoir à entrer le mot de passe.

keychain
=========
Récupérer la dernière version sur http://www.gentoo.org/proj/en/keychain.xml

Permet d'utiliser un seul processus ssh-agent par systeme, et non par session (login). Particulièrement intéressant si on veut utiliser ssh et scp dans un cron.
Keychain supprime les processus ssh-agent éventuellement en surnombre. Il mémorise les variables SSH_AUTH_SOCK et SSH_AGENT_PID dans ~/.keychain/nom_machine.sh

A partir d'une autre session, récupération de ces variables :
source ~/.keychain/nom_machine-sh

Pour automatiser, copier les lignes suivantes dans ~/.bash_profile
# Keychain lance ssh-agent et stocke les variables SSH_AUTH_SOCK et SSH_AGENT_PID
# dans ~/.keychain/nom_machine-sh pour pouvoir les récupérer dans d'autres sessions
# cf. http://www-106.ibm.com/developerworks/linux/library/l-keyc2/

/usr/bin/keychain ~/.ssh/id_rsa
source ~/.keychain/nom_machine-sh

Tunnel SSH
----------
Soit trois machines :
A locale
B intermédiaire		par exemple une machine autorisée à se connecter sur C
C distante		par exemple un firewall

 tunnel
 crypté 
A -----> B -----> C
  ssh

Sur la machine locale :
ssh -L port_local_quelqconque:C:port_C nom_login@B

C et B n° IP ou nom de machine
port_C est le port de la machine distante C auquel on veut accéder à partir de A
port_local_quelqconque : un port libre sur A vers lequel sera redirigé le port_C via le port ssh de B

Exemple :
ssh -L 4091:C:443 nom_login@B			# 443 = port https
ou 
ssh -L 4091:C:443 nom_login@B sleep 180
ou encore passer en tâche de fond (<Ctrl><z>, puis bg

Le serveur web du firewall est accessible par :
https://localhost:4091

urpmi, mises à jour de plusieurs machines en parallèle
======================================================

Clusterssh
----------
urpmi clusterssh (dans cooker-contrib ou MDV 2007)
Permet des connexions multiples simultannées sur plusieurs machines
Cf : http://clusterssh.sourceforge.net/index.php/ClusterSSH:About

man cssh

urpmi_parallel
--------------
http://linux-wizard.net/howto.php?section=1&key=urpmi_parallel



*****
X
*****
Configuration de X.org :
http://casteyde.christian.free.fr/online/install_linux/x9482.html
Règler les problèmes avec X Window :
http://www.lea-linux.org/cached/index/R%C3%A8gler_les_probl%C3%A8mes_d'X_Window.html
Configuration d?une station X-Window avec xdm :
www.blaess.fr/christophe/publications/ articles/article_LMF_21b.pdf


Configuration X (écran/carte graphique)
---------------------------------------
XFdrake ou drakx11
fonctionnent aussi bien en mode graphique qu'en mode texte (pas besoin que X soit lancé)

Login graphique (login manager)
==============================
A partir de la ligne de commande, pour lancer une fenêtre de login graphique (et choisir entre les différentes interfaces, kde, icewm, etc):
gdm
kdm
mdkkdm
...
(en cas de "command not found", penser à installer ces utilitaires !)

Changer de login manager
------------------------
L'interface de kdm est la plus fonctionnelle. Si elle n'est pas installée par défaut, installer kdebase-kdm, puis mcc > System > Choose the display manager


Fichiers de configuration
-------------------------
cf répertoires /etc/X11/xdm/

Changer de login manager
------------------------
# mcc
System > Choose the display manager ....

Configurer le login manager
---------------------------
K > System > Configuration > Configure your Desktop > System > Login Manager
NB : K > System > Configuration > Configure your Desktop, c'est le "KDE Control Center"

Configurer GDM à partir de 2008.0
---------------------------------
Avant MDV 2008.0, le fichier de configuration de gdm est :
/etc/X11/gdm/gdm.conf ou /etc/X11/gdm/custom.conf suivant les versions
A partir de MDV 2008.0, ça se complique :
- les valeurs par défaut sont dans :
/usr/share/gdm/defaults.conf
- le fichier gdm utilisé et à personnaliser est :
/etc/X11/gdm/custom.conf
Par contre ce fichier est vide de toute configuration : il ne contient que la documentation sur gdm.conf !!!
Il y  a aussi un fichier /etc/X11/gdm/gdm.conf pratiquement vide

=>
- Sauvegarder /etc/X11/gdm/custom.conf dans /etc/X11/gdm/custom.conf.original
(au cas où on en aurait encore besoin, sans doute inutile)
- Enregistrer /usr/share/gdm/defaults.conf dans /etc/X11/gdm/custom.conf
- Pour autoriser les connexions par X -query, chercher [xdmcp] et
remplacer Enable=false par Enable=true

cp /etc/X11/gdm/custom.conf /etc/X11/gdm/custom.conf.original
cp -f /usr/share/gdm/defaults.conf /etc/X11/gdm/custom.conf
vi /etc/X11/gdm/custom.conf

Autologin et lancer automatiquement l'environnement graphique
=============================================================
Pour changer (supprimer) ces automatismes :
# mcc 
Boot > Enable autologin and select the user to automatically log in
Dans la fenêtre qui s'ouvre cocher/décocher les comportements désirés

Autre solution (à vérifier)
--------------------------------
Dans /etc/inittab, changer :
id:3:initdefault:
en
id:5:initdefault:
(sur Mandrake en effet :
3 - Full multiuser mode
5 - X11)

Autre solution : supprimer le démarrage automatique en mode graphique
----------------------------------------------------
Editer /etc/X11/xdm/Xservers
Mettre en commentaire (#) la ligne :
:0 local /bin/nice -n -10 /usr/X11R6/bin/X -deferglyphs 16

Sessions X multiples
====================
Pour obtenir plusieurs sessions X :

Sous la session X de départ (display 0)
<Alt Ctrl Fn>
Fn est une des touches de fonction F1 à F6 pour accéder à la console texte à utiliser

Taper le login de l'utilisateur désiré
Taper le mot de passe
Taper :
startx -- :n
n étant le n° de console graphique virtuelle (0 est le n° de la première console graphhique crée par le système)
(NB : attention, espace indispensable entre -- et :n)
Pour passer d'une console à une autre :
<Ctrl Alt F7> pour la première console graphique
<Ctrl Alt F8> pour la 2°, etc. (F7 àF11 utilisables)
<Ctrl Alt F12> messages système

cf. http://www.mandrakeuser.org/docs/xwin/xnet.html

Démarrer une interface graphique particulière :
startx /etc/X11/xdm/Xsession KDE -- :n
startx /etc/X11/xdm/Xsession Gnome -- :n
startx /etc/X11/xdm/Xsession IceWM -- :n
startx /etc/X11/xdm/Xsession WindowMaker -- :n
startx /etc/X11/xdm/Xsession Enlightenment -- :n
startx /etc/X11/xdm/Xsession BlackBox -- :n
startx /etc/X11/xdm/Xsession Sawfish -- :n
startx /etc/X11/xdm/Xsession XFce -- :n

Mode texte/mode graphique
-------------------------
# init 3		=> texte
# init 5		=> graphique

Au boot avec Grub :
"e" pour éditer la ligne de commande
Pour booter en init 3, il suffit donc d'ajouter un "3" à la liste des options sur la ligne qui appelle le noyau (kernel=..... 3 ), de valider les modifs (Entrée) et d'appuyer sur "b" pour poursuivre le boot.
Cette manip n'affecte que le boot présent et donc au prochain passage par grub, tout se passe par défaut (init 5)

Redirections
============
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html
http://www.cpqlinux.com/redirect.html

3 descripteurs de fichier : stdin, stdout, stderr avec comme numéros
stdout : 1
stderr : 2

Rediriger stdout dans un fichier
--------------------------------
commande > fichier
ls > ls.out
ls 1> ls.out

Ajouter stdout dans un fichier
------------------------------
commande >> fichier

Rediriger sterr dans un fichier
--------------------------------
commande 2> fichier
$ updatedb 2> ErrUpdate
Nb : pas d'espace entre 2 et >

Rediriger stdout et stderr
--------------------------
commande 1>out.txt 2>err.txt

Envoyer stdout dans stderr
--------------------------
commande 1>&2

Envoyer stderr dans stdout
--------------------------
commande 2>&1

Récupérer les messages d'erreur
-------------------------------
commande > fichier 2>&1
startx -- :3 > erreur 2>&1
Le fichier "erreur" contient tous les messages provenant du démarrage du serveur X

(((./cmd | tee stdout.txt) 3>&1 1>&2 2>&3 |tee stderr.txt) 3>&1 1>&2 2>&3) 1>out.txt 2>err.txt



XF86Config
==========
Localisation : /etc/X11/XF86Config-4 (ou /etc/X11/XF86Config)

Souris
------
Exemples :
Section "InputDevice"
    Identifier "IntelliMouse"
    Driver "mouse"
    Option "Protocol" "ExplorerPS/2"
    Option "Device" "/dev/psaux"
    Option "ZAxisMapping" "6 7"
EndSection

Section "InputDevice"
    Identifier "LogitechSerial"
    Driver "mouse"
    Option "Protocol" "MouseMan"
    Option "Device" "/dev/ttyS0"
EndSection

Pour que la souris série Logitech fonctionne, il faut renseigner la section :
Section "ServerLayout"
    Identifier "layout1"
    InputDevice "LogitechSerial" "CorePointer"
    Screen "screen1"
EndSection

L'option "CorePointer" indique quelle souris est le périphérique de pointage principal
Pour indiquer plus d'un pointeur utiliser l'option "SendCoreEvents".

Changer de clavier (français, anglais, etc)
-------------------------------------------
Section "InputDevice"
	Option		"XkbLayout"	"fr"
Clavier us :	
	Option		"XkbLayout"	"us"
	
Ecran, résolution écran
-----------------------	
Sous KDE :
kcmshell display ou
click droit sur le bureau, "Configure Desktop", "Display" et choisir dans l'onglet "Size & Orientation", liste déroulante "Screen size" la résolution désirée. Si elle n'est pas dans la liste, la rajouter dans /etc/X11/XF86Config :

Section "Screen"
        Identifier      "Default Screen"
        Device          "device1"
        Monitor         "monitor1"
        DefaultDepth    24

        Subsection "Display"
                Depth 24
                Modes "1280x1024"
        EndSubsection
	
Remarque :	sur Debian on trouve :		Modes "1280x1024"
		remplacé sur MDV par :		Virtual 1280 1024
	
Attention, noter "DefaultDepth    24" qui concorde avec "Depth 24" 
Avec un "Depth 16 par exemple, ce serait le premier Display déclaré avec un Depth 16 qui serait utilisé par défaut.

Intéressant : c'est cette résolution par défaut qui est utilisée pour gdm, kdm, etc.

Modeline
--------
Si nécessaire, peut être calculé par gtf :
$ gtf 1440 900 75 -x

  # 1440x900 @ 75.00 Hz (GTF) hsync: 70.50 kHz; pclk: 136.49 MHz
  Modeline "1440x900_75.00"  136.49  1440 1536 1688 1936  900 901 904 940  -HSync +Vsync

VNC
===
Pour l'installer sous Windows :
http://www.tightvnc.com/download.html

Pour installer VNCviewer sous MDV :
urpmi tightvnc		(installe vnvviewer uniquement)
urpmi tightvnc-server	(installe le serveur si nécessaire)
 
vncviewer	pour se connecter au serveur
vncserver	le serveur, à démarrer sur la machine sur laquelle on veut se connecter.

Sur le serveur, ouvrir les ports
- 5900/TCP	pour autoriser la connexion en utilisant vncviewer
- 5800/TCP	pour autoriser la connexion par http

Connexion par vncviewer : il semble qu'il faille aussi ouvrir sur le client (PC sur lequel est lancé vncviewer) le port 5900 en TCP ; avec plusieurs firewalls, il suffit d'autoriser le programme vncviewer à se connecter.

Connexion par http (rien à autoriser sur le client) :
http://<IP ou nom du serveur VNC>:5800
(utiliser firefox. Avec konqueror l'applet VNC ne se charge pas : problème java non activé sous konqueror? A voir)


Partage de ressources (répertoires)
===================================
en plus de ssh et dérivés (shfs ...) : 
nfs
hamachi (windows et linux)

Terminaux X
===========
http://www.tldp.org/HOWTO/XDMCP-HOWTO/

3 possibilités
°°°°°°°°°°°°°°
1 - Client unix -> serveur unix : X -query ....
---------------------------------------------
Guide to X-terminal setup : http://www.freeos.com/articles/2531/
Le plus simple à mettre en oeuvre : tout ce qui est nécessaire est déjà présent et installé avec la plupart des distributions linux.
A éviter à travers un réseau non sécurisé.

2 - Client unix ou windows -> serveur unix via SSH : NX
----------------------------------------------------
Idéal à travers un réseau non sécurisé.
Nécessite un PC assez puissant (CPU 200 Mhz, 64 Mo RAM insuffisant ; 700 Mz, 96 Mo RAM parfait), avec un système d'exploitation installé sur le client (unix, windows ou même Mac OS X)

3 - Client (léger) unix -> serveur unix : LTSP (Linux Terminal Server Project)
------------------------------------------------------------------------------
Idéal pour transformer de vieux PCs (P200 ou moins), sans disque dur, en terminaux X performants
http://bulma.net/body.phtml?nIdNoticia=1776
http://www.ltsp.org/

X -query ...
°°°°°°°°°°°°
Soit S le serveur (machine sur laquelle on veut se connecter) et T le terminal :

Sur S
-----
- Firewall : ouvrir le port 177 en UDP
Relancer le firewall
- Vérifier quel est le xdm actif :
# ps aux | grep dm
	Si c'est gdm :
		gdmsetup (ou gdmconfig, c'est un alias) : autoriser XDMCP
		On peut également modifier directement /etc/X11/gdm/gdm.conf (nouvellement /etc/X11/gdm/custom.conf) à la main : chercher [xdmcp] et changer "Enable=false" en "Enable=true"
	Si c'est kdm :
 		éditer /etc/kde/kdm/kdmrc, chercher[Xdmcp] et remplacer Enable=false par Enable=true
	Pour un autre "display manager", voir la doc 
		http://www.tldp.org/HOWTO/XDMCP-HOWTO/
Relancer le display manager pour que la modification soit prise en compte :
# service dm restart

Sur T
-----
- Firewall : ouvrir 1 ou plusieurs ports tcp pour X : 6000, 6001, etc. (cf. 
www.iana.org/assignments/port-numbers)
- Faire afficher le "Login manager" par la commande :
X -query nom_ou_IP_du_serveur_S :1
NB : :1 correspond au port 6001, :2 au port 6002 etc.
- Pour que la connexion se fasse automatiquement, mettre cette même commande 
dans /etc/inittab :
x:5:respawn:/usr/X11R6/bin/X -query nom_ou_IP_du_serveur_S

Problème
--------
Si on n'obtient pas la mire de login (l'écran reste bleu) c'est sans doute que le port 177 est resté fermé.
Vérifier avec nmap à partir de T :
[T]# nmap -s U -p 177 le_serveur
PORT    STATE  SERVICE
177/udp closed xdmcp
=> vérifier la configuration du firewall du serveur
=> le problème peut aussi provenir du display manager : identifier celui qui fonctionne sur S :
[S]$ ps aux | grep dm
root      2855  0.0  0.0  18628   932 ?        S    18:23   0:00 /usr/bin/kdm -n                      odaemon
Xdmcp est sans doute à false, le changer (dans /etc/kde/kdm/kdmrc pour kdm) :
[Xdmcp]
Enable=true
Puis relancer le Display Manager :
# service dm restart

 On doit alors avoir à partir de T :

# nmap -s U -p 177 le-serveur
PORT    STATE         SERVICE
177/udp open|filtered xdmcp
et la connexion devrait fonctionner.

Terminal avec cygwin sous windows
---------------------------------
- Lancer cygwin
- Taper comme ci-dessus :
X -query nom_ou_IP_du_serveur_S
(il n'est pas nécessaire d'avoir au préalable lancé X)
ou en cas de message d'erreur indiquant que :0 est déjà utilisé :
X -query nom_ou_IP_du_serveur_S :1
(1 ou un n° supérieur, voir problème ci-dessous)
Une fenêtre X s'ouvre avec l'invite gdm
Si la fenêtre X reste grise, penser au firewall : le désactiver et voir si ça 
résoud le problème. Si c'est le cas le remettre en autorisant en entrée le 
port tcp 6000 (et éventuellement au dessus). Si ça ne fonctionne toujours 
pas, voir plus loin "Problème Kerio/cygwin".
Pour fermer la fenêtre, comme d'habitude  carré en haut à gauche de la fenêtre cygwin.

Pour automatiser
----------------
Editer Cygwin\usr\X11R6\bin\startxwin.bat
Vers la fin du fichier, trouver la ligne (ou équivalent) :
run xwin -multiwindow -clipboard -silent-dup-error
La remplacer par :
run xwin  -clipboard -silent-dup-error -query nom_ou_IP_du_serveur_S
(supprimer -multiwindow qui génère une erreur)
La ou les commandes qui suivent sont inutiles (chez moi ouverture de console X par "run xterm -e /usr/bin/bash -l") : elles ne servent plus à rien, on peut les supprimer.
Enregistrer le batch sous un nom quelconque (gdm_nom_ou_IP_du_serveur_S.bat par exemple).
Le lancer.
Pour en simplifier l'utilisation,  le mettre en icône sur le bureau et (ou) dans la liste des programmes et (ou) dans la barre de tâche.

Problème (ou Bug ?) "fatal error" :
-----------------------------------
Chaque fois que Cygwin ouvre une fenêtre X, il crée un fichier Xn avec l'attribut système (ou n est le n° du display, X0 pour :0) dans le répertoire Cygwin/tmp/.X11-unix.
En cas de plantage de la fenêtre X le fichier Xn correspondant n'est pas supprimé : il empêche l'ouverture du display :n. Dans le cas d'un redémarrage de Cygwin avec X0 non effacé, pas de problème pour lancer startx ou startxwin.bat. Mais 
X -query nom_ou_IP_du_serveur_S 
génère le message d'erreur :
"A fatal errot has occured and Cygwin/X will now exit.
Please open /tmp/Xwin.log for more information."
Solution : voir dans Cygwin/tmp/.X11-unix les n° de display utilisés, puis taper :
X -query nom_ou_IP_du_serveur_S :n ou n est un N° de display libre.

Problème Kerio/cygwin
---------------------
La connexion est impossible avec une version 4.0.? de Kerio : "X -query nom_ou_IP_du_serveur_S" ouvre une fenêtre X qui reste grise.
Solution : installer une version récente de Kerio ; pas de problème avec la version actuelle (4.2.1).

Terminaux X, nx, freenx
°°°°°°°°°°°°°°°°°°°°°°°
http://www.nomachine.com/

Serveur nx (freenx)
-------------------
- Sur le serveur, installer freenx (qui dépend de plusieurs autres programmes et les installe aussi).
L'installation crée l'utilisateur système "nx"
A la fin le message /usr/share/doc/freenx/README.urpmi s'affiche :

	Pas de man, mais :
	#   --help
		nombreuses commandes pour l'administration : intéressant, à lire absolument !

	Info sur le paquetage dans /usr/share/doc/freenx-0.0.4.4/README.urpmi.

NB : pour connaître les dépendances de freenx :
$ rpm -q --requires freenx

 
- Ajouter les utilisateurs qui pourront se connecter à ce serveur (utile ?) :
	# nxserver --adduser utilisateur
	# nxserver --passwd utilisateur
		et entrer le mot de passe de l'utilisateur

- Démarrer (redémarrer) le serveur :
	# nxserver --restart

Fichiers de configuration
-------------------------
/etc/nxserver/
/etc/nxserver/node.conf			(configuration du serveur)

Client nx
---------
- Télécharger et installer le rpm disponible sur http://www.nomachine.com (NX client for Linux, free)
- Copier la clé privée /var/lib/nxserver/nxhome/.ssh/client.id_dsa.key qui est sur le serveur, dans un répertoire quelconque du client (répertoire /usr/NX/share/ ou répertoire /usr/NX/share/keys qui ont été créés lors de l'installation du client par exemple) avec un nom quelconque (du genre "NomDuServeur_client.id_dsa.key" par exemple) . S'il existe déjà une clé avec ce nom, l'écraser.
- Démarrer le client nx nomachine :
	$ nxclient		(ou nxclient --wizard)
	et répondre aux questions pour se connecter.
	En particulier, dans l'onglet "General", cliquer sur le bouton "Key..." et importer la clé que l'on vient de copier.
	Autre solution (aussi simple, sinon plus) :
	- se logger par ssh en root sur le serveur
	- afficher la clé : cat /var/lib/nxserver/nxhome/.ssh/client.id_dsa.key
	- la copier/coller dans la fenêtre "DSA Key" et sauvegarder (bouton [Save])
Explication (http://www.marco-plaut.fr/article.php3?id_article=2) :
Le client se connecte d'abord au serveur en tant qu'utilisateur "nx" avec cette clé (/usr/NX/share/client.id_dsa.key ou le nom qu'on lui a donné, dans le cas de freenx : /var/lib/nxserver/nxhome/.ssh/client.id_dsa.key). Puis l'utilisateur s'identifie ensuite sur le serveur avec le nom d'utilisateur et le mot de passe déclaré au niveau du serveur.

On peut créer sur le client plusieurs fichiers de configuration pour se connecter à différents serveurs et avoir autant d'icônes correspondantes sur le bureau. Les fichiers de configuration sont dans :
~/.nx/config/<NomDuServeur>.nxs

Installation des versions 2 du client et du serveur
---------------------------------------------------
Nettoyage de versions précédentes (après les avoir désinstallées)
# rm -rf /usr/NX
$ rm -rf ~/.nx		(pour supprimer les configurations utilisateur)

Coté serveur
++++++++++++
Télécharger (les rpm) :
- nxclient
- nxnode
- nxserver
et les installer dans cet ordre.

Nb : il est préférable d'installer freenx à la place de nxserver.
1 - contrairement à nxserver, freenx n'est pas limité à 2 connexions
2 - nxserver ne fonctionne pas sous MDV 2007 (  
freenx-0.5.0-3.rev281.1mdv2007.0 fonctionne parfaitement avec les versions actuelles nxclient-2.1.0-9.i386.rpm
nxnode-2.1.0-12.i386.rpm
voir plus loin.

Vérifier que ces installation se sont bien passées :
$ less /usr/NX/var/log/install
Consulter http://www.nomachine.com/documentation/admin-guide.php

Messages à l'installation de nxnode :
NX> 700 Install log is '/usr/NX/var/log/install'.
NX> 700 Creating configuration in /usr/NX/etc/node.cfg.
NX> 700 Inspecting local CUPS environment.
NX> 700 Generating CUPS entries in: /usr/NX/etc/node.cfg.
NX> 700 Installation of version: 2.0.0-100 completed.

Messages à l'installation de nxserver :
NX> 700 Install log is: /usr/NX/var/log/install.
NX> 700 Creating configuration file: /usr/NX/etc/server.cfg.
NX> 723 Cannot start NX statistics:
NX> 709 NX statistics are disabled for this server.
NX> 700 Showing file '/usr/NX/share/documents/server/install-notices':
=> voir la notice d'installation dans /usr/NX/share/documents/server/install-notices

Démarrage/arrêt :
# /etc/rc.d/init.d/nxserver start|stop|restart	(status absent)
ou :
# nxserver --start|--stop|--restart|--status	(voir toutes les possibilités avec nxserver --help)
ou :
# service nxserver start|stop|restart|status


nxserver/freenx et MDV 2007
++++++++++++++++++++++++++
Impossible de se connecter sur une MDV 2007 sur laquelle est installé nxserver-2.1.0-13.i386.rpm.
Message d'erreur :
Info: Established X server connection.
Info: Using shared memory parameters 1/2048K.
Error: Connection with remote peer broken.
Error: Please check the state of your network and retry.
Session: Session terminated at 'Tue Nov 28 09:35:19 2006'.

Solution : installer freenx.

Coté client
+++++++++++
Installer nxclient version 2
Lancer nxclient

- Dans l'onglet "General"
Cliquer sur <Configure>
Cocher "Remember my password"
Cliquer sur <Key>
Dans le fenêtre que s'ouvre (DSA key) effacer la clé qui s'y trouve et la remplacer par la clé privée qui se trouve sur le serveur dans le fichier /var/lib/nxserver/nxhome/.ssh/client.id_dsa.key
(cf. le messageg qui termine l'installation de freenx :
Your user must install the key located at:
"/var/lib/nxserver/nxhome/.ssh/client.id_dsa.key
to log in.")

- Dans l'onglet "Advanced"
Cocher "Enable SSl encryption of all traffic".

Pour ajouter un utilisateur à la base de données NX :
# /usr/NX/bin/nxserver --useradd <utilisateur>
La commande :
# /usr/NX/bin/nxserver --usercheck <utilisateur>
donne exactement le même résultat !

Remarque : toutes les installations de nx ont la même clé privée (/usr/NX/share/keys/server.id_dsa.key) : ne semble pas très sûr !
Changer les clés.

Ajouter une autre session
-------------------------
$ nxclient
ou
$ nxclient --wizard
--wizard a l'avantage de proposer de créer une icône sur le bureau.

Modifier une configuration
--------------------------
Une fois la session créée le bouton [Configure] n'est plus accessible lorsqu'on clique sur l'icône. Pour y accéder, lancer nxclient.

Debugging
---------
cf. http://www.nomachine.com/documentation/supp-request.php
Fichier /etc/nxserver/node.conf : changer les valeurs par défaut des variables suivantes, et mettre :
SESSION_LOG_CLEAN=0
SESSION_LOG_LEVEL=7
Voir les logs dans
- /var/log/nxserver.log (vérifier que le "user" nx a le droit d'y écrire)
modifier la "verbosité" dans NX_LOG_LEVEL=
- grep NX /var/log/messages
- ~/.nx/temp/<un numéro>

Problèmes - bugs :
----------------

Après installation de nxserver, dans /usr/NX/var/log/install
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
NX> 200 Connected to address: 127.0.0.1 on port: 22
NX> 202 Authenticating user: nx
NX> 208 Using auth method: publickey
NX> 204 Authentication failed..

=> éditer /etc/ssh/sshd_config
S'il y a un ligne "AllowUsers", vérifier que nx y soit déclaré :
AllowUsers toto bibi nx

NB : nx@127.0.0.1 est suffisant pour l'installation, mais bloque la connexion (message 
"Server not installed or NX access disabled", voir plus loin.

NX> 202 Authenticating user: nx
NX> 208 Using auth method: publickey
NX> 204 Authentication failed.
+++++++++++++++++++++++++++++
Solutions possibles :
- Vérifier que l'utilisateur nx existe sur le serveur (userdrake)
- Vérifier sur le serveur que nxserver tourne (# nxserver --status).
- Sur le client (nxclient de nomachine) vérifier que la clé publique est la bonne :
=> lancer nxclient
Configure > General
dans l'encadré "Server" : Key > Import
charger la bonne clé et la sauvegarder dans la configuration

Session 'serveur' failed due to connection timeout
++++++++++++++++++++++++++++++++++++++++++++++++++
Configure > Advanced > cocher "Enable SSL encryption of all traffic"

Pas de connexion possible sur nxserver sous MDV 2005 et message d'erreur :
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$ nxproxy
nxproxy: symbol lookup error: nxproxy: undefined symbol: NXTransParseCommandLine
(ou autre symbole non défini)
Est obtenu sous MDV2005 alors que nxserver fonctionne sans problème sous MDV 2006.0 
Cause probable : une erreur dans le rpm freenx. Alors que le paquet semble le même dans MDV 2005 et 2006 (freenx-0.4.4-1mdk) les dependances installées sont différentes :
MDV2005					MDV2006
nxproxy-1.5.0-2mdk			nxproxy-1.5.0-3mdk
nxpagent-1.5.0-2mdk			nxproxy-1.5.0-3mdk

Server not installed or NX access disabled
++++++++++++++++++++++++++++++++++++++++++
Soit (par exemple) 241.89.78.13 l'adresse IP du client, sur le serveur dans "/var/log/messages" : 
sshd[32108]: User nx from 241.89.78.13 not allowed because not listed in AllowUsers
sshd[32108]: Failed none for invalid user nx from 241.89.78.13 port 41170 ssh2

Solution :
Sur le serveur, éditer le fichier /etc/ssh/sshd_config 
- à AllowUsers, rajouter nx (AllowUsers toto nx)
- décommenter "#PubkeyAuthentication yes" (il semble qu'en fait la valeur par défaut soit "no")

Server not installed or NX access disabled
++++++++++++++++++++++++++++++++++++++++++
dans "/var/log/messages" : 
sshd[2774]: reverse mapping checking getaddrinfo ... failed - POSSIBLE BREAK-IN ATTEMPT!

Le client qui veut accéder au serveur nx n'est pas déclaré dans un DNS.


Error: nxagent failed to start with: Unrecognized option: 1
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
NXCLIENT - Version 2.0.0-98 donne cette erreur avec freenx (NXSERVER - Version 1.4.0-44)
Une solution peut-être ici : http://mail.kde.org/pipermail/freenx-knx/2006-September/004074.html
Autres solutions :
- réinstaller nxclient-1.5.0-113.i386.rpm
- utiliser les versions "free" nxserver, nxnode et nxclient disponibles sur le site http://www.nomachine.com/download-package.php?Prod_Id=34

- freenx  :
+++++++++++
Tcl_Init failed: Can't find a usable init.tcl in the following directories:
    /usr/lib/tcl8.4 /usr/lib/tcl8.4 /lib/tcl8.4 /usr/library /library /tcl8.4.13
/library /usr/lib/tcl8.4

=> urpmi tcl
et réinstaller freenx.

Mais ne semble pas fonctionner avec les versions 2 de NX : à éviter
Utiliser plutôt "NX free editon for Linux" sur le site NX Nomachine.


LTSP
====
++++++++++++++
Documentations
++++++++++++++
LTSP :			htp://www.ltsp.org/documentation/ltsp-4.1/ltsp-4.1-en.html
wiki :			htp://wiki.ltsp.org/twiki/bin/view/Ltsp/WebHome
Trouble Shooting LTSP : 	http://wiki.ltsp.org/twiki/bin/view/Ltsp/TroubleShooting
				http://gentoo-wiki.com/LTSP_Configuration
Configuration du firewall :
   http://www.troubleshooters.com/lpm/200305/200305.htm
   http://sourceforge.net/mailarchive/forum.php?thread_id=8972145&forum_id=2270


32 ou 48 Mo de RAM semblent suffisants (ne fonctionne pas avec 16 Mo de RAM) .

++++++++
Firewall
++++++++
A voir, cf. doc ci-dessus.

++++++++++++++++++++++++++++
A installer sur le serveur
++++++++++++++++++++++++++++

ltsp-utils
++++++++++
Ce package installe :
/usr/bin/ltspinfo
/usr/sbin/ltspadmin
/usr/sbin/ltspcfg

ltspadmin
---------
LTSP Administration Utility
	Install/Update LTSP Packages
	Configure the installer options
	Configure LTSP
Comme l'indique le menu ci-dessus ltspadmin permet :
- de télécharger le package LTSP (plusieurs centaines de Mo)
- de choisir un (ou changer le) serveur à partir duquel on veut télécharger le 
package LTSP
- de lancer ltspcfg

ltspcfg
-------
Permet
- d'afficher l'état (status) de tous les services nécessaires au 
fonctionnement de LTSP
- de les configurer

Conseil : le lancer chaque fois que l'on veut vérifier l'état d'avancement de 
la configuration de LTSP.

ltspinfo
--------
cf. (par exemple) :
http://osl.birzeit.edu:8080/wiki2/index.php/Ltspinfo
http://www.k12ltsp.org/phpwiki/index.php/Technical:RemoteClientShutdown

Permet de contrôler le client à partir du serveur.
Contrairement aux 2 outils précédents on peut dans un premier temps 
l'ignorer : il est sans intérêt pour l'installation et la configuration de 
LTSP.

dhcpd
+++++
Installer dhcp-server
# urpmi dhcp-server
Ce service est nécessaire pour fournir une adresse IP aux clients et lui 
indiquer à partir de quel serveur récupérer tout ce qui est nécessaire 
(kernel, Xorg ...) à son fonctionnement.
NB : dhcpd et ltsp sont indépendants : ils peuvent parfaitement, si on le 
désire, être installés sur des serveurs différents.

tftpd
+++++
Installer tftp-server.
# urpmi tftp-server
tftpd (simple serveur ftp) est indispensable : il permet au client de 
télécharger à partir du serveur le kernel fourni par LTSP.

NFS
+++
Généralement installé par défaut et démarré d'office dans la plupart des 
distributions (dont MDV). Exception : MDV 2007 / x86-64 !
# urpmi nfs-server
A configurer, voir ci-dessous.

XDMCP
+++++
Généralement aussi installé par défaut et démarré dans la plupart des 
distributions (dont MDV).
A configurer, voir ci-dessous.

+++++++++++++++++++++++++++
A installer sur les clients
+++++++++++++++++++++++++++
Consulter "Chapter 3. Setting up the workstation"
sur http://www.ltsp.org/documentation/ltsp-4.1/ltsp-4.1-en.html
(ou équivalent dans la doc française) 

"Etherboot" permet de démarrer le client et d'établir la connexion avec le 
serveur dhcp.
Le plus simple pour les tests est de mettre une image d'Etherboot sur une
disquette ou un CD à partir duquel on démarrera le client.
La doc conseille le site www.Rom-O-Matic.net où l'on peut compiler
quasi-automatiquement le driver Etherboot correspondant à la carte réseau du
client utilisé. Le problème est qu'il est souvent difficile de déterminer le
modèle de carte réseau.
Je conseille plutôt de récupérer sur http://etherboot.anadex.de/
une image contenant tous les drivers connus et de créer une disquette de boot 
"universelle" avec la commande :
	d if=eb_on_hd.ima of=/dev/fd0
(sous DOS créer la disquette avec rawrite, sous windows avec rawritewin).
Elle détecte automatiquement la carte réseau installée sur le client et permet 
de le démarrer sans plus se compliquer la vie.

+++++++++++++++++++++++++++++
Configuration du serveur dhcp
+++++++++++++++++++++++++++++
On configurera ensuite le serveur dhcp

1 - Lancer sur le serveur :
# tail :tail -f /var/log/messages 
le serveur dhcp n'affiche en effet aucune erreur à l'écran : les messages
d'erreur (ou autres) vont dans /var/log/messages.

2 - Vérifier que le serveur dhcp est démarré
Pour connaître son état (démarré / arrêté)
# service dhcpd status
dhcpd (pid 5511) is running...#
Démarrer /redémarrer : service dhcpd start | restart
En cas de problème regarder ce qui s'affiche dans /var/log/messages.

3 - Afficher l'adresse MAC de la carte réseau du serveur avec :
# ifconfig

4 - Démarrer un client avec la disquette etherboot.
L'adresse MAC de la carte réseau apparaît dans les logs du serveur. L'utiliser 
pour configurer /etc/dhcpd.conf.

5 - Configurer dhcpd sur le serveur (fichier /etc/dhcpd.conf).
A l'installation de dhcp-server un fichier /etc/dhcpd.conf a été
automatiquement créé.
LTSP de son coté crée en s'installant un fichier /etc/dhcpd.conf.sample : on
peut l'oublier, il est incompréhensible et n'apporte aucune information 
intéressante (à mon avis en tout cas).
Editer plutôt /etc/dhcpd.conf et entrer les valeurs correspondant à son réseau
(le fichier est déjà rempli avec des valeurs qui sont pratiquement bonnes
pour un réseau "domestique" en 192.168.0...). On laissera les valeurs par
défaut pour les paramètres que je n'indique pas et on modifiera si nécessaire :
	subnet-mask
	broadcast-address
	routeurs : il s'agit en fait du gateway ou passerelle vers l'extérieur
	domain-name-servers
	domain-name
	option root-path : attention ! indiquer ici l'adresse du serveur et le path 
où est installé LTSP, par exemple :
	option root-path "192.168.0.10:/opt/ltsp/i386";

Faire très attention pour la suite : voici par exemple ce qu'on peut mettre
pour un rèseau "domestique" en 192.168.0... avec un serveur d'adresse
192.168.0.10 et un client "toto" dont on veut fixer l'adresse à 192.168.0.20 :

subnet 192.168.0.0 netmask 255.255.255.0 {
	next-server 192.168.0.10;	# adresse du serveur sur lequel se trouve LTSP
					# cette ligne est _indispensable_ pour Etherboot (bug probable)
					# mais par contre inutile pour d'autres clients dhcp 
	use-host-decl-names	on;
	option log-servers		192.168.0.10;	# adresse du serveur de log
	host toto {					# paramètres pour le client "toto"
		next-server 192.168.0.10		# _indispensable_ pour LTSP : c'est l'adresse
						# du serveur où le client trouvera LTSP
	hardware ethernet	00:01:02:cf:1d:f2;	# adresse MAC de la carte réseau du client
	fixed-address	192.168.0.20;	# on fixe ici l'adresse IP du client
	filename		"/tftpboot/lts/vmlinuz-2.6.9-ltsp-3";
		}

Attention : dans "filename" indiquer l'adresse du kernel que le client devra
récupérer sur le serveur "next_serveur" déclaré 3 lignes avant
ATTENTION ! l'adresse filename dépend aussi du paramètre "server_args" du
fichier de configuration de tftp (/etc/xinetd.d/tftp), voir ci-dessous.

On déclarera bien évidemment autant de "host" (clients) que nécessaire.
On pourra aussi faire de l'allocation dynamique (je n'ai pas encore testé).

+++++++++++++++++++++++++++++
Configuration du serveur tftp
+++++++++++++++++++++++++++++
Editer /etc/xinetd.d/tftp
LTSP installe tftpboot dans / alors que tftp s'attend à le trouver
dans /var/lib/tftpboot (cf paramètre de démarrage de tftpd "server_args").
Le plus simple est de mettre en commentaire la ligne :
#	server_args = -s /var/lib/tftpboot
(si on laisse un argument à passer au serveur tftp, modifier en conséquence la
ligne "filename" dans /etc/dhcpd.conf).

Voilà le plus dur est fait : la connexion client-serveur devrait fonctionner.
Si ce n'est pas le cas, voir :
- /var/log/messages souvent très explicite
- http://wiki.ltsp.org/twiki/bin/view/Ltsp/TroubleShooting
- paragraphe "Messages d'erreur" plus loin

++++++++++++++++++++
Configuration de NFS
++++++++++++++++++++
Suivre les indications de http://wiki.ltsp.org/twiki/bin/view/Ltsp/NFS#NFS_Server_not_responding
Très bien expliqué.

+++++
XDMCP
+++++
Appelle le "display manager" du serveur pour afficher un écran de login sur le
client.
En général c'est GDM ou KDM (mdkkdm) qui est appelé. Pour des raisons de
sécurité la connexion de clients est par défaut interdite. Pour l'autoriser :

GDM :
éditer /etc/X11/gdm/gdm.conf
chercher [xdmcp] et changer "Enable=false" en "Enable=true"

KDM :
éditer /etc/kde/kdm/kdmrc
chercher[Xdmcp] et remplacer Enable=false par Enable=true

Pour un autre "display manager", voir la doc sur
http://www.tldp.org/HOWTO/XDMCP-HOWTO/

Relancer X. (<Alt><Ctrl><Backspace> par exemple)

++++++++++++++++++++++++++++++++++++++
Configuration de LTSP et des terminaux
++++++++++++++++++++++++++++++++++++++
- Lancer ltspcfg pour voir si tout est OK.
- Lire la doc : 		/opt/ltsp/i386/etc/lts.conf.readme
- S'en servir pour configurer	/opt/ltsp/i386/etc/lts.conf

Bien lire lts.conf.readme : on y trouve de nombreux paramètres pour modifier
le comportement des clients. Rajouter par exemple dans lts.conf :
	xkbLayout	= fr			pour avoir un clavier français
	X_MODE_0	= 1024x768		pour la résolution écran, si supportée par la carte video du client.

L'écran de login devrait apparaître. Si ce n'est pas le cas :
# tail -f /var/log/messages
et aussi
# tail -f /var/log/Xorg.0.log

Voir aussi :
Chapter 7. Troubleshooting sur http://ltsp.org/documentation/ltsp-4.1/ltsp-4.1-en.html
et peut-être aussi 
Chapter 6. Troubleshooting sur http://ltsp.org/documentation/ltsp-3.0.0/ltsp-3.0-4-en.html#AEN514
ou les explications sur les problèmes que l'on peut rencontrer sont plus complètes.

+++++++++++++++++++++++++++++++++++
Messages d'erreur divers rencontrés
+++++++++++++++++++++++++++++++++++
L'option root-path dans /etc/dhcpd.conf est indispensable, sinon :
ERROR! No root-path; Check your DHCP configuration ....
Kernel panic ....

Dans le cas où l'adresse Mac du client n'est pas déclarée dans dhcpd.conf les
messages d'erreur suivants s'affichent :
Coté serveur dans /var/log/messages :
	Feb 10 19:00:31 <NomClient> dhcpd: DHCPDISCOVER from 00:0e:0c:65:59:23 via 
eth0: network 192.168.0/24: no free leases
Coté client sur l'écran :
	No IP address

syslogd: cannot write to remote file handle on 192.168.0.254:514
Editer /etc/sysconfig/syslog
Rajouter -r dans la ligne :
	SYSLOGD_OPTIONS="-m 0 -a /var/spool/postfix/dev/log" :
=>	SYSLOGD_OPTIONS="-m 0 -r -a /var/spool/postfix/dev/log"
Puis redémarrer syslogd
$ ps aux | grep syslogd
sudo kill -HUP <pid syslogd>

+++++++
A faire
+++++++
- Configurer le firewall
- dhcpd : tester les allocations dynamiques

Installation de la version LTSP 4.2
===================================
Documentation :
http://wiki.ltsp.org/twiki/pub/Ltsp/Documentation/ltspguide.pdf

Téléchargement :
---------------
http://wiki.ltsp.org/twiki/bin/view/Ltsp/LTSP-42#Installation_of_LTSP_4_2

Télécharger ltsp-utils-0.25-0.tgz
$ tar -xvf ltsp-utils-0.25-0.tgz
# ./ltspadmin
Suivre les instructions.

Pré-configuration
-----------------
Continuer en préconfigurant ltsp avec :
# ./ltspcfg
Choisir C - Configure the services manually
Passer en revue les 11 points et installer si nécessaire les services manquants (ltsp, nfs, etc.)
Au point 11, noter l'emplacement du fichier de configuration (/opt/ltsp/i386/etc/lts.conf par exemple) 
Quitter ltspcfg

Configuration de dhcpd
----------------------
Continuer comme ci-dessus


Mandriva Terminal server
========================
Documentation :
http://qa.mandriva.com/twiki/bin/view/Main/TerminalServer

++++++++++++
Installation
++++++++++++
Installer terminal-server

+++++++++++++
Configuration
+++++++++++++
Lancer drakTermServ
Cliquer sur [First Time Wizard] et suivre les indicatios affichées.


Quel répertoire ?
=================
pwd

Gestion des disques
===================
fdisk
cfdisk

Exemple :
fdisk /dev/hda

Monter une partition, une disquette, un cdrom
=============================================
Exemples :
# mount -t ext3 /dev/hdc2 /mnt/disk
# mount -t auto /dev/hdc2 /mnt/disk
# mount -t ext2 /dev/fd0 /mnt/floppy
# mount -t iso9660 /dev/hda /mnt/cdrom		(hda : cas cdrom en maître sur premier contrôleur)

Pour autoriser un utilisateur ou un groupe d'utilisateurs à lire/écrire sur la partition montée (par exemple sur une clé USB ou un disque externe qui ne se monte pas automatiquement) :
# mount -o users,rw,uid=<login ou n° utilisateur> /dev/sdax /mnt/disk
# mount -o users,rw,gid=<nom ou n° groupe> /dev/sda /mnt/disk
NB: ces commandes changent le propriétaire (user uid) ou les propriétaires (group uid) du répertoire /mnt/disk

Montages automatique de système de fichiers
===========================================
voir autofs

Démonter une partition récalcitrante (à voir)
=============================================
$ fuser -k -TERM -v -m point_de_montage
           ou, plus violent (SIGKILL) :
$ fuser -k -v -m point_de_montage

Trouver ce qui empêche de démonter la disquette (par exemple)
#umount /dev/fd0
umount: /mnt/floppy: périphérique occupé

# fuser -m /dev/fd0
/dev/fd0:	1692

# ps aux | grep 1692
root	1692	fam

# kill -9 1692

# umount /dev/fd0

# fam

Le plus pratique :
# umount -fl /point/de/montage
ou
# umount -fl /dev/NomDuDevice

Cas où le système de montage automatique d'une clé USB ne fonctionne pas
------------------------------------------------------------------------
Mettre par exemple dans fstab :
/dev/sdc1 /mnt/usb auto user,noauto,rw 0 0
/dev/sdc1	device sous lequel est reconnue la clé
/mnt/usb	point de montage
auto		reconnaissance automatique du type de partition
user		chaque user peut monter la clé. Seul l'utilisateur qui l'a monté peut la démonter
		Pour que tous les utilisateurs puissent monter/démonter la clé mettre "users"
		On pourait mettre à la place par exemple uid=503 pour n'autoriser que l'utilisateur d'id 503 à monter/démonter la clé. Pour connaître l'id d'un utilisateur :
		id <utilisateur>
noauto		pas de montage automatique au démarrage du système
rw		l'utilisateur a les droits rw (mettre rwx si des programmes sur la clé doivent pouvoir être lancés

(rwx si des programmes soivent être exécutés à partir de la clé)


NFS
===
http://www.lea-linux.org/cached/index/Reseau-partfic-nfs.html

Installation
------------
Généralement installé par défaut, sinon :
$ urpmq nfs
no package named nfs
The following packages contain nfs:
clusternfs
libnfsidmap0
libnfsidmap0-devel
nfs-utils
nfs-utils-clients
nfswatch
# urpmi nfs-utils

Paramétrage
-----------
- Sur le serveur
/etc/exports
 exemple : 
# Répertoire partagé	PC(autorisations)
  /home/dupont 		192.168.0.10(rw) 192.168.0.25(ro)

/etc/hosts.deny
# Interdire toutes les machines qui ne sont pas autorisées explicitement dans le /etc/hosts.allow 
ALL: ALL

/etc/hosts.allow
Exemple :
	portmap:192.168.1.34
	lockd:192.168.1.34
	mountd:192.168.1.34
#	rquotad:192.168.1.34
#	statd:192.168.1.34

Exporter le partage (ou les modification du partage) pour eviter de redémarrer le serveur nfs
# exportfs -av

Démarrage/arrêt
---------------
- (Re)lancer nfs
# service nfs start | restart
ou bien :
# /etc/init.d/nfs
ou encore :
# mcc -> System -> Enable or disable the system services

- Monter le répertoire partagé :
# mount NomMachine:RépertoirePartagé /mnt/disk

Pour un montage plus simple, configurer fstab et / utiliser autofs
# urpmi autofs
fichier de configuration : /etc/auto.misc

Pour vérifier si le service est démarré
---------------------------------------
# rpcinfo -p
 program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp    760  status
    100024    1   tcp    763  status
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
   

Configurer le firewall pour laisser passer les ports nécessaires : cf.rpcinfo


- Sur le client

Pour lister les partages :
# showmount -e

man showmount
man exportfs

Gestionnaires de fichiers (file manager)
========================================
konqueror
midnight commander
krusader
PCMan		http://pcmanfm.sourceforge.net/

Mémoriser la configuration de Konqueror
=======================================
Menu : Window/Save View Profile "File Management"

Configuration de Konqueror en web browser
=========================================
Changer la page web par défaut :
- Installer une page web vierge : about:blank
- Afficher le menu "konqueror" (intéressant : liens sur "Home", "Network Folders",
"Applications", "Storage Media") : about: ou about:konqueror
- Sinon aller sur la page de son choix.
Puis :
Menu : Settings > Configure View Profile > Web browsing
Cocher "Save URL in Profile"
Cliquer sur le bouton <Save>

Konqueror, barre de recherches (searchbar)
=========================================
Si elle a disparu ou n'est pas visible :

Sur MDV en anglais :
- Vérifier que le plugin "Search Bar Plugin" est installé :
Settings > Configure extensions > Extensions : Name : Search Bar Plugin
- Rendre visible la "search bar" :
Settings > Toolbars > Search Toolbar <searchbar>
la migrer d'"Available actions" à "Current actions" 
- Redémarrer konqueror.

Sur MDV en français, plugin non installé :
# urpmi kdeaddons-searchbar
Redémarrer KDE
Lancer konqueror : la barre est là.
Curieusement le plugin n'est pas listé dans "Configurer les extensions > Extensions" !

Changer de console
==================
Sortir de l'environnement graphique
	Alt Ctrl F9
Console 1
	Alt F1
Revenir à l'environnement graphique
	Alt Ctrl F7

Variables
=========
Voir une liste de variables d'environnement (shell, etc)
-------------------------------------------------------
env

Voir une variable particulière
------------------------------
exemple :
echo $SHELL

Supprimer une variable
----------------------
unset toto		(et non pas $toto !)

Conversions minuscules/majsucules
---------------------------------
$ a=azerty
$ echo $a |tr a-z A-Z
AZERTY

Substitution de variables
-------------------------
http://www.linuxplusvalue.be/mylpv.php?id=187
http://abs.traduc.org/abs-3.4-fr/string-manipulation.html

Affectation
-----------
$ TUTU="Le soleil brille"
$ echo $TUTU
Le soleil brille

Valeur par défaut à utiliser en cas de variable inexistante
-----------------------------------------------------------
NB : TITI est une variable inexistante
$echo TITI

$ echo ${TITI:-il pleut}
il pleut
$ echo ${TUTU:-il pleut}
Le soleil brille
$echo TITI

ce qui montre que la valeur de TITI est temporaire 

Affectation d'une valeur en cas de variable inexistante
-------------------------------------------------------
$ echo ${TITI:=coucou}
coucou
$ echo TITI
coucou

Message à renvoyer en cas de variable inexistante
-------------------------------------------------
$ unset TITI
$ echo ${TUTU:?Cette variable est vide}
Le soleil brille
$ echo ${TITI:?Cette variable est vide}
bash: TITI: Cette variable est vide

Message à renvoyer si la variable existe
----------------------------------------
$ echo ${TUTU:+Cette variable est initialisée}
Cette variable est initialisée
$ echo ${TITI:+Cette variable est initialisée}

Dans un bash utiliser plutôt un code, par exemple 0 pour TRUE
$ echo ${TUTU:+0}
0

Extraction d'une sous-chaîne
----------------------------
${variable:position:longueur}

$ echo $TUTU
Le soleil brille
$ echo ${TUTU:3:6}
soleil
$ echo ${TUTU:3}
soleil brille

La numérotation commence à 0
La longueur de la chaîne soleil est 6 caractères

Extraire un/des nombre(s)
-------------------------
$ a=azer ti128bb
$ echo ${a//[^0-9]}		#Supprime tout ce qui n'est pas un chiffre
128
$ b="azer ti128bb85ezaz032e"
$ echo ${a//[^0-9]}
12885032

=> Extraire plusieurs nombres :
$ echo "$b" | sed -e 's/[^0-9]/ /g'
       128  85    032
$ for n in $(echo $b | sed -e 's/[^0-9]/ /g'); do echo $n; done
128
85
032

Ou mieux :
$ echo ${b//[^0-9]/ }
128 85 032
$ for n in $(echo ${b//[^0-9]/ }); do echo $n; done
128
85
032

Nombre de caractères dans la variable :
-------------------------------------
$ echo ${#TUTU}
16
$ LEN=${#TUTU}
$ echo $LEN
16

Suppressions
-----------
$ echo ${TUTU/soleil}
Le brille

$ echo ${TUTU/le}
Le soil brille				# une seule suppression (1° occurence de "le"

$ echo ${TUTU//le}			# plusieurs suppressions ("le" supprimé partout)
Le soil bril

Suppressions à partir du _début de la chaîne_ :
TITI="Le soleil brille et le vent souffle"
$ echo ${TITI#Le}
soleil brille et le vent souffle

$ echo ${TITI#brille}
Le soleil brille et le vent souffle
=> Attention avec # et ## les suppressions commencent à partir du début de la chaîne !!

$ echo ${TITI#Le*brille}
et le vent souffle
ou plus simplement :
$ echo ${TITI#*brille}
et le vent souffle

Mais :
$ echo ${TITI#soleil*souffle}
Le soleil brille et le vent souffle		# ne marche pas

$ echo ${TITI#*il}	# Suppression entre le début de la chaîne et le _premier_ "il"
brille et le vent souffle
$ echo ${TITI##*il}	# Suppression entre le début de la chaîne et le _dernier_ "il"
le et le vent souffle

Suppressions à partir de la _fin de la chaîne_ :
$ echo ${TITI%souffle}
Le soleil brille et le vent
Mais :
$ echo ${TITI%vent}
Le soleil brille et le vent souffle
=> Attention avec % et %% les suppressions commencent à partir de la fin de la chaîne !!

$ echo ${TITI%brille*souffle}
Le soleil
$ echo ${TITI%brille*e}
Le soleil
$ echo ${TITI%brille*}
Le soleil

$ echo ${TITI%il*}
Le soleil br			# Suppression entre la fin de la chaîne et le il le plus proche de la fin
$ echo ${TITI%%il*}
Le sole				# Suppression entre la fin de la chaîne et le il le plus loin de la fin

Trouver le début et la fin d'une sous-chaîne (merci encore à Christophe Gaubert)
--------------------------------------------
$ schaine="soleil"
$ a=${TITI%%$schaine*}
$ debut=${#a}			# si on numérote à partir de 0
$ echo $debut
3
$ debut=$(( ${#a} +1 ))		# si on numérote à partir de 1
$ echo $debut

Ou bien, en une seule commande
$ debut=$(expr length ${TITI%%$schaine*})
ou
$ debut=$(( `expr length ${TITI%%$schaine*}` + 1 ))

$ fin=$(expr "$TITI" : .*$schaine)
$ echo $fin			# si on numérote à partir de 1 
9
$ (( fin -=1 ))		# Si on numérote à partir de 0
$ echo $fin
8

Autres suppressions : isoler des caractères numériques (par exemple)
--------------------------------------------------------------------
$ a="abcABC de128fg hi"
Enlever les caractères à gauche du nombre :
$ echo $a | sed -e "s/^[a-z ]*//"	# le "^" (attention : Alt GR 9 !) correspond à "début de la chaîne"
128fg hi
ou bien :
$ echo $a | sed -e 's/^[^0-9]*//'
128fg hi
Enlever les caractères à droite du nombre :
$ echo $a | sed -e 's/[^0-9]*$//'	# $ indique la fin de la chaîne
abc de128
Ne garder que le nombre :
$ echo $a | sed -e 's/[^0-9]*//g'	# g = répéter

Supprimer les répétitions
-------------------------
Espaces multiples:
$ a="aaa     bb   cc"
$ echo $a
aaa bb cc
$ echo "$a"
aaa     bb   cc
$ b=`echo $a | tr -s " "`
$ echo "$b"
aaa bb cc
$ b=`echo $a`			# Semble aussi marcher pour les espaces, à voir
$ echo "$b"
aaa bb cc

Remplacements
-------------
$ echo ${TUTU/soleil/miroir}
Le miroir brille

Voir également sed, ci-dessus

Remplacements multiples
-----------------------
$ TUTU="Le chien hurle. Le chien s'endort"
$ echo ${TUTU/chien/loup}
Le loup hurle. Le chien s'endort
$ echo ${TUTU//chien/loup}
Le loup hurle. Le loup s'endort

Noter que la valeur de TUTU n'a pas changé
$ echo $TUTU
Le chien hurle. Le chien s'endort

Suppression(s)
--------------
TUTU="dix sept, dix huit, dix neuf"
$ echo ${TUTU//dix}
sept, huit, neuf

Echo, expr et les caractères "espace" fantômes
----------------------------------------------
$ a="ab80cde"
$ b=${a%%"80c"*}
$ echo $b
ab
$ echo ${#b}
2
$ echo $(expr length $b)
2

Tout est OK, Maintenant :

$ a="ab 80cde"				# 1 caractère "espace" entre ab et 80cde
$ b=${a%%"80c"*}
$ echo -n $b | od -a
0000000   a   b				# le caractère espace a disparu !
0000002
$ echo ${#b}					# Tiens on dirait qu'il y est quand même !
$ echo $(expr length $b)
2						# Ah, ben non !
$ echo $(expr length "$b")
3						# Ouf il y est !

Autre essai :
$ a="ab  80cde"				# 2 caractères "espace" entre ab et 80cde
$ b=${a%%"80c"*}
$ echo -n $b | od -a
0000000   a   b				# les 2 caractères "espace" ont disparu !
0000002
$ echo ${#b}
4
$ echo $(expr length $b)
2
$ echo $(expr length "$b")
4

=> echo supprime les caractères espace !!!
=> avec expr penser toujours à entourer les variables de ""

Opérations (additions, soustractions, multiplications, divisions)
-----------------------------------------------------------------
$ r=1
$ echo $((r++))
1
$ echo $r
2
=> l'affichage se fait avant l'incrémentation

$ r=1
$ echo $((++r))
2
$ echo $r
2
=> l'affichage se fait après l'incrémentation

$ r=1
$ a=$((r +=1))
$ echo $a
2
$ echo $r
2

$ r=1
a=$((r + 1))
$ echo $a
2
$ echo $r
1

$ a=2
$ b=10

$ echo $(($b + $a))
12
$ echo $(($b * $a))
20
$ echo $(($b / $a))
5

b=11
$ echo $(($b / $a))
5
$ echo $(($b % $a))			# modulo (reste)
1

Affecter le résultat d'une commande à une variable
--------------------------------------------------
$ r=`ls /usr/X11R6`			# affectation
$ r=$(ls /usr/X11R6)			# idem
$ echo $r					# affichage du résultat
bin/ GNUstep/ include/ lib/ man/ share/

Affichage ligne à ligne de la variable r
----------------------------------------
$ for i in $r ; do echo $i; done		# ou bien echo "${r[@]}"
bin/
GNUstep/
include/
lib/
man/
share/

Tester si une sous-chaîne est contenue dans une chaîne de caractères
--------------------------------------------------------------------
$ a="C'est sûr, il neige aujourd'hui, il neigera demain"
$ b="neige"
$ c="soleil"
$ [[ $a == *$b* ]]
$ echo $?
0
[[ $a == *$c* ]]
$ echo $?
1

Trouver la position de la sous-chaîne dans la chaîne
----------------------------------------------------
$ echo $(expr $a : '.*est')
expr: syntax error		les "" sont indispensables !

$ echo $(expr "$a" : '.*est')				ou bien $ echo $(expr "$a" : .*est)
5
5 est la position dans la chaîne $a du t de est

Variante :
$ echo $(expr match "$a" .*est)
5

Autres possibilités :
$ n=$(expr "$a" : .*est)
$ m=`expr "$a" : .*est`
$ echo n=$n m=$m
n=5 m=5

$ echo $(expr "$a" : \.\*$b)
41
=> C'est le 2° neige qui est retourné :41 est la position du 2° e de neigera

Trouver la position du premier "neige"
$ echo $(expr index "$a" "$b")
3
marche pas : c'est le 1° e qui est trouvé !

$ b="rty 84bn"
$ echo $(expr "$b" : .*'[0-9]')
6
Mais :
$ echo $(expr $b : .*'[0-9]')
expr: syntax error

Comme b contient un espace, quand bash lit :
        $(expr $b : .*'[0-9]')
il va essayer d'exécuter :
        $(expr rty 84bn : .*'[0-9]')
Et là, erreur syntaxique : l'espace n'est pas protégé, rty et 84bn sont 
deux arguments, alors que expr n'en attend qu'un.
Pour éviter ce genre de déconvenue, toujours mettre des guillemets.

Concaténation 
-------------
a=abc
a=${a}'123'
echo $a
abc123

Tableaux : affectation, affichage
=================================

Affecter des variables à un tableau
-----------------------------------
$ t=(bleu blanc rouge)

$ echo $t
bleu
$ echo ${t[0]}
bleu
$ echo ${t[1]}
blanc
$ echo ${t[*]}			# ou echo ${t[@]}
bleu blanc rouge
$ echo ${#t[*]}			# Nombre d'éléments dans le tableau
3

$ t[1]=vert
$ echo ${t[@]}
bleu vert rouge

Copie de tableau
$ a=(${t[*]})
$ echo ${a[*]}
bleu blanc rouge

ou bien d'après certaines docs :
a="${t[@]}"
$ echo ${a[*]}
bleu blanc rouge blanc rouge		# !!!

Initialiser un tableau
----------------------
a=()
$ echo ${#a[*]}			# Nombre d'éléments dans le tableau
0

Balayer un tableau
------------------
for (( i=0 ; i<${#t[*]} ; i++ )) ; do echo "i=$i t=${t[i]}" ; done
i=0 t=bleu
i=1 t=blanc
i=2 t=rouge

Rajouter un élément
-------------------
$ t=( ${t[*]} vert )
$ echo ${t[*]}
bleu blanc rouge vert

$ v=violet
t=(${t[*]} $v)
$ echo ${t[*]}
bleu blanc rouge vert violet

Tableau résultat d'une commande
-------------------------------
t=(`ls /usr/X11R6`)
$ echo ${t[*]}
bin/ GNUstep/ include/ lib/ man/ share/
$ echo ${t[3]}
lib/

Nombre de variables dans un tableau de variables
------------------------------------------------
$ echo ${#t[*]}			# attentionn : echo ${#t} donne 4, soit la longueur de t[0]
6

Longueurs
---------
$ echo ${#t}	# ou echo ${#t[0]}
4		# nb de caractères dans le premier élément du tableau (/bin)

$ echo ${#t[2]}	# nb de caractères dans le 3° élément du tableau (/include)
5

Additions, soustractions
------------------------
t=(10 2 7)
$ echo `expr ${t[0]} + ${t[2]} - ${t[1]}`
15

Adressage indirect
------------------
$ médor=chien
$ chien=canidé
$ echo $médor
chien
$ echo $chien
canidé
$ echo ${!médor}
canidé

Voir/ supprimer des processus
=============================
ps

Vignettes
=========
Les images sont dans /usr/share/mdk/faces/

Grub
====
http://www.gnu.org/software/grub/
http://doc.polynum.org/howto/grub/grub-howto-1.html (en français)

I - Créer une disquette grub
////////////////////////////

1 - Formater une disquette au format ext2fs :
# kfloppy
ou bien :
# mke2fs /dev/fd0

-c (ou cc) pour vérification
-L nom du volume

2 - Monter la disquette

3 - Créer un répertoire boot. Dans ce répertoire créer un répertoire grub,
Dans /boot/grub, copier les fichiers
	menu.lst
	stage1
	stage2

3 - Démonter la disquette

4 - Rendre la disquette bootable
La méthode décrite dans le "GRUB manual", §3.1 "Creating a GRUB boot floppy"
ne fonctionne pas.
Utiliser plutôt l'une ou l'autre des méthodes suivantes :

a) Methode simple (interactive)
# grub
grub> root (fd0)
grub> setup (fd0)
grub> quit


b) Méthode décrite dans la FAQ "4. How to create a GRUB boot floppy with the menu interface"
---------------------------------------------------------------------------------
Lancer la commande batch suivante
# grub --batch --device-map=/dev/null <<EOF
device (fd0) /dev/fd0
root (fd0)
setup (fd0)
quit
EOF

Cette disquette permettra de démarrer pratiquement n'importe quel système
d'exploitation (Linux ou autre) qui se trouve sur le(s) disque(s) de l'ordinateur.


II - Installer grub sur le MBR d'un disque

NB : quand on installe grub sur le disque dur au moyen du rpm mandriva, ce qui est nécesaire au fonctionnement de grub se trouve dans /lib/grub/i386-mandriva/ ; on peut copier à la main les fichiers "*stage*" dans /boot/grub, ou bien utiliser grub-install qui fera cela automatiquement.

Attention : éviter d'écraser le MBR Windows. S'il a été écrasé, voir plus loin
Pour éviter cela, sauvegarder le MBR avec dd par exemple sur une disquette :
dd if=device of=/dev/fd0/mbr.win bs=512 count=1
remplacer device par le device du disque de boot (par exemple hda, sdb ...)

1 - Lancer grub :
# grub

2 - Vérifier que le "root device" (c'est à dire les fichiers grub) se trouve bien là où l'on pense : en effet la dénomination des disques est différente sous linux
et sous grub:

grub> find /boot/grub/stage1
 (fd0)
 (hd1,1)

Le root device est donc ici en hd1,1, c'est à dire hdb2 en nomenclature Linux

3 -Indiquer à grub l'emplacement du root device :
 grub> root (hd1,1)
 Filesystem type is ext2fs, partition type 0x83

4 - Installer GRUB dans le MBR de hd1 (hdb en nomenclature linux)
grub> setup (hd1)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd1)"...  17 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd1) (hd1)1+17 p (hd1,1)/boot/grub/stage2
/boot/grub/menu.lst"... succeeded
Done.

5 - Quitter grub
grub> quit

6 - Copier le programme de boot que l'on vient de mettre dans le MBR du disque hdb.
La copie est mise dans un fichier (ici bootsect.grb) qui sera plac� dans la racine de
la partition bootable, soit tr�s g�n�ralement hda1. Si n�cessaire v�rifier � l'aide de
fdisk que cette partition a bien l'attribut bootable.
Dans l'exemple ci-dessous /dev/hda1 est mont� en /mnt/win_c

# dd if=/dev/hdb of=/mnt/win_c/bootsect.grb bs=512 count=1


Configurer grub pour booter linux
--------------------------------------
Taper sur la touche <c> pour passer en mode commande et rechercher où se trouve le(s) dossier(s) grub :
c'est dans ces dossiers que se trouve le fichier menu.lst à configurer :
grub> find /boot/grub/stage1
 (fd0)
 (hd1,1)

=> dans ce cas il y a 2 dossiers grub
- sur disquette (fd0)
- sur la 2° partition du disque hd1

Taper sur les touches <Esc> puis <e> pour éditer les lignes de commande
Corriger les valeurs et essayer de booter.
Dans le cas d'un déplacement de disque, fstab est probablement incorrect : booter avec un mini-linux sur disquette (tomsrtbt, puis utiliser vi) ou sur CD (Knoppix avec KDE ou le CD1 d'installation Mandrake avec vi) et corriger fstab. En profiter pour corriger le fichier menu.lst qui se trouve dans boot/grub.

NB : sous Knoppix les partitions sont par défaut "read only". En plus KDE est ouvert pour un utilisateur non root. Donc pas moyen d'écrire.
Pour pouvoir écrire, passer dans une console root (il n'y a pas de mot de passe) :
<Alt Ctrl F2>
Démmarrer KDE en root :
# startx -- :1
- Sur le bureau, trouver l'icône de la partition qui contient les fichiers menu.lst et fstab à modifier
- Click droit sur l'icône de la partition, la monter
- A nouveau click droit et changer le mode en read/write
- passer dans le répertoire boot/grub/
- clik droit sur l'icône du fichier menu.lst : l'ouvrir avec un éditeur (kwrite) et entrer les bonnes valeurs
- idem pour /etc/fstab

Attention : Knoppix et Mandrake ne reconnaissent pas les disques sous le même nom : par exemple hdg sous knoppix peut devenir hdc sous Mandrake. Pour savoir comment mandrake identifie les disques, démarrer avec le CD d'installation n°1 jusqu'au partitionnement : on voit alors comment les disques sont nommés.

Rebooter.
S'il n'y a plus d'erreur dans menu.lst et dans fstab, ça boote correctement.

Amélioration de l'affichage des infos au démarrage de MDK
---------------------------------------------------------
Remplacer vga=788 par vga=791
dans le fichier /boot/grub/menu.lst
Si le système affiche au démarrage "You passed an undefined number" c'est que le driver écran ne supporte pas cette résolution (il repasse automatiquement en 80x25). Dans ce cas, essayer d'autres résolutions du tableau ci-dessous.

Valeur du paramètre vga
cf. http://guide.andesi.org/html/jbootsplash.html

Résolution	Nombre de couleurs		paramètre vga
640x480		256			769
		32000			784
		65000			785
		16.7 Millions		786

800x600		256			771
		32000			787
		65000			788
		16.7 Millions		789

1024x768	256			773
		32000			790
		65000			791
		16.7 Millions		792

1280x1024	256			775
		32000			793
		65000			794
		16.7 Millions		795

On peut également utiliser :
vga=normal
vga=ask

Autre tableau (plus simple), cf. http://linuxfr.org/tips/249.html
Couleurs___640x480__800x600__1024x768__1280x1024__1600x1200 -------+------------------------------------------------------------------------------- ____4__|____769______771_______773_______775________796___ ____8__|____784______787_______790_______793________797___ ___16__|____785______788_______791_______794________798___ ___24__|____786______789_______792_______795________799___



Changer/se débarasser de l'image de fond au démarrage
------------------------------------------------------
- Supprimer : splash=silent dans /boot/grub/menu.lst
- Installer bootsplash-themes
Puis lancer mcc, cliquer sur l'icône de menu "Boot" et choisir un fond sobre : "Linux" est simple et pas mal

Voir aussi http://linuxfr.org/tips/249.html

Gestion des disques
===================
diskdrake

Nettoyage des disques
=====================
KleanSweep

Taux d'occupation des disques
=============================
http://www.linux.com/article.pl?sid=06/01/25/1548238

df
df -h			(h = human readable, affichage en MO, etc.)
filelight
Baobab
KDirStat

Sous KDE :
Menu View > View Mode > File Size View
(il faut auparavent avoir installé kdeaddons : sudo urpmi kdeaddons et redémarrer KDE)
ou bien :
Menu View > View Mode > RadialMap View
(il faut auparavent avoir installé filelight)


du	taille occupée par les fichiers
Exemples :
$ du -s /home
du: `/home/lost+found': Permission denied
15G     /home

# du /var/log/messages*
860K    /var/log/messages
1,2M    /var/log/messages.1.gz
96K     /var/log/messages.2.gz
108K    /var/log/messages.3.gz
232K    /var/log/messages.4.gz

Monter/démonter des disques, occupation
=======================================
kdf

Formatage d'une partition d'un disque dur
=========================================
Formater la partition hdc2, par exemple :
mkfs -V -t ext3 -c /dev/hdc2
Curieusement c'est  une partition ext2 qui est crée : pour la passer en ext3 (ça n'efface rien !)
tune2fs -j /dev/hdc. Cette erreur est corrigée dans les dernières versions.

ou bien
mkfs.ext3 -c -v /dev/hdc2
-v verbose
-c vérifie les blocs défectueux
(avec mkfs.ext3, c'est bien une partition journalisée ext3 qui est crée).

Formatage rapide :
mkfs /dev/hdc2

ext3
----
Avec le noyau 2.6 les répertoires peuvent être indexés ce qui accélère l'affichage en cas de fichiers en grand nombre (cf. http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt)
Par exemple pour ajouter l'indexation à un système de fichiers ext3 existant sur la partition sda3 :
# tune2fs -O dir_index /dev/sda3

Nommer un disque (une partition), changer son nom ou afficher son nom
---------------------------------------------------------------------
# e2label /dev/sdb1 TOTO		nommer ou changer le nom
# e2label /dev/sdb1			affiche le nom
TOTO

Egalement dans diskdrake, en mode expert

Particulièrement utile pour désigner des disques amovibles dont la désignation peut changer à chaque montage.

Formater une disquette
=======================
kfloppy

Formatage ext2 (rapide)
mke2fs /dev/fd0

Formatage ext2 avec contrôle en lecture/écriture de la surface de la disquette (lent)
mke2fs -c -c /dev/fd0

Localiser quelque chose
=======================
find
locate
which ou type
whereis
kfind

Rechercher à l'intérieur de fichiers
------------------------------------
grep
rgrep
kfind

$ grep -il chaine $(locate NomFichier)
Locate retourne à grep tous les fichiers correspondant à NomFichier : grep cherche parmi ces fichiers ceux qui contiennent la chaîne "chaine" et affiche leur nom.


Copie de disquette (idem diskcopy sous DOS)
===========================================
1 - Copier le contenu de la disquette sur le disque dur
dd if=/dev/fd0 of=flop.tmp
2 - Facultatif : formater une disquette (voir ci-dessus)
Pas vraiment utile, car dd copie secteur à secteur. permet de vérifier l'état de la disquette
3 - Copier le fichier flop sur cette disquette
dd if=flop of=/dev/fd0
4 - Effacer le fichier temporaire flop.tmp
rm -i flop.tmp

Clients de messagerie
=====================
kmail
Claws Mail	www.claws-mail.org/


Messagerie (mail)
=================
Format de stockage des messages : 3 possibilités suivant les clients de messagerie utilisés :
1 - Dans un répertoire : 1 fichier par message
2 - tous les messages sont dans un seul fichier, éventuellement organisé en base de donnée
3 - Solution intermédiaire  un fichier par dossier : tous les messages du dossier sont groupés dans un fichier.

1 = maildir, format le plus sûr
cf. 	http://www.qmail.org/qmail-manual-html/man5/maildir.html,
	http://en.wikipedia.org/wiki/Maildir

Utilisé par Kmail, Postfix, etc.

Les messages d'un dossier du client de messagerie (par exemple inbox) sont mis dans un répertoire (inbox) subdivisé en trois sous-répertoires : cur, new et tmp
- new : les messages nouvellement arrivés, avec l'heure et date d'arrivée
- cur : idem new, mais messages lus
- tmp : pas clair, voir doc ci-dessus

2 = format le plus dangereux et le plus difficile à tranférer sous un autre format
Utilisé par Microsoft Outlook 

3 = mbox, format très courant
cf. 	http://www.qmail.org/man/man5/mbox.html,
	http://en.wikipedia.org/wiki/Mbox
Utilisé par exemple par Eudora

Mail : emplacement des messages (à sauvegarder)
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Kmail
-----
~/.kde/share/apps/kmail/mail/

Thunderbird
-----------
~/.thunderbird

Postfix(serveur)
----------------
~/Maildir

Kmail
=====

Par défaut l'icône kmail ou la commande kmail lancent "kontact".
Pour lancer uniquement kmail, localiser kmail :
$ which kmail
/usr/bin/kmail
et lancer cette application.
Pour créer l'icône correspondante :
- lancer konqueror
- copier /usr/bin/kmail sur le bureau (par exemple drag&drop touche ctrl enfoncée)
- changer l'icône de l'application sur le bureau :
	clic droit, properties, cliquer sur l'icône en forme de clé ; dans la
	fenêtre que s'ouvre, cliquer sur l'icône en forme de roue dentée,
	sélectionner "System icons" et les icônes "Applications" : on y trouve
	l'icône kmail.
- ou bien drag&drop de l'icône dans la barre de lancement de tâches
- choisir l'icône de son choix (kmail par exemple dans System icons / Applications)

Fichiers de configuration (pour config "à la main")
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
~/.kde/share/config/kmailrc
------------------------------------
Etiquettes :
- Compte(s) pour la réception :
[Account 1]
....
[Account 2]
....
- Compte(s) pour l'envoi
[Transport 1]
....
Voir aussi :
[Composer]
current-transport=nom_serveur

Signatures :
[KFileDialog Settings]
Recent Files=$HOME/Signatures/Standard.txt

Identités
fichier : /home/user/.kde/share/config/emailidentities
------------------------------------------------------

Threads
°°°°°°°
Menu Folder > Thread Messages
et/ou
Settings > Configure Kmail > Message list, cocher Threaded message list et Threads default to open.
Si ça ne marche pas :
Settings > Configure Kmail,> Layout > Message Structure Viewer, cocher Sows always , il semble que ça débloque la mise en forme des messages !!! 

Trash (poubelle)
°°°°°°°°°°°°°°°°
Menu : Settings/Configure Kmail
Onglet Receiving
Créer une BAL (ou bien choisir la BAL à modifier)
Onglet General, en bas de la fenêtre menu déroulant "Trash folder" : bien choisir dans quel dossier mettre les messages à envoyer à la poubelle.

Création de sous-répertoires
°°°°°°°°°°°°°°°°°°°°°°°°°°°°
La création de sous répertoires dans "Local Folders" ne pose pas de problème.
Par contre la création de sous-répertoires sur le serveur dans le répertoire racine n'est pas possible (problème postfix / courier-imap ?). Les créer dans le sous-répertoire "inbox" ou au dessous.

Récupération de messages sauvegardés, suite à une réinstallation de Linux
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Kmail 1.8.1
Créer les répertoires désirés sous "inbox" (répertoire essai par exemple)
Sur le serveur de mail copier les mails sauvegardés dans les répertoires correspondants (~/Maildir/.essai/cur 
dans cet exemple).
Kmail affiche maintenant les mails copiés dans les répertoires ad-hoc (inbox/essai dans cet exemple) sans aucune protestation 
Il semble que dans cette version de kmail les index soient maintenant rangés
dans /home/user/.kde/share/apps/kmail/imap.

Sauvegarde des messages
-----------------------
KMail 1.9.6, KDE 3.5.6 :
Les messages locaux sont dans ~/.kde/share/apps/kmail/mail.
A conserver et copier dans la nouvelle installation.
Messages conservés sur le serveur, voir plus loin "Sauvegarde des messages enregistrés sur le serveur Postfix"

Carnet d'adresses
°°°°°°°°°°°°°°°°°
~/.kde/share/apps/kabc

Signatures
°°°°°°°°°°
Configure Kmail > Identities > (Modifiy) > Signature

Encodage
°°°°°°°°
Pour la réception : 	View > Set Encoding > Auto
Pour l'envoi : ouvrir un nouveau message à envoyer, puis : Options > Set Encoding > Auto-detect

Groupware
=========
kolab ?

Date
====
$ date
sam fév  7 10:52:40 CET 2009

Formatage :
$ date +%Y-%m-%d
2009-02-07
$ date '+DATE: %m/%d/%y%nTIME:%H:%M:%S'
DATE: 02/07/09
TIME:10:53:57


Envoyer un mail en ligne de commande (mail)
===========================================
Exemples :
- Envoyer le résultat d'une commande :
$ date | mail -s "Voici la date et l'heure" toto@serveur_mail
(mettre le sujet entre "" si ce n'est pas un mot unique.

- Rédiger le mail à l'aide d'un éditeur de texte quelconque et l'enregistrer dans un fichier. Puis :
$ cat nom_fichier | mail -s sujet destinataire@serveur_mail

Transférer les messages du format mailbox au format maildir
===========================================================
Récupérer le programme perl mb2md sur http://batleth.sapienti-sat.org/projects/mb2md/
Le dézipper (gunzip nom_programme)
Mettre les droits x
Utilisation : voir le mode d'emploi. Par exemple pour remplir /home/utilisateur/Maildir :
$ ./mb2md-x.xx.pl -s /var/spool/mail/mbox_utilisateur

Si ça ne fonctionne pas vérifier que perl et perl-TimeDate soient bien installés.

winmail.dat
===========
Format de pièce(s) attachée(s) envoyé par outlook
Pour le décoder, installer tnef
Connaître le nom des fichiers inclus :		tnef -t winmail.dat
Extraction :							tnef -f winmail.dat

Alarme, sonnerie, avertissement, message
========================================
kalarm

Calendrier
==========
KOrganizer
pour récupérer un calendrier : 
~/.kde/share/apps/korganizer/std.ics

Peut se faire par le menu File > Import > Calendar
On peut se retrouver avec des évènements dupliqués : pour les supprimer :
- vérifier que Settings > Side Bar > Show Resource View est coché
- en bas à gauche dans le fenêtre "Calendar" sélectionner/déselectionner/supprimer les ressources utiles/inutiles.

Calendrier multi-utilisateurs
=============================
Webcalendar	http://www.k5n.us/webcalendar.php
A voir.

Clients FTP
===========
gftp
kbear
konqueror
...

Monter en local une connexion ftp
================================= 
curlftpfs
http://curlftpfs.sourceforge.net/
http://doc.ubuntu-fr.org/curlftpfs

Serveur ftp (proftpd)
=====================
Documentation : http://www.mandrakeuser.org/docs/connect/print/ftp.html
Fichier de configuration : /etc/proftpd.conf
Répertoire de départ (cf. directive <Anonymous ~ftp> dans le fichier de configuration) : /var/ftp

Statut, démarrer, arrêter, etc.
# service proftpd status [start] [restart] [stop] etc.

Version :
# proftpd -v
# proftpd --version

Fichier de configuration
------------------------
/etc/proftpd.conf

Créer un répertoire pour le dépôt anonyme de fichiers
-----------------------------------------------------
cf. http://www.proftpd.org/docs/faq/linked/faq-ch5.html#AEN466

<Anonymous ~ftp>
        User ftp
        Group ftp
        UserAlias anonymous ftp
        RequireValidShell off
        <Limit WRITE>
                DenyAll
        </Limit>

# Les modifs à ajouter sont ici :
#--------------------------------
	<Directory pub/upload/>
	<Limit READ STOR CWD>
        	AllowAll
	</Limit>
	<Limit RMD DELE MKD>
		DenyAll
	</Limit>
	</Directory>
#--------------------------------
</Anonymous>

Significations : (http://www.proftpd.org/docs/directives/linked/config_ref_Limit.html)
READ	lecture
STOR	STORe (dépôt)
CWD	Change Working Directory

RMD	ReMove Directory
DELEte
MKD	MaKe Directory

NE PAS OUBLIER DE DONNER LES DROITS D'ECRITURE SUR pub/upload au groupe ftp !!!
drwxrwsr-x    2 root     ftp          4096 Aug  2 08:40 upload/

Proftpd, symlinks et chroot
---------------------------
cf. http://castaglia.proftpd.de/doc/contrib/ProFTPD-mini-HOWTO-Chroot.html

Pour faire apparaître un répertoire dans /var/ftp/pub ln ne fonctionne pas. Utiliser à la place :
mount --bind /le/repertoire/a/monter /var/ftp/pub

Pour rendre accessible par ftp un partage samba :
mount -t smbfs -o username=toto //nom_machine/nom_partage /var/ftp/pub
Nb : sous MDV 2007 : mount -t cifs ...

FTP sécurisé
============
sftp utilise le port 22 (SSH)
En fait, malgré le nom, sftp n'a rien à voir avec le protocole ftp : c'est du ssh.
A partir de KDE/konqueror :
sftp://NomDeMachine
Puis entrer le login et le mot de passe de l'utilisateur : on est alors à la racine du home de l'utilisateur

A partir de W$ :
Pas de client sftp dans IE ou Mozilla :(
Mais possible avec filezilla :
remplir les champs Address, User et Password et taper retour chariot
on est alors à la racine du home de l'utilisateur

Serveurs http
=============

Lighthttpd
°°°°°°°°°°
http://mdvmondelinux.tuxfamily.org/Une-alternative-au-serveur-apache

Apache
°°°°°°
- Documentation : http://httpd.apache.org/docs-2.0/
- FAQ : http://httpd.apache.org/docs/misc/FAQ.html
- Fichiers de configuration principaux :
	/etc/httpd/conf/http2.conf		(en principe à ne pas modifier)
	/etc/httpd/conf/commonhttpd.conf	(ou suivant les versions httpd.conf à adapter suivant besoins)
- Répertoire de départ (cf. DocumentRoot dans le fichier de configuration http2.conf) : 	/var/www/html
- Fichier(s) à ouvrir par défaut : à voir ou définir dans commonhttpd.conf.
- Fichier de logs : /var/log/httpd/access_log
- Fichier d'erreurs : /var/log/httpd/error_log
- Fichiers de configuration :
	/etc/httpd/conf/commonhttpd.conf
	/etc/httpd/conf/vhosts/Vhosts.conf (voir ci-dessous)
- Version : httpd2 -V

Actuellement, dans le cas de la version 2 :
# httpd -v

Liste des modules :
# httpd -l
# httpd -M		(cf.man httpd)

Statut, démarrage / redémarrage, etc.
-----------------------------
# service httpd status
		extendedstatus
		start
		restart
		stop
ou bien
# /etc/init.d/httpd status

Autoriser l'accès local à un répertoire
---------------------------------------
Mettre dans /etc/httpd/conf/commonhttpd.conf :

Alias /toto /chemin/réel/vers/répertoire_à_autoriser

<Directory /chemin/réel/vers/répertoire_à_autoriser>
    Options Indexes FollowSymLinks
   <IfModule mod_access.c>
      Order deny,allow
      Deny from all
      Allow from 127.0.0.1 192.168.3.27 mabecane.fr
   </IfModule>
</Directory>

NB : version 2
--------------
Le fichier commonhttpd.conf n'est plus utilisé, mettre les modifications dans /etc/httpd/conf/httpd.conf !!

NB : localhost à la place de 127.0.0.1 ne marche pas
S'y connecter avec :
http://localhost/toto
"Options Indexes FollowSymLinks" autorise l'affichage du contenu du répertoire et permet de suivre les liens symboliques

Sites supplémentaires (virtual hosts)
-------------------------------------
Ajouter les sites dans /etc/httpd/conf/vhosts/Vhosts.conf, par exemple :


################# Named VirtualHosts : Mon_joli_site
NameVirtualHost 192.168.1.70
<VirtualHost 192.168.1.70>
ServerName mon_joli_site.fr
ServerAlias mon_joli_site
#ServerPath /domain
DocumentRoot /répertoire/de/départ
</VirtualHost>

Ajouter les adresses dans /etc/sysconfig/network-scripts
Créer un fichier ifcfg-eth0:0 (ou :1, etc.) contenant :
	DEVICE=eth0:0
	BOOTPROTO=static
	IPADDR=192.168.1.70
	NETMASK=255.255.255.0
	NETWORK=192.168.1.0
	BROADCAST=192.168.1.255
	GATEWAY=192.168.1.254
	ONBOOT=yes

NB : si le fichier est créé avec kwrite on a un message d'erreur à l'enregistrement. Enregistrer sous un nom quelquonque (toto par exemple) puis renommer.

Relancer eth0 : ifup eth0
Vérifier (éventuellement) que les modifications ont été prises en compte : ifconfig (pas de eth0 aprés !)

Ne pas oublier de redémarrer le serveur : service httpd restart

Plusieurs sites sur un même serveur avec une seule adresse IP
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
cf. http://httpd.apache.org/docs/1.3/vhosts/examples.html

Simplement 2 fichiers à configurer :

/etc/httpd/conf/vhosts/Vhosts.conf
----------------------------------
rajouter :

ServerName monserveur.mondomaine.a_moi
NameVirtualHost 192.168.0.25

#################	MonJoliSite
<VirtualHost 192.168.0.25>
ServerName MonJoliSite.mondomaine.a_moi
DocumentRoot  /var/www/html/sites/MonJoliSite
</VirtualHost>

#################	MonAutreSite
NameVirtualHost 192.168.0.25
<VirtualHost 192.168.0.25>
ServerName MonAutreSite.mondomaine.a_moi
ServerAlias www.MonAutreSite.mondomaine.a_moi			Pour pouvoir se connecter aussi par cette autre adresse
DocumentRoot  /var/www/html/sites/MonAutreSite
</VirtualHost>

dans /etc/httpd/conf/commonhttpd.conf :
---------------------------------------
rajouter :

<Directory /var/www/html/sites/MonJoliSite>
    Options -Indexes FollowSymLinks MultiViews
    AllowOverride All
    <IfModule mod_access.c>
      Order allow,deny
      Allow from all
    </IfModule>
</Directory>

<Directory /var/www/html/sites/MonAutreSite>
    Options -Indexes FollowSymLinks MultiViews
    AllowOverride All
    <IfModule mod_access.c>
      Order allow,deny
      Allow from all
    </IfModule>
</Directory>

et redémarrer le serveur : service httpd restart

bugs et problèmes
°°°°°°°°°°°°°°°°°
Erreur 403 : access denied 
L'affichage du contenu du répertoire racine du site n'est pas autorisé : vérifier qu'il y a bien un fichier index.html ou analogue à la racine du site !

Vhosts.conf :
------------------
- En interne on peut en principe utiliser le nom "MonJoliSite" au lieu du nom comple MonJoliSite.mondomaine.a_moi. Curieusement certains noms mais pas tous, renvoient sur le site principal. La directive ServerAlias ne fonctionne pas ?

- doc http://httpd.apache.org/docs/1.3/vhosts/. On y lis :
"Folks trying to debug their virtual host configuration may find the Apache -S command line switch useful"
# Apache -S                   (majuscules ou minuscules)
-bash: Apache: command not found
C'est une erreur dans la doc ; utiliser :
# httpd -S

- Apache 2.0.54, cooker ( et autres versions ?), à la fin du fichier /etc/httpd/conf/httpd.conf :
# virtual hosts configuration section
# Include virtual hosts, if any
Include conf/vhosts.d/*.conf

C'est faux : le répertoire conf/vhosts.d n'existe pas, c'est un sous-dossier du répertoire conf/vhosts/
Si on lance :
# httpd -S
VirtualHost configuration:
Syntax OK
c'est à dire qu'aucun virtual host n'est configuré 

En rajoutant dans /etc/httpd/conf/httpd.conf :
include conf/vhosts/*.conf
la commande httpd -S liste les hôtes virtuels. Exemple :
# httpd -S
VirtualHost configuration:
130.79.101.21:*        is a NameVirtualHost
         default server aloes.u-strasbg.fr (/etc/httpd/conf/vhosts/Vhosts.conf:59)
         port * namevhost aloes.u-strasbg.fr (/etc/httpd/conf/vhosts/Vhosts.conf:59)
         port * namevhost immuno-meda.u-strasbg.fr (/etc/httpd/conf/vhosts/Vhosts.conf:93)
....
Syntax OK

Sécurité
--------
http://httpd.apache.org/docs/howto/auth.html
http://httpd.apache.org/docs-2.0/misc/security_tips.html
http://httpd.apache.org/docs/misc/FAQ.html :
	How do I turn automatic directory listings on or off?
	G. Authentication and Access Restrictions
Voir sécurisation plus loin
	
Limiter l'accès par htpasswd
----------------------------
http://httpd.apache.org/docs-2.0/howto/htaccess.html
http://www.destrucsaweb.com/ressources/phpmyannu/goto_43.php
NB : l'utilisation de .htaccess est déconseillée sauf si l'on ne dispose pas des droits d'administration sur le serveur (cf. http://httpd.apache.org/docs-2.0/howto/htaccess.html). Si l'on dispose des droits d'administration préférer la méthode ci-dessous (voir à "Sécurisation)".

Validation des pages web
========================
http://validator.w3.org/
Voir aussi xenu sous windows : http://home.snafu.de/tilman/xenulink.html


Analyse des logs web, ftp, etc.
===============================
phpMyVisites
------------
Semble sympa (http://www.phpmyvisites.net/screenshots.html)
mais problèmes de dépendances. A voir,

awstats
-------)
Documentation :
/usr/share/doc/awstats-5.4/index.html
http://awstats.sourceforge.net/docs/index.html
Voir aussi le fichier de configuration /etc/awstats/awstats.conf


Programme : /var/www/cgi-bin/awstats.pl
Fichier de configuration : /etc/awstats/awstats.conf
Remplacer dans ce fichier :
	LogFile="/var/log/httpd/mylog.log"
par :	LogFile="/var/log/httpd/access_log"

Créer / mettre à jour les statistiques :
./awstats.pl -config=nom_serveur
./awstats.pl -config=nom_serveur -output -staticlinks > awstats.nom_serveur.html

webalizer
---------
Site : http://www.mrunix.net/webalizer/
Installation : urpmi webalizer

Documentations :
- man webaliser ou http://www.mrunix.net/webalizer/webalizer.1.html
- lire et configurer le fichier de configuration /etc/webalizer.conf
(la configuration pas défaut est OK)

Générer les statistiques :
# webalizer		(à exécuter en root pour que le programme puisse lire le fichier /var/log/httpd/access_log
			sinon changer les droits sur ce fichier)
A mettre éventuellment dans un cron.


Visualiser les statistiques :
Afficher la page web /var/www/html/stats/index.html (ou http://serveur/stats)
et cliquer sur un mois pour visualiser les infos sur ce mois

Sécurité
--------
- Suprimer l'affichage permettant l'identification du système, de la version d'apache, etc.
/etc/httpd/2.0/conf/commonhttpd.conf		=> ServerSignature Off 

- Sécurisation par login et mot de passe
voir plus loin sécurisation de PhpMyAdmin

Messagerie
==========
MUA : Mail User Agent, = client de messagerie ( = écriture et la lecture des messages)
	Exemple Kmail, thunderbird etc.
MTA : Mail Transfert Agent, pour l'expédier les messages
	Exemple : Postfix, Sendmail
MDA : Mail Delivery Agent, pour délivrer les messages dans la(les) boîte(s) aux lettres du MUA
	Exemple Procmail

Postfix
*******

Liens utiles :
http://www.postfix.org/docs.html
http://vejnar.eu.org/linux/serveur-mdk/index.html
(ou bien http://www.linux-france.org/article/mail/serveur-mdk/config.html#AEN80)
http://troumad.free.fr/Linux/Linux.sxw
http://www.jennings.homelinux.net/

NB : pour un serveur autonome (qui ne va pas chercher les messages chez un FAI), fetchmail est inutile : il ne sert que si l'on a pas une connexion permanente.

Connaître la version de posfix installée :
# postconf mail_version

Fichiers de configuration dans /etc/postfix

Lister les variables configurées :
# postconf -n

Démarrage ...
_____________
# service postfix status
		start
		restart
		stop

Simplement recharger les paramètres de configuration
----------------------------------------------------
# service postfix reload

Relayage des messages
_____________________
Postfix par défaut ne relaye pas les messages autres que celui du sous-réseau : cf documentation incluse dans le fichier de configuration main.cf.
Pour relayer les messages (déconseillé !) modifier mynetworks ou smtpd_recipient_restrictions

Configuration
_____________

/etc/postfix/main.cf
--------------------
Dans la version postfix-2.1.1-0.1.100mdk (et peut être d'autres, main.cf ne contient que les paramètres adaptés à Mandrake, ce qui fait que postfix ne peut pas fonctionner !!!

Ouvrir main.cf.dist
Copier les paramètres trouvés dans main.cf et les coller où il faut dans main.cf.dist
Renommer main.cf main.cf.mdk (par exemple) et enregistrer main.cf.dist en main.cf

La configuration par défaut de MDK10 est un peu trop restrictive. Changer :

inet_interfaces = localhost		par			inet_interfaces = localhost, $myhostname
mynetworks_style = host			par			mynetworks_style = subnet
Choisir :
smtpd_banner = $myhostname ESMTP $mail_name
plutôt que le choix par défaut :
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (Mandrakelinux)
qui donne un peu trop d'infos sur le serveur

et surtout (MDV ne le configure pas !)
(voir http://vejnar.eu.org/linux/serveur-mdk/index.html pour plus d'insfos)
---------------------------------------------------------------------------
myhostname = nom_du_serveur.nom_du domaine.fr		(fully qualified server name)
mydomain = nom_du domaine.fr
default_transport = smtp
myorigin = $myhostname					(souvent en commentaire !)
mydestination = $myhostname, localhost.$mydomain, localhost

relayhost = $mydomain					(décommenter)
defer_transports = smtp

alias_database = hash:/etc/postfix/aliases

Gestion des adresses
--------------------
Il faut définir la correspondance entre les adresses locales de type utilisateur@monserveur_de_mail et les adresses connues (ou communiquées) aux correspondants extérieurs du type Prénom.Nom@monserveur_de_mail :

Editer (si nécessaire créer) le fichier /etc/postfix/sender_canonical et le remplir avec des lignes du type
login_utilisateur	Prénom.Nom@monserveur_de_mail

De même, compléter le fichier /etc/postfix/recipient_canonical avec des lignes du type :
Prénom.Nom@monserveur_de_mail		login_utilisateur

pour indiquer à postfix que Prénom.Nom@monserveur_de_mail est un utilisateur local
Générer les fichiers DB correspondants (cf. http://www.postfix.org/canonical.5.html)
	postmap /etc/postfix/sender_canonical
	postmap /etc/postfix/recipient_canonical
Vérifier la présence des lignes suivantes dans le fichier de configuration  /etc/postfix/main.cf :
	sender_canonical_maps = hash:/etc/postfix/sender_canonical
	recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
Terminer en relançant Postfix par la commande postfix reload.

Aliases
-------
Un utilisateur (toto par exemple) déclaré au niveau du serveur (cf adduser ou userdrake) peut avoir 1 ou plusieurs alias : les déclarer dans le fichier /etc/postfix/aliases :
webmaster:		toto
bibi:			toto
Terminer en mettant à jour la base "/etc/postfix/aliases.db" par la commande newaliases.

webmaster, bibi n'ont pas besoin d'être des utilisateurs déclarés au niveau du serveur (cad avoir une entrée dans /etc/passwd ou /etc/group)

Messages à root
---------------
Root n'est pas censé recevoir des messages.
Solution, modifier le fichier /etc/postfix/aliases :
changer la ligne
root:		postfix
en
root:		un_nom_d'utilisateur_valide
pour rediriger les messages vers la messagerie de cet utilisateur
Terminer en mettant à jour "aliases.db" par la commande newaliases.

NB : avec root:		postfix, les messages sont stockés dans le fichier /var/mail/postfix


Postfix range les messages reçus dans le fichier texte /var/mail/nom_utilisateur 
On peut les visualiser grâce à la commande mail.
Mais il n'y a pas de serveur pop ou imap fourni avec postfix : pour pouvoir récupérer les messages au moyen d'un client mail quelconque (kmail ...), installer un serveur pop ou imap :

Installation de courier-imap (et imap-2002)
*******************************************
NB : imap-2002 ne supporte pas le format maildir (http://www.washington.edu/imap/IMAP-FAQs/#1.31)
Pour utiliser maildir, désintaller (s'il a été installé) imap-2002 et installer à la place courier-imap

Les fichiers de configuration sont dans /etc/courier

Après installation, démarrer le service :
# service courier-imap start

Maildirmake++ installé avec courier-imap permet de créer des Maildir
Cf. http://www.trustonme.net/didactels/174.html

Résolution des messages d'erreur
--------------------------------
"Impossible de s'authentifier. Le mot de passe est sûrement non valable.
Le serveur a répondu :
Login failed."
Le message d'erreur généré par le client mail (ici Kmail) peut n'avoir rien à voir avec le problème réel
=> Consulter les logs
# tail -f /var/log/mail/errors
Dans le cas présent :
# tail -f /var/log/mail/errors
postfix/smtpd[11324]: fatal: open database /etc/aliases.db: No such file or directory
=> Chercher où se trouve les fichiers aliases et aliases.db (probablement dans /etc/postfix), ouvrir le fichier main.cf, et corriger la ligne
	alias_maps = hash:/etc/aliases
en 
	alias_maps = hash:/etc/postfix/aliases 
Vérifier dans le fichier "aliases" que l'alias pour le login de l'utilisateur est défini, par (par exemple) :
	Fernand.Dubois@machine.fr:	toto
Recréer aliases.db
	# newaliases ou # postalias /etc/postfix/aliases
Puis recharger les paramètres de configuration
	# service postfix reload 

Autres problèmes
----------------
- les messages externes ne sont pas reçus (ça marche en local sur l'hôte)
=> vérifier les règles du firewall en local (hôte) : ports smtp (25) et imap (143) en TCP
=> vérifier EGALEMENT les règles du firewall externe.

Sauvegarde des messages enregistrés sur le serveur Postfix
----------------------------------------------------------
Les messages des utilisateurs du serveur sont dans ~/Maildir. Par exemple :
- Dossier "Inbox"		~/Maildir/cur
- Dossier "Inbox/Stages		~/Maildir/.Stages/cur
- Dossier "Inbox/Stages/Toto	~/Maildir/.Stages.Toto/cur
etc.

Horloge : mise à jour de la date et de l'heure
===============================================
http://www.traduc.org/docs/HOWTO/lecture/TimePrecision-HOWTO.html

# ntpdate -u ntp1.tuxfamily.net 	# ou autre addresse de serveur de temps
(Paquetage à installer :  ntp-client)

Pour avoir une heure plus précise
---------------------------------
Installer ntpd :
# urpmi ntpd
Vérifier si le service est damarré :
# service ntpd status
Si ce n'est pas le cas, le démarrer :
# service ntpd start

Nb : l'installation de ntpd supprime ntpdate
Modifier, si nécessaire, le fichier de configuration /etc/ntpd.conf : par détaut un pool de 12 serveur
est interrogé en rotation.

Décalage de 2 heures
--------------------
Heures différentes : système, hardware, UTC, localtime
# clock			-> donne l'heure hardware (bios, hw)
$ date			-> donne l'heure système (sys)
Pour changer :
# hwclock
cf man hwclock

Exemple :
# date
Fri Nov 18 16:54:56 CET 2005
# clock
Fri 18 Nov 2005 17:54:56 CET  -0.269160 seconds
=> hardware et system clock sont différents

# hwclock --systohc
# clock
Fri 18 Nov 2005 16:56:07 CET  -0.092826 seconds
# date
Fri Nov 18 16:56:16 CET 2005

Inversement, pour mettre l'heure hardware dans l'heure système :
# hwclock --hctosys --localtime
-- localtime pour indiquer (éventuellement) que l'heure bios est réglée sur l'huere locale
--utc temps universel (gmt)

Changement de fuseau horaire (timezone)
---------------------------------------
Il est prévu (via mcc > Système > Ajuster la date et l'heure, bouton : changer le fuseau horaire) de pouvoir le changer, mais cette option ne semble pas fonctionner.

Utiliser plutôt la méthode http://www.wikihow.com/Change-the-Timezone-in-Linux :
Les différents fuseaux horaires sont des fichiers que l'on trouve dans /usr/share/zoneinfo
Pour la France (Paris) :
# cp /usr/share/zoneinfo/Europe/Paris /etc/localtime
Puis resynchroniser l'horloge hardware
# hwclock --systohc
Nb: si cron continue à fonctionner sur l'ancienne heure (dû à l'oubli de "hwclock --systohc" ?) on peut le resynchroniser :
# service crond restart

Tuer une session X
==================
<Alt Crtl Backspace>

Carte son
=========

Statut des modules son dans le kernel
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
# lsmod | grep -i snd

Connecteurs de la carte son
°°°°°°°°°°°°°°°°°°°°°°°°°°°
Code de couleur en principe standard :
- vert		sortie haut-parleurs (Line out / Speaker output)
- rose		entrée microphone  (Mic)
- bleu		entrée d'une source son dans l'ordinateur (Line in)

Carte son, pilotes
°°°°°°°°°°°°°°°°°°
mcc indique 2 pilotes possibles pour la carte son.
Par exemple, pour la carte VT82C686 [Apollo Super AC97/Audio]:
snd-via82xx			-> pilote ALSA
via82cxxx_audio			-> pilote OSS
Pour changer de pilote : appuyer sur la barre "Run config tool
Pour que le changement soit effectif, il faut redémarrer le système.
Commande pour éviter de redémarrer : ?

Test de la carte son
********************
# lspcidrake -v | fgrep -i AUDIO		-> driver par défaut
# grep sound-slot /etc/modprobe.conf		-> "	  actuel
# /sbin/lsmod					-> teste si le driver est chargé
# /sbin/chkconfig --list sound			-> teste si les services sound et
# /sbin/chkconfig --list alsa			   alsa sont configurés pour fonctionner en initlevel 3
# aumix -q					-> volume on/off
# /sbin/fuser -v /dev/dsp			-> quel programme utilise la carte son

Bugs :

MDK10, carte MSI Neo FISR, le pilote installé (snd-intel8x0) est incorrect; le remplacer par celui que Knoppix, lui, autodétecte correctement, i810_audio :
# mcc > harware > Soundcard 82801EB AC'97 Audio > Run config tool > Driver

Réglage des entrées/sorties son, contrôle du son
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
aumix ou mieux kmix.

kmix
++++
Si nécessaire urpmi kmix

Boutons (LED) verts et rouges
-----------------------------
Mute : 			bouton vert éteint
Déselectionné		bouton rouge éteint

Volet output
************
Les icônes (triangles en haut à gauche et à droite, signal bleu etc.) n'ont aucun effet. Avec le bouton droit de la souris on obtient cependant un menu contextuel permettant différents réglages. Idem en cliquant sur le curseur.
Bouton vert allumé : indique quel son est émis

Master
------
Règle le niveau du son en sortie

3D Control-Center
-----------------
Voir Volet Switches, "3D control switch" : il faut que la LED jaune soit allumée pour que ce contrôle fonctionne
Semble cependant ne pas avoir d'effet sur le son

3D Control-Depth
----------------
Le fait de pousser le curseur vers le haut supprime les basses (son plus "sec")

PCM
---
= Pulse Code Modulation (technique d'échantillonnage pour digitaliser les signaux analogiques)
Même effet que Master !!
Pour avoir du son il faut que les LEDS vertes Master et PCM soient allumées

PC Speaker
----------
Règle probablement le niveau du son du haut-parleur intégré au PC.

Volet input
***********
- Les LEDS vertes redirigent les entrées vers la sortie : donc en principe elles doivent être éteintes, sauf par exemple si l'on veut rapidement tester si un microphone fonctionne (si on parle dans le micro, on s'entend dans les écouteurs) 
- LEDS rouges : entrée en on/off

Capture est l'équivalent de PCM sur le volet input ; si la LED rouge est éteinte, aucune entrée fonctionne

Line
----
Correspond sans doute à l'entrée Line (connecteur bleu sur la carte).

CD
__
son provenant du CD/DVD

Mic
---
Entrée micro (entrée couleur rose sur la carte son)
Allumer la LED verte pour que le son passe.
LED rouge allumée ou non : pas de différence !!

Phone
-----
?

Aux
---
?

Capture
-------
?

Volet Switches
°°°°°°°°°°°°°°

3D control switch
-----------------
Allumer la LED jaune pour l'effet 3D.

Mic Boot (+20dB)
----------------
Augmente beaucoup la sensibilité du micro

Video
-----
?

Mix
---

?
Mix Mono
---
?

External Amplifier
------------------
?

Enregistrer des sons
--------------------
Audacity


Interface réseau
================
http://rak.isternet.sk/linux-netman/commands.html	Linux Network Commands
http://www.cryptos.ch/article.php3?id_article=38

Vérification - réglage de la carte réseau
-----------------------------------------
mii-tool

Carte ethernet : si ethernet ne démarre pas, vérifier dans :
/etc/sysconfig/network-scripts/ifcfg-eth0
que ONBOOT est à yes (et pas no)

Configuration
-------------
# netcardconfig	(knoppix, debian, kanotix ...)
Rem : avec kanotix, pour quitter le programme netcardconfig, cliquer sur le X en haut à doite de la fenêtre.
# draknetcenter	(Mandriva)
ou
# drakconnect
ou passer par :
# mcc
NB : la configuration par mcc peut ne pas fonctionner : vérifier avec ifconfig si les paramêtres entrés
par mcc sont bien pris en compte. Si ce n'est pas le cas  Dans ce cas configurer /etc/sysconfig/network-scripts (voir ci-dessous)

Statut des interfaces actives
-----------------------------
ifconfig eth0		-> statut de l'interface eth0
ifconfig eth0 down	-> arrêter l'interface eth0
ou ifdown eth0
ifup eth0		-> redémarrer l'interface eth0 (et non pas ifconfig eth0 up, voir le man, intéressant)

Paramétrage temporaire (il disparaît au reboot de la machine)
-------------------------------------------------------------
Attention : le paramétrage effectué avec ifconfig disparaît au reboot de la machine.
Pour un paramétrage persistant :
# drakconnect
ou bien encore mieux, voir /etc/sysconfig/network-scripts ci-dessous

Avec la commande ifconfig, entrer l'adresse IP, le masque de sous-réseau, l'adresse de diffusion (broadcast)
# ifconfig eth0 <AdresseIP> netmask 255.255.255.0 broadcast <IPdeBroadcast, e.g. xxx.xxx.xxx.255> up

Broadcast : idem adresse IP, mais se termine par 255 dans le cas d'un masque de sous réseau 255.255.255.0 (CIDR 24) ou 127 dans le cas d'un masque 255.255.255.128 (CIDR 25)

Routage
-------
Configurer le routage vers la passerelle avec route - la machine passerelle permet de sortir sur internet (gateway) :

# route add default gw <AdresseIPduGateway>

Pour un paramétrage permanent
-----------------------------
Entrer les bons paramètres dans les fichiers qui se trouvent dans :
/etc/sysconfig/network-scripts les fichiers :
ifcfg-eth0
ifcfg-eth0:x (les alias !)

Entrer à la main les valeurs voulues :
- Pour une adresse fixe (static)
................................
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.xx.
NETMASK=255.255.255.128 (si masque de sous réseau=255.255.255.128 cad CIDR=25 par exemple)
NETWORK=192.168.xx.0
BROADCAST=192.168.xx.127 (si masque de sous réseau=255.255.255.128 cad CIDR=25 par exemple)
GATEWAY=192.168.xx.126 (addresse de la passerelle de sortie, par exemple)
ONBOOT=yes
DOMAIN=<nom des domaines par défaut>

- Pour une adresse allouée par dhcp
...................................
DEVICE=eth0
BOOTPROTO=dhcp
NETMASK=255.255.255.0
ONBOOT=yes
METRIC=10
DOMAIN=<nom des domaines par défaut>

Puis arrêter (ifconfig eth0 down) et redémarrer (ifup eth0)
Enfin vérifier que les valeurs entrées ont été prises en compte (ifconfig).

3 - Mettre l'adresse des serveurs de nom dans /etc/resolv.conf
	nameserver <IP du 1° DNS>
	nameserver <IP du 2° DNS>
....
e.g	nameserver	192.168.1.25

Domaine par défaut (Search Domain), mettre aussi :
search nom_du_domaine1 nom_du_domain2 ...
pour éviter d'avoir à taper le nom complet des machines du domaine local ou des domaines à contacter fréquemment.

Attention ! dans les nouvelles versions de Mandriva, un message indique que resolv.conf ne doit pas être modifié à la main. Utiliser la commande "resolconf".
Le plus simple :
- mettre la configuration voulue dans le fichier /var/run/resolvconf/interface/eth0	(ou autre interface utilisée)
- # resolvconf -u	pour mettre à jour /etc/resolv.conf

4 - Nom de la machine : à mettre dans /etc/sysconfig/network
	HOSTNAME=nom-machine
	NETWORKING=yes

Nom de la machine (hostname), "DNS" local 
------------------------------------------
Avant de consulter les DNS, les programmes réseau trouvent les adresses dans le fichier /etc/hosts :
	IPAddress    		Hostname		Alias (faculatatif)		Alias
	127.0.0.1		titi.u-strasbg.fr	titi				localhost
	130.79.200.1		ns1.u-strasbg.fr	ns1
	
Pour modifier le nom de la machine en "tutu" :
- modifier dans /etc/hosts :
	le champ "Hostname" en "tutu.u-strasbg.fr" (et le suivant en "tutu")
- modifier dans /etc/sysconfig/network
	HOSTNAME=tutu.u-strasbg.fr
- Redémarrer le réseau :
	# service network restart

Knoppix
-------
netcardconfig

Debian
------
Paramétrage permanent :
cf. 	http://david.decotigny.free.fr/libre/ ibook2-debian/etc/network/interfaces
	http://www.debian.org/doc/manuals/reference/ch-gateway.en.html

Editer /etc/network/interfaces :
iface eth0-0 inet static
	address 192.168.0.23
	netmask 255.255.255.0
	network 192.168.0.0			(facultatif)
	broadcast 192.168.0.255
	gateway 192.168.0.3
	dns-nameservers 192.168.0.3 130.28.12.3

Désactiver eth0 : ifconfig eth0 down
Activer (lecture de /etc/network/interfaces) : ifconfig eth0 up
Tester :
ping 192.168.0.3
ping www.google.fr
Si pas de réponse, redémarrer le réseau :
# /etc/init.d/networking restart
et refaire les tests.

Affichage / modification des paramètres de l'interface réseau
-------------------------------------------------------------
ethtool

snmp (imprimantes en particulier)
-----------------
snpm = Simple Network Management Protocol
cf. http://www.cisco.com/univercd/cc/td/doc/cisintwk/ito_doc/snmp.htm#xtocid1
snmpwalk query a network entity for a tree of information (cf. man snmp)
Exemple : pour voir les infos d'une imprimante :
$ snmpwalk -v 1 -c public nom_ou_IP_de_l'imprimante -system

Moniteurs de réseau (network monitoring)
---------------------------------------
- iptraf
Après installation, le mode d'emploi de iptraf est dans : /usr/share/doc/iptraf-2.7.0/Documentation/menus.html

- net_applet

Affichage/modification du cache ARP (address resolution protocol)
-----------------------------------------------------------------
# arp
Cette commande, non suivie d'options, liste les adresses des machines qui sont dans le cache ARP : en général la machine hôte, le routeur et les machines connectées à l'hôte. Pour faire apparaitre une autre machine, faire par exemple un ping vers cette machine et relancer la commande arp.

Outils réseau
-------------
gnome-nettool

Wifi
====
http://www.steletch.org/spip.php?article46&var_recherche=wifi
# iwlist wlan0 scan

Bridge
======
Administration : brctl
# brctl showmacs		liste les adresses mac connues
Pour voir si une machine est derrière le firewall :
# brctl showmacs br0 |grep -i adresse_mac
(adresse_mac aura auparavant été récupérée en faisant un ping sur la machine et en lançant arp ensuite). Attention arp retourne les adresse en majuscules, alors que brctl les donne en minuscules, d'où grep -i)

Changer de module
=================
Exemple : dans le cas du module pilote de l'interface ethernet, pour remplacer driver1 par driver2 :
remplacer dans /etc/modules.conf ou dans /etc/modprobe.conf
(NB : noyau 	2.4 => /etc/modules.conf
		2.6 => /etc/modprobe.conf)
la ligne :
	alias eth0 driver1
par
	alias eth0 driver2

ou, pour des tests rapides
# service network stop
# rmmod driver1			(supprime le driver1)
# modprobe driver2		(mettre à la place le driver2)
# service network restart

Interfaces réseau inversées suite à un changement de carte mère 
----------------------------------------------------------------
Suite à un changement par exemple de carte mère, on peut retrouver le port ethernet en eth1 au lieu de eth0 et le port firewire (IEEE1394) en eth0 au lieu de eth1.
Solutions :
Mandrake
--------
- modifier les alias dans /etc/modprobe.conf cf. ci-dessus
Debian/Knoppix, plusieurs solutions (à essayer) :
-------------------------------------------------
- nameif ou ifrename pour changer le nom des interfaces réseau
- désactiver le port firewire dans le bios (si pas utilisé !)
- dans /etc/modprobe.conf : "alias eth1394 off"
- echo "eth1394" >> /etc/hotplug/blacklist
- dans /etc/modprobe.conf : install eth1394 { /sbin/modprobe sk98lin; /sbin/modprobe --ignore-install eth1394; }
(cas d'une interface réseau yukon avec pilote sk98lin par exemple)

Modem
=====
Installation réseau / modem
#drakconnect
Configurer les accès réseau
Pour le modem :
lancer (ou installer si ce n'est déjà fait et lancer) kppp

Le débit est beaucoup plus lent que sous windows.
D'après http://forums.knoppix-fr.org/viewtopic.php?id=9564
on peut améliorer avec :
- contrôle logiciel du flux au lieu du contrôle matériel
- vitesse de connexion à 115200
A vérifier !

Serveur web
===========
Placer le fichier de départ (Fichier par défaut : index.html) dans :
/var/www/html

Créer les utilisateurs et groupes
=================================
Gestion des utilisateurs : http://support-info.fr/articles.php?lng=fr&pg=128

# userdrake
useradd, cf. http://www.ahinc.com/linux101/users.htm#Adding a new user
# useradd	-d home directory
		-s starting program (shell)
		-p password
		-g (primary group assigned to the users)
		-G (Other groups the user belongs to)
		-m (Create the user's home directory
Voir aussi usermod, userdel, passwd
Informations stockées dans /etc/passwd et /etc/group

Ajouter un utilisateur à un groupe (en ligne de commande)
--------------------------------------------------------
# usermod -G NomDuGroupe NomUtilisateur
ou bien éditer /etc/group (les utilisaturs sont séparés par des virgules)
 
Afficher l'identité de l'utilisateur et son appartenance à des groupes
----------------------------------------------------------------------
id
groups

ATTENTION ! après affectation d'un utilisateur à un groupe, il faut que celui-ci se reconnecte pour que la modification soit prise en compte dans sa session !! 

Mots de passe et infos utilisateur
==================================
cf. http://www.tldp.org/LDP/lame/LAME/linux-admin-made-easy/shadow-file-formats.html
Voir /etc/password
Les mots de passe cryptés sont stockés dans /etc/shadow :

The ``/etc/shadow'' file contains password and account expiration information for users, and looks like this:
smithj:Ep6mckrOLChF.:10063:0:99999:7:::
As with the passwd file, each field in the shadow file is also separated with ":" colon characters, and are as follows:

Username,
up to 8 characters. Case-sensitive, usually all lowercase. A direct match to the username in the /etc/passwd file.

Password,
13 character encrypted. A blank entry (eg. ::) indicates a password is not required to log in (usually a bad idea), and a ``*'' entry (eg. :*:) indicates the account has been disabled.

The number of days (since January 1, 1970) since the password was last changed.

The number of days before password may be changed (0 indicates it may be changed at any time)

The number of days after which password must be changed (99999 indicates user can keep his or her password unchanged for many, many years)

The number of days to warn user of an expiring password (7 for a full week)

The number of days after password expires that account is disabled

The number of days since January 1, 1970 that an account has been disabled

A reserved field for possible future use

Changer le mot de passe
-----------------------
$ passwd
et répondre aux questions

Sinon :
K > System > Configuration > Control Centre > Security & Privacy > Password & User Account
Ou plus simple :
$ kcontrol 
	puis Security & Privacy > Password & User Account

Vérouiller un mot de passe
--------------------------
# passwd -l <user>
Locking password for user <user>.
passwd: Success

Dévérouiller
------------
# passwd -u <user>
Unlocking password for user <user>.
passwd: Success.

Supprimer le mot de passe
-------------------------
# passwd -d <user>
Removing password for user <usser>.
passwd: Success

Créer/changer le mot de passe d'un utilisateur
----------------------------------------------
# passwd <user>
et répondre aux questions.

Supprimmer l'utilisateur par défaut (dont la session s'ouvre sans mot de passe !), autologin
Démarrer/ne pas démarrer avec l'interface graphique
--------------------------------------------------------------------------------------------
 # mcc
Aggrandir, si nécessaire la fenêtre de façon à voir tous les boutons.
Cliquer sur le bouton [BOOT] (le dernier en bas de la fenêtre) et configurer.

Créer un nouvel utilisateur sous KDE
====================================
# userdrake

Connaître les utilisateurs connectés
====================================
w

Copie de fichiers
-----------------
scp utilisateur@PCsource:fichiersource nom_utilisateur@PCdestination:fichier_destination

Possibilité de changer à la volée le type de codage : 3des (défaut), blowfish, des
En cas de machine ou réseau lent :
scp -c blowfish (la suite comme ci-dessus)


Infos système
=============
uname -a
Retourne les infos système (kernel, machine, etc...)

Information sur les périphériques SCSI et USB :
----------------------------------------------
	cat /proc/scsi/scsi

Périphériques USB (et autre ieee ?)
===================================
usbview

Hotplug est le service qui permet de connecter à chaud des périphériques et de les utiliser immédiatement (cf. http://linux-hotplug.sourceforge.net). 
Vérifier si le noyau est prévu avec hotplug :
$ cat /proc/sys/kernel/hotplug
/sbin/hotplug

En cas de problème, quelques contrôles
------------------------------------- 
http://www.linux-usb.org/

- Voir si hotplug est installé
# cat /proc/sys/kernel/hotplug
/sbin/hotplug

- Voir s'il a fonctionné : il doit y avoir un répertoire usb dans /proc/bus/usb
# ls /proc/bus
input/  pci/
(pas de répertoire usb !)

- Voir le statut du service hotplug
# /etc/rc.d/init.d/hotplug status | grep -i usb
USB Status for kernel:  Linux 2.6.8.1-12mdk i686
usbfs is unavailable.
USB may be statically linked.
If khubd is running, that shows USB is available.

- Voir si khubd tourne :
# ps aux |grep khubd
root      7162  0.0  0.0     0    0 ?        S    14:36   0:00 [khubd]

- Voir les éventuels messages d'erreur au lancement de hotplug
# /etc/rc.d/init.d/hotplug restart
/etc/hotplug/usb.rc: line 230: [: -lt: unary operator expected

- Vérifier si le périphérique USB est détecté
Connecter/déconnecter le périphérique. Des messages système sont envoyés. Les visualiser avec l'une ou l'autre des commandes suivantes :
# dmesg
# tail -f /var/log/syslog
(MDK : les mêmes messages apparaissent avec dmesg et tail
Knoppix : les messages ne sont visibles qu'avec dmesg)
Exemple, dans le cas d'un USB qui fonctionne :
# dmesg
.....
usb 1-1: new full speed USB device using address 2
SCSI subsystem initialized
Initializing USB Mass Storage driver...
scsi0 : SCSI emulation for USB Mass Storage devices
  Vendor: IC35L060  Model: AVVA07-0          Rev: VA3O
  Type:   Direct-Access                      ANSI SCSI revision: 02
USB Mass Storage device found at 2
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
SCSI device sda: 120103200 512-byte hdwr sectors (61493 MB)
sda: assuming drive cache: write through
 /dev/scsi/host0/bus0/target0/lun0: p1 p2
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0

- Si rien ne fonctionne :
Vérifier la présence (ou rajouter à la main) ces 2 lignes dans /etc/modprobe.conf
	install usb-interface /sbin/modprobe usb-uhci; /sbin/modprobe
	ehci-hcd; /bin/true
Créer ou éditer /etc/modprobe.preload et mettre (si cela n'y est pas), une ligne :
	usb-storage


Trouver le device utilisé par un périphérique et monter ce périphérique
------------------------------------------------------------------------
	cat /proc/scsi/scsi
Repérer dans le résultat de cette commande ce qui correspond au périphérique recherché, par exemple
	Host: scsi1 Channel: 00 Id: 00 Lun: 00
  	Vendor: PIONEER  Model: DVD-RW  DVR-105  Rev: 1.00
  	Type:   CD-ROM
Chercher avec Konqueror dans le répertoire /dev/scsi le device correspondant, dans ce cas :
	/dev/scsi/host1/bus0/target0/lun0/cd

Monter le périphérique :
	mount -t iso9660 /dev/scsi/host1/bus0/target0/lun0/cd /mnt/dvd

Mettre dans /etc/fstab la commande ad hoc

USB avec diskdrake
--------------
Lancer diskdrake
Un disque usb apparaît généralement comme disque sda, les partitions comme sda1, sda2, etc.
Monter le disque à partir de diskdrake, ou mieux créer à la main les entrées ad-hoc dans fstab
(diskdrake réorganise tout fstab et supprime les commentaires éventuels qui auraient pu y être écrits !)

Trouver le device utilisé par un périphérique
---------------------------------------------
mcc > Hardware > hardware list

Voir et monter les disques
--------------------------
 A condition que fstab soit correct, kdf permet de monter/démonter les disques
 et voir le % d'utilisation de chaque disque.

Mise à jour des menus
=====================
$ update-menus
Si ça ne marche pas (voir BUGS en fin de man update-menus) :
# update-menus
Pour que les menus soient mis à jour, relancer X (KDE)

Voir aussi les fichiers ".desktop" dans /usr/share/applications/

Modification "à la main" du menu K
----------------------------------
Clic droit sur K > Menu Editor
ou en ligne de commande :
$ kmenuedit

Spécifique debian
=================

Installer un programme:
--------------------------
dselect


Changement de résolution écran
==============================
Xdrakres


Samba
=====

Version installée
-----------------
$ net -V
ou
$ net --version

Aide
----
# samba help
# samba --help
Usage: /usr/sbin/samba {start|stop|restart|status|condrestart}

- "Voisinage réseau"
--------------------
$ findsmb
# findsmb

(Nb : sous MDV 2007 findsmb s'appelle mainteantn findsmb3
$ findsmb3
sh: /usr/bin/nmblookup: No such file or directory
=> petit bug facile à corriger :
$ sudo ln /usr/bin/nmblookup3 /usr/bin/nmblookup)

$ smb4K (Samba browser pour KDE)
Idem ci-dessus : dans MDV 2007 :
"the following programs missing on your system:
smbclient, smbspool"
Même correction :
$ sudo ln /usr/bin/smbclient3 /usr/bin/smbclient
$ sudo ln /usr/bin/smbspool3 /usr/bin/smbspool

$ LinNeighborhood

Sous konqueror : smb:/
Sous konqueror : lan:/	(les "Workgroups" ne sont pas affichés)

- Tester l'état du service samba
--------------------------------
# service smb status
smbd (pid 2114) is running...
nmbd (pid 2124) is running...

ou bien

# samba status
smbd (pid 7403 7393) est en cours d'exéution...
nmbd (pid 7407) est en cours d'exécution...

- Démarrer, redémarrer
----------------------
start, restart
# service smb restart
Shutting down SMB services:                                     [  OK  ]
Shutting down NMB services:                                     [  OK  ]
Starting SMB services:                                          [  OK  ]
Starting NMB services:                                          [  OK  ]

ou bien
# samba start

Se connecter à une disque Windows externe
-----------------------------------------
$ smbclient //pc/partage
smb: \>
$ smbclient //pc/partage -U <login_sur_le_pc>
smb: \>

Monter un disque Windows externe
--------------------------------
"toto" est l'utilisateur Windows :

En simple utilisateur :
$ mkdir -p ~/mnt/disk
$ smbmount //nom-machine_ou-N°IP/nom_partage ~/mnt/disk
$ smbmount //nom-machine_ou-N°IP/nom_partage ~/mnt/disk -o username=toto

Pour démonter, en simple utilisateur :
$ smbumount ~/mnt/disk


En root avec la commande mount :
# mount -t smbfs //nom-machine_ou-N°IP/nom_partage /mnt/disk
# mount -t smbfs -o username=toto //nom-machine_ou-N°IP/nom_partage /mnt/disk
(sous MDV 2007 :
# mount -t cifs -o username=toto //nom-machine_ou-N°IP/nom_partage /mnt/disk)

Pour autoriser l'utilisateur (linux) "bibi" à accéder au montage : 
# mount -t smbfs -o username=toto,users,uid=bibi  //nom-machine_ou-N°IP/nom_partage /mnt/disk

ou si on préfère, dans fstab (ici avec le mot de passe en clair, beurk !) :
//nom_machine/nom_partage /point/de/montage smbfs username=toto,password=le_mot_de_passe

ou encore avec login et mot de passe dans un fichier accessible uniquement par root et contenant :
username = toto
password = le_mot_de_passe

# mount -t smbfs -o credentials=/le/nom/de/ce/fichier //nom-machine_ou-N°IP/nom_partage /mnt/disk

idem pour fstab :
//nom_machine/nom_partage /point/de/montage smbfs -o credentials=/le/nom/de/ce/fichier

- Partager un répertoire (c.a.d. pouvoir accéder, à partir d'un PC Windows, à un répertoire résidant sur le PC linux )
-------------------------------------------------------------------------------------------------------
Editer le fichier de configuration /etc/samba/smb.conf et ajouter le répertoire à partager selon les exemples donnés dans ce fichier (voir à la fin du fichier).
Vérifier éventuellement s'il n'y a pas d'erreur dans le fichier smb.conf :
# testparm

Relancer samba pour prendre en compte les modifications
# samba restart
ou encore :
# service smb restart

Samba n'utilise pas les mots de passe du système. Il a son propre fichier de mots de passe (/etc/samba/smbpasswd)
Entrer le nom d'utilisateur et son mot de passe (sera mémorisé crypté dans /etc/samba/smbpasswd)
# smbpasswd -a NomUtilisateur
et répondre aux questions (c'est à dire entrer 2 fois le mot de passe)

NB : il faut que "NomUtilisateur" ait un compte sur la machine, sinon smbpasswd répond : "Failed to modify password entry for user NomUtilisateur"

Voir quels sont les utilisateurs pourvus d'un mot de passe :
# cat /etc/samba/smbpasswd

Vérifier que le fichier de mots de passe est bien en lecture/écriture _uniquement_ pour root :
$ ls -al /etc/samba/smbpasswd
-rw-------    1 root     root          102 Jan  3  1996 /etc/samba/smbpasswd
Si ce n'etait pas le cas, mettre les droits corrects :
# chmod 600 /etc/samba/smbpasswd
Il est inutile de relancer samba pour que les nouveaux mots de passe soient pris en compte.

Se connecter à partir du PC windows.
Erreur "incorrect password or unknown username" => vérifier que le mot de passe des utilisateurs potentiels a été entré, cf. smbpasswd ci-dessus.

Sous W$ :
"Attempt to connect to \\serveur_linux\Repertoire_partagé"
"The network path \\serveur_linux\Repertoire_partagé could not be found"
=> vérifier que le firewall ne bloque pas la connexion.
Par exemple, avec shorewall, rajouter dans /etc/shorewall/rules
	AllowSMB	net	fw
et redémarrer shorewall (sudo shorewall restart)

Le partage peut également être fait à partir de konqueror : pointer le fichier, click droit, propriétés, partage ; mais c'est finalement plus compliqué et moins précis dans les permissions que d'éditer le fichier smb.conf.

Problème de différence de jeux de caractères entre Linux et Windows
-------------------------------------------------------------------
Peut se régler dans /etc/samba/smb.conf
Voir paragraphe "File Naming Options:" et "Enabling internationalization:"
Exemple :
	dos charset = 1252
	case sensitive = Yes
	unix charset = ISO8859-15
(à adapter suivant les systèmes utilisés)
Documentation :http://us1.samba.org/samba/docs/man/Samba-HOWTO-Collection/unicode.html

Netatalk (réseau Mac Intosh)
============================
http://www.megaoctet.net/howto_netatalk.pdf
http://www.mandrakeuser.org/docs/connect/cnatalk.html
http://netatalk.sourceforge.net

Doc locale :
------------
/usr/share/doc/netatalk-x.x.x

Version
-------
# atalkd -v

Paramétrage et utilisation de netatalk
______________________________________

Démarrer/arréter le serveur ...
service atalk 	start
		restart
		stop
		status

(Debian : /etc/init.d/netatalk start)

Pour savoir si netatalk fonctionne et avoir la liste des MACS accessibles :
nbplkup

Le service est très long à démarrer (~ 30 secondes). Pour éviter d'avoir à attendre lors du reboot de la machine changer dans /etc/netatalk/netatalk.conf :
ATALK_BGROUND=no en ATALK_BGROUND=yes
(Debian : /etc/default/netatalk)

Les services :
	papd:	AppleTalk printer daemon (pap = Printer Access Protocol)
	atalk:	atalk - AppleTalk protocol family
		atalkd - AppleTalk RTMP, NBP, ZIP and AEP manager
			RTMP - Routing Table Maintenance Protocol
			NBP - Name Binding Protocol
			ZIP - Zone Information Protocol
			AEP - AppleTalk Echo Protocol
	afpd:	AFP = AppleTalk Filing Protocol

Configuration
______________
Fichiers de configuration dans /etc/netatalk

Autoriser l'accès aux répertoires
---------------------------------
/etc/netatalk/AppleVolumes.default

Créer sur le serveur un/des volume(s) accessibles par les Mac -> ajouter dans le fichier /etc/netatalk/AppleVolumes.default
#Nom du partage sur le serveur		Nom du partage présenté au Mac		login des utilisateurs et/ou groupes  autorisés
/shares/Mac_Pub 			"Zone commune MAC-PC"		allow:toto,  groupe_truc

Autoriser la connexion en "guest" (invité)
------------------------------------------
 /etc/netatalk/afpd.conf
 
 Ajouter :
-uamlist uams_guest.so
dans le fichier de configuration /etc/netatalk/afpd.conf

Autoriser l'accès avec login et mot de passe
--------------------------------------------
Créer (ou utiliser le login) d'un utilisateur Linux (# userdrake)
Le mot de passe pour netatalk est celui de cet utilisateur

NB : dans l'installation du rpm netatalk-1.6.4xxx.mdk la ligne (dans le fichier /etc/netatalk/afpd.conf) :
- -transall -uamlist uams_dhx.so -nosavepassword
désactive le mot de passe en clair ce qui fait que sans ajout sur les Macs des outils ad-hoc de cryptage il est impossible de se connecter.

Pas très sécurisé, mais acceptable derrière un firewall : mettre en commentaire la ligne :
- -transall -uamlist uams_dhx.so -nosavepassword -noslp
pour que les valeurs par défaut :
- -transall -uamlist uams_clrtxt.so,uams_dhx.so -nosavepassword
 soient utilisées (cf. le commentaire dans le fichier)

Droits d'accès
--------------
Ne pas oublier d'autoriser l'accès à ce(s) volume(s) :
-> mettre les droits ad-hoc sur le(s) volume(s) partagé(s)

Interdire l'accès au Home directory
-----------------------------------
/etc/netatalk/AppleVolumes.default

Dans AppleVolumes.default, en fin de fichier supprimer ou mettre en commentaire le ~

Ports utilisés par AppleTalk
----------------------------
cat /etc/services | grep -i apple
at-rtmp         201/tcp                         # AppleTalk routing
at-nbp          202/tcp                         # AppleTalk name binding
at-echo         204/tcp                         # AppleTalk echo
at-zis          206/tcp                         # AppleTalk zone information
echo            4/ddp                           # AppleTalk Echo Protocol

En fait il semble qu'il ne soit nécessaire d'ouvrir que le port 548 :
AppleTalk Filing Protocol (AFP)  548	TCP (UDP ne semble pas indispensable)

Installation de netatalk (netatalk-2.0.1) sur MDK 9.1 (et autres versions de MDK ?)
______________________________________________________________________
- Télécharger la dernière version de netatalk (en l'occurrence netatalk-2.0.1.tar.bz2) sur :
http://netatalk.sourceforge.net/

- Décompresser :
tar -jxvf netatalk-2.0.1.tar.bz2

Le mode d'emploi (mal foutu, opinion personnelle) est dans netatalk-2.0.1/doc

- Installer Berkeley DB
Comme indiqué dans la doc de netatalk Berkeley DB version 4.1.25 ou 4.2.52 doivent être présents. Si ce n'est pas le cas, récupérer les sources (db-4.2.52.tar.gz) sur le site http://www.sleepycat.com/download/db/index.shtml
Décompresser.
Lire la doc : son installation est très bien expliquée et ne pose aucun problème.
NB : j'ai essayé la dernière version Berkeley DB (4.3) : netatalk-2.0.1 la refuse à la compilation.

- Installer netatalk :
# ./configure --with-bdb=/usr/local/BerkeleyDB.4.2/include --enable-redhat

* Avec --with-bdb il faut passer le path du répertoire contenant db.h (sinon on obtient un message d'erreur indiquant que Berkeley DB n'a pas été trouvé)
* Configurer avec --enable-redhat ce qui permet une installation des scripts de démarrage au bon endroit (/etc/rc.d/init.d/)

Puis
# make
# make install

Le login et le mot de passe sur Apple sont ceux d'utilisateurs déclarés sur la machine Linux.
Ne pas oublier de mettre les bons droits d'accès (Linux) sur les partages qui sont déclarés dans AppleVolumes.default.

Les fichiers de configuration sont dans /usr/local/etc/netatalk (et non pas dans /etc/netatalk) comme avec la version rpm de netatalk-1.6xxx.

Configurer les fichiers AppleVolumes.default et afpd.conf à sa convenance :
- afpd.conf
On peut laisser tout en commentaires comme ci-dessous ou modifier la dernière ligne à sa convenance :
# default:
# - -transall -uamlist uams_clrtxt.so,uams_dhx.so -nosavepassword

- /etc/netatalk/netatalk.conf
Pas grand chose à modifier non plus, si ce n'est supprimer éventuellement des services inutiles et mettre :
# Control whether the daemons are started in the background
ATALK_BGROUND=yes
pour éviter l'attente (~ 30 sec) au démarrage des services netatalk.

- /etc/netatalk/AppleVolumes.default
Y déclarer les volumes à partager (1 ligne unique par volume) de la façon suivante :
/chemin/vers/partage	"partage sur monserveur"	allow:toto, groupe_truc	dbpath:/chemin/vers/partage

* /chemin/vers/partage	: chemin vers le volume accessible
* "partage sur monserveur" : chaîne de caractères qui s'affiche sur le mac, à mettre entre "" s'il y a des espaces
* allow:toto, groupe_truc : utilisateurs et groupes autorisés
* dbpath:/chemin/vers/partage : emplacement où netatalk crée automatiquement un répertoire .AppleDB dans lequel il stocke les bases de données.


ATTENTION !!!
Pour une raison incompréhensible il existe déjà un répertoire .AppleDB à cet endroit (avec les droits rw pour les utilisateurs déclarés) qui bloque la connexion à /chemin/vers/partage !? Le partage apparaît dans le sélecteur du Mac mais il n'est pas possible d'y accéder (partage en grisé non cliquable ou message d'erreur).
Ma solution : renommer .AppleDB en n'importe quoi (.AppleDB.bak par exemple) et mettre comme cible de dpath /chemin/vers/partage : un nouveau .AppleDB est recréé au même endroit et tout fonctionne correctement.

(Re)lancer netatak :
# service atalk restart

Installation de Netatalk sur une MDV LE 2005 à partir des rpm
-------------------------------------------------------------
Problème observé avec netatalk (version 2.0.1-1.mdk ou 2.0.3-3.mdk)
- client Mac OS 8.1 : met une bonne minute à répondre "No response from the server"
- client Mac OS9.2 : affiche indéfiniement la fenêtre "Connection status, Connecting nom_du_serveur" : il faut alors appuyer sur "Cancel" pour avoir un message "Switching back to Appletalk" et pouvoir se connecter au serveur.

Cause : connexion bloquée par le firewall, cf. ci-dessous

Installation de Netatalk 2.0.3 à partir des sources
------------------------------------------------------
Installer BerkeleyDB.4.2 comme décrit ci-dessus.
Après installation de BerkeleyDB.4.2, la compil de netatalk 2.0.3 pose problème :
$ ./configure --with-bdb=/usr/local/BerkeleyDB.4.2/include/ --enable-redhat
....
checking for Berkeley DB link (-ldb-4.2)... no
checking for Berkeley DB link (-ldb42)... no
...
configure: error: Berkeley DB library required but not found!

Pour que la librairie soit trouvée :
$ ./configure --with-bdb=/usr/local/BerkeleyDB.4.2/include/ --libdir=/usr/local/BerkeleyDB.4.2/lib/ --enable-redhat

La suite se passe sans problème.
Après avoir configuré comme indiqué ci-dessus les fichiers :
	/usr/local/etc/netatalk/netatalk.conf
	/usr/local/etc/netatalk/AppleVolumes.default
	/usr/local/etc/netatalk/afpd.conf
relancer netatalk, non pas avec :
# service atalk restart
qui génère une série d'erreurs :
"Unregistering nom_serveur:Workstation: Can't unregister nom_serveur:Workstation@*
                                                                [ECHEC ]
  Unregistering nom_serveur:netatalk: Can't unregister nom_serveur:netatalk@*
                                                                [ECHEC ]
  Stopping atalk:                                               [  OK  ]
  Stopping afpd:                                                [ECHEC ]
  Stopping cnid_metad:                                          [ECHEC ]"
mais par :
# service atalk stop
# service atalk start

Penser, en cas de blocage du client, à un problème de firewall !

Netatalk et firewall
--------------------
Pour voir quels sont les ports à ouvrir :
# tail -f /var/log/messages
Repérer les accès refusés. En connaissant le n°IP du Mac qui se connecte :
# grep N°IP /var/log/messages
et configurer le firewall en conséquence (port 548 TCP)


Voisinage réseau
================
smb4k
LinNeighborhood
Sous konqueror : smb:/
		 lan:/

Contrôle, vérification, de l'intégrité de fichiers
==================================================
md5sum
------
md5sum <fichier>	affiche la somme de contrôle du fichier
Exemple :
$ md5sum /etc/mandriva-release
28df2767da1f55de428554336d12d6dd  /etc/mandriva-release
$ md5sum /etc/mandriva-release > mandriva-release.md5
$ md5sum -c mandriva-release.md5
/etc/mandriva-release: OK

md5deep
--------
Contrôle récursif.
Exemple :
$ md5deep -r /etc/sysconfig/console
b1618ca5fefd99c3190feeaa839f577a  /etc/sysconfig/console/default.kmap
d7f193020e48d68e052821da8531f3da  /etc/sysconfig/console/consolefonts/lat0-16.psfu.gz

$ md5deep -re /etc/sysconfig/console > console.md5deep

$ md5sum -c console.md5deep
/etc/sysconfig/console/default.kmap: OK
/etc/sysconfig/console/consolefonts/lat0-16.psfu.gz: OK

Gravure de CD et images iso
===========================
http://guides-info.org/linux/applis/gravure.php#gravure_commande
http://jipe.homelinux.org/trucs_en_vrac/dvd.html

NB sous MDV 8, noyau 2.6
	mkisofs -> genisoimage 
	cdrecord -> wodim
même utilisation, même commandes.
L'utilisation de wodim est plus simpe que cdrecord, voir plus loin "Graver avec wodim"

Visualiser le contenu d'une image iso
*************************************
mount -t iso9660 -o ro,loop=/dev/loop0 image.iso /mnt/disk

Créer une image iso à partir d'un ensemble de fichiers
******************************************************
mkisofs est maintenant remplacé par genisoimage. Même syntaxe.
$ mkisofs -o NomDuFichier.iso -v -r -J -force-rr -iso-level 4 RepertoireàTraiter/
	-v verbose
	-R extension rockridge ou mieux -r (en plus droits à zéro)
	-J extension Joliet
	-force-rr pour que Nero veuille bien graver l'image !!
	-iso-label 4 : moins de limitations (cf man mkisofs)

Pour une image destinée à être gravée sur DVD :
$ mkisofs -J -r -v -udf -o NomDuFichier.iso RepertoireàTraiter/

Attention : les caratères que mkisofs ne sait pas interpéter (é par exemple) dans les noms de fichiers ou répertoires sont remplacés par _ ! Voir le man mkisofs à charset

Créer une image iso à partir d'un CD ou DVD
*******************************************
A essayer :
dd if=/dev/cdrom of=image.iso

Graver une image iso
********************
Afficher le(s) périphériques de gravure SCSI
--------------------------------------------
$ cdrecord -scanbus
dans le cas d'un graveur ATA :
$ cdrecord dev=ATA -scanbus
(NB "ATA" en majuscules, sinon message d'erreur !!)
scsibus0:
        0,0,0     0) *
        0,1,0     1) *
        0,2,0     2) 'SONY    ' 'DVD RW AW-G170A ' '1.71' Removable CD-ROM
        0,3,0     3) *
        0,4,0     4) *
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *
Inscrire la valeur retournée dev= des commandes ci-dessous

Information sur le CD/DVD inséré
--------------------------------
$ cdrecord -atip dev=ATA:0,2,0
WARNING: the ATA: method is considered deprecated on modern kernels!
Use --devices to display the native names.
Device type    : Removable CD-ROM
Version        : 0
Response Format: 2
Capabilities   :
Vendor_info    : 'SONY    '
Identification : 'DVD RW AW-G170A '
Revision       : '1.71'
Device seems to be: Generic mmc2 DVD-R/DVD-RW.
Using generic SCSI-3/mmc DVD-R(W) driver (mmc_mdvd).
Driver flags   : SWABAUDIO BURNFREE
Supported modes: PACKET SAO-dvd-compat
HINT: use dvd+rw-mediainfo from dvd+rw-tools for information extraction.

Pour un dvd :
$ dvd+rw-mediainfo /dev/dvd
$ cdrdao disk-info --device ATA:1,0,0

Effacer un CDRW (attention à la vitesse !
-----------------------------------------
# cdrecord -v speed=4 dev=0,3,0  blank=fast	(ou =all)
cas d'un graveur ATA :
# cdrecord -v speed=4 dev=ATA:0,3,0  blank=fast

Noyau 2.6 : en principe wodim est correctement positionné sur /dev/cdrom
cf. /usr/share/doc/cdrkit/READMEs/README.ATAPI.setup
il n'est plus indispensable d'indiquer le device
# wodim -v blank=fast
NB : les DVD+RW ne sont pas effaçables, wodim -v blank=fast affiche un message d'erreur :
"wodim: Cannot blank disk, aborting."
On peut simplement graver une image par dessus.

Graver une image iso (image.iso) sur un CD
-----------------------------------------
# cdrecord -v speed=4 dev=0,3,0  -data  image.iso
cas d'un graveur ATA :
# cdrecord -v speed=4 dev=ATA:0,3,0  -data  image.iso

Graver une image iso (image.iso) sur un DVD
------------------------------------------
# growisofs -Z /dev/cdrom=image.iso
-Z		session initiale
-M		ajouter une session
-speed=n	fixer la vitesse

Contrôler l'image gravée
------------------------
Soit /dev/cdrom le périphérique lecteur de CD :
# md5sum /dev/cdrom
et comparer la somme de contrôle avec celle donnée pour le fichier iso.
Mais les sommes de contrôle peuvent ne pas correspondre (semble ne se produire qu'avec les dvd ?) : la gravure peut en effet excéder la taille de l'iso, en général pour ajuster la gravure à un multiple de la taille d'1 bloc (merci Jipe pour l'explication).

Autres solutions :
1- dd if=/dev/cdrom | cmp image.iso
ou
2 - Monter l'image iso et le CD (ou DVD) :
mount -t iso9660 -o ro,loop=/dev/loop0 image.iso /mnt/disk
mount -t iso9660 /dev/hda /mnt/cdrom
Contrôler avec diff ou kdiff :
diff /mnt/disk /mnt/cdrom &
kdiff3 /mnt/disk /mnt/cdrom & 

Contrôler une image iso téléchargée
-----------------------------------
md5sum -c NomDuFichierContenantLaSommeDeControle

Créer une somme de contrôle d'un fichier
----------------------------------------
md5sum NomDuFichier > NomDuFichierContenantLaSommeDeControle

Logiciels graphiques de gravure
-------------------------------
k3b
brasero

Problèmes /bugs
°°°°°°°°°°°°°°°
Gravage impossible :

Avec cdrecord
--------------
# cdrecord -scanbus
....
Linux sg driver version: 3.5.27
Using libscg version 'schily-0.8'.
scsibus1:
        1,0,0   100) 'SONY    ' 'DVD RW AW-G170A ' '1.71' Removable CD-ROM
....

Puis :
# cdrecord -v speed=4 dev=1,0,0  -data  fichier.iso
cdrecord: No write mode specified.
cdrecord: Asuming -tao mode.
...
TOC Type: 1 = CD-ROM
scsidev: '1,0,0'
scsibus: 1 target: 0 lun: 0
cdrecord: No such file or directory. Cannot open '/dev/sg*'. Cannot open SCSI driver.
cdrecord: For possible targets try 'cdrecord -scanbus'.
cdrecord: For possible transport specifiers try 'cdrecord dev=help'.

=> cf. http://www.linuxquestions.org/questions/showthread.php?t=229069
il semble que l'émulation SCSI ne fonctionne pas avec certains kernels 2.6, ici :
# uname -sr
Linux 2.6.12-12mdk

=> solution(s)
- Mettre éventuellement le noyau à jour :
# urpmi kernel				(et redémarrer)
- Ne pas utiliser l'émulation SCSI :
# cdrecord -v speed=4 dev=/dev/hdc -data  fichier.iso
(/dev/hdc ou autre device lié au graveur)

Graver avec wodim
-----------------
$ wodim -v blank=fast			pour effacer un réinscriptible
$ wodim -v -data fichier.iso		pour graver le fichier iso

Problèmes divers avec K3b
-------------------------
k3b: ERROR: (K3bDevice::Device) Unable to do inquiry.
=> tout simplement rajouter dans le groupe cdrom (cdwriter dans les nouvelles version de MDV)les utilisateurs qui doivent utiliser k3b !!
Editer le fichier /etc/group et modifier la ligne :
cdwriter:x:80:utilisateur1,utilisateur2,utilisateur3

Message d'erreur au > démarrage : "No CD/DVD writer found."
Idem : même solution que ci-dessus

Il sera peut-être nécessaire de rebooter (à vérifier)
 
Graver des répertoires sur un DVD
=================================
voir le man de genisoimage ou growisofs

Graver un volume ISO9660 + Joliet + Rock-Ridge
# growisofs -Z /dev/cdrom -R -J /some/files
Ajouter des données
# growisofs -M /dev/cdrom -R -J /more/files
Finaliser un DVD multisessions
# growisofs -M /dev/cdrom=/dev/zero
# Graver une image
growisofs -Z /dev/cdrom=image.iso

Installation/désinstallation de paquetages, mises à jour
========================================================
http://lea-linux.org/software/rpm.php3
http://www.urpmi.org/fr/urpmi_first_fr.php
http://personal.riverusers.com/~thegrendel/build-4.html#ss4.1 (=Whats wrong with rpms?)
http://www.mandrakehelp.com/RPM-HOWTO.html#1.2
http://speculation.org/garrick/urpmifaq.txt


rpm, urpm*
en mode graphique, mcc, kpackage

rpm
===
http://www.pcentraide.com/index.php?showtopic=175		Commande / syntaxe rpm

Installer
# rpm -i nom_paquet.rpm
Désintaller
# rpm -e nom_paquet.rpm
Mise a jour
# rpm -U nom_package.rpm

Vérifier qu'un paquetage est bien installé
------------------------------------------
$ rpm -V NomDuPaquet

rpm -q				(ou --query}
--------------------------------------------
rpm -qa	(-a ou --all)			affiche tous les paquets installés
rpm -qf foo (-f ou --file)		Retourne les paquets contenant le fichier foo
rpm -ql paquet (-l ou --list)		liste les fichiers contenu dans le paquet
rpm -qR paquet (-R ou --requires)	liste les paquets nécessaires pour ce paquet (dependances)
rpm -qd paquet (-d ou --docfiles)	liste uniquement les fichiers de documentation
rpm -q --dump paquet			infos complètes sur les fichiers
rpm -qi paquet				infos complètes sur le paquet
rpm -q --provides paquet		List capabilities this package provides (?) version et libs ? 

Exemples :
- retourne la liste des rpm apache installés
$ rpm -qa | grep apache

- cherche dans quel paquet se trouve un logiciel :
$ rpm -qf $(which perl)
perl-base-5.8.8-6mdk

$ rpm -qf $(which vmstat)
procps-3.2.7-2mdv2007.1

- retourne la liste des fichiers contenus dans les paquets qui contiennent /bin/bash
$ rpm -ql $(rpm -qf $(which bash))

- retourne la liste des applis installées, derniers installés en tête
$ rpm -qa --last

Rechercher et désinstaller un package
-------------------------------------
$ rpm -qa nuke
PHP-nuke-6.0-1mdk

# rpm -e foo		<- désinstalle le package foo-x.y.rpm

Remplacer, mettre à jour une package
------------------------------------
# rpm -Uvh foo		<- installe ou remplace
# rpm -Fvh foo		<- remplace (mise à jour d'une version préexistante)

Remet une package plus ancien :
# rpm -Uvh --replacepkgs --nodeps --oldpackage foo.rpm

Afficher les dépendances d'un programme
-----------------------------------------
Exemple :
$ rpm -qR man					(-R ou --requires)
groff-for-man
setup
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
bash
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.3)

Rpm "source" (appli.src.rpm)
----------------------------------------------------
cf. http://www.rpm.org/max-rpm/s1-rpm-miscellania-srpms.html

Pour recompiler le paquet en tenant compte de l'environnement :
rpm --rebuild appli.src.rpm


urpm*
=====
urpmf
-----
Liste les paquets qui contiennent la chaîne passée en argument.

NB : il faut que hdlist soit présent, sinon message d'erreur "Note: no hdlist for medium "Main Updates (Official2008.0-1)Mandriva Linux - 2008.0-1)" , unable to return any result for it". Dans ce cas, utiliser urpmq -y (ou urpmq --fuzzy)

$ urpmf /usr/bin/kwrite
kdebase-progs:/usr/bin/kwrite
kdebase-progs:/usr/bin/kwriteconfig

$ urpmf avicat
avifile-samples:/usr/bin/avicat
avifile-samples:/usr/share/man/man1/avicat.1.bz2

urpmi
-----
Configurer les sources : plusieurs méthodes :
- http://easyurpmi.zarb.org
- K -> Configuration -> Packaging -> Software source manager
	Par exemple menu remove medium pour retirer un CD
- urpmi.setup : 
Pour recharger un CD :
urpmi.addmedia CD1_MK9 removable://mnt/cdrom_ide /var/lib/urpmi
cf. #urpmi.addmedia

Pour ajouter une source ftp (ou http)
urpmi.addmedia contrib ftp://ftp.u-strasbg.fr/pub/linux/distributions/mandrake/9.0/contrib/RPMS

Pour mettre à jour la base des sources
# urpmi.update --all (urpmi.update -a à partir de MDK10)

La liste des sources est dans /etc/urpmi/urpmi.cfg
La liste des logiciels et les index sont dans /var/lib/urpmi/
Dévérouiller la base de donnée urpmi : supprimer le fichier /var/lib/urpmi/LOCK

Pour supprimer toutes les sources
# urpmi.removemedia -a

Pour installer un paquetage
---------------------------
Exemple
# urpmi kdenet
(recherche les paquets qui contiennent "kdenet")
The following packages contain kdenet: kdenetwork-devel kdenetwork kdenetwork-kppp
# urpmi kdenetwork
et répondre aux questions

Pour installer automatiquement les mises à jour
-----------------------------------------------
# urpmi --auto-select
NB : faire au préalable une mise à jour des sources avec : 
# urpmi.update -a

Au lieu de ces 2 commandes, utiliser :
# urpmi --auto-update
qui fait une mise à jour des sources suivie de la mise à jour du système.

Pour éviter la mise à jour de certains paquets
----------------------------------------------
/etc/urpmi/skip.list

Pour contrôler si l'installation s'est bien passée
---------------------------------------------------
# less /var/log/urpmi.log

Faire une base locale de mises à jour
-------------------------------------
Le but est double :
1 - pouvoir faire les mises à jour sur des PCs non connectés au réseau
    ou avec une connexion trop lente pour être utilisable

2 - pouvoir, lors d'une installation de machine, charger les
    mises à jour de sécurité avant de la connecter au réseau : ça permet
    d'éviter son piratage éventuel alors qu'elle est encore vulnérable.

Les étapes :
1 - récupérer le répertoire ad hoc (actuellement /mandrake/updates/9.1/RPMS)
    à l'aide de wget directement sur un support amovible (ou sur un disque dur, puis graver un CD)
2 - Démonter le support amovible, le monter sur la machine à mettre à jour
3 - Mettre à jour la base urpmi avec urpmi.update
4 - Faire les mises à jour des logiciels avec urpmi --auto-select

En détail

1 - Récupérer sur l'un des nombreux serveurs disponibles les rpms des mises à
jour à l'aide de wget :
$ wget -mirror -P /mnt/disk -nH --cut-dirs=3 ftp://NomDuServeurFTP/pub/linux/distributions/mandrake/updates/9.1/RPMS

avec :
-mirror		pour créer localement un "mirroir" du répertoire RPMS du serveur.
		Avantage : si on lance à nouveau cette commande, seuls les fichiers nouveaux
		ou modifiés sont transférés
-P /mnt/disk 	pour écrire à un endroit donné (ici un support amovible monté en /mnt/disk)
-nH et --cut-dirs	options facultatives :
    	-nH 	        pour effacer le nom du serveur de l'arborescence créée
    	--cut-dirs=3	pour effacer /pub/linux/distributions de l'arborescence créée

Dans cet exemple l'ajout de -P et --cut-dirs permet de simplifier l'arborescence créée en :
        /mnt/disk/mandrake/updates/9.1/RPMS
au lieu de :
        /mnt/disk/NomDuServeurFTP/pub/linux/distributions/mandrake/updates/9.1/RPMS

2 - Démonter le disque amovible et le monter sur la machine à mettre à jour de façon à avoir (par
exemple) les rpms dans :
        /mnt/disk/mandrake/updates/9.1/RPMS

3 - Ajouter le répertoire contenant les rpm à la base urpmi
Ca peut se faire soit en mode graphique, soit en ligne de commande :
	Mode graphique :
		K -> Configuration -> Packaging -> Software Sources Manager
		et ajouter le répertoire contenant les rpms dans les sources à utiliser, dans cet exemple :
        	/mnt/disk/mandrake/updates/9.1/RPMS
	Mode ligne de commande :
		# urpmi.addmedia updates file:/mnt/disk/mandrake/updates/9.1/RPMS
Puis mettre à jour la base :
	# urpmi.update updates

4 - Faire toutes les mises à jour en mode automatique :
	# urpmi --auto-select


Les fichiers "hdlist" ne sont pas indispensables : urpmi.update les crée.
Ceci dit, on peut les récupérer sur le serveur dans /9.1/base. Dans ce cas les
ajouter (ici hdlist.cz) :
	# urpmi.addmedia updates file:/mnt/disk/mandrake/updates/9.1/RPMS with ../base/hdlist.cz

Sinon on peut les créer, avec la commande :
	$ genhdlist nom_du_répertoire
Attention : les hdlists vont dans le répertoire contenant les rpms.
Il ne semble pas y avoir d'option dans genhdlist pour rediriger les fichiers créés
dans un répertoire "base" : le faire "à la main".

Dans les messages urpmi
-----------------------
ETA = Estimated Time of Arrival

Lister les sources
------------------
$ urpmq --list-media
$ urpmq --list-media active

Lister les paquets disponibles
------------------------------
urpmq --list
urpmq --list -f 

Exemples :
$ urpmq --list | grep ekiga
ekiga
ekiga

$ urpmq --list -f | grep ekiga
ekiga-2.0.11-1mdv2008.0.i586
ekiga-2.0.12-1mdv2008.0.i586

$ urpmq -f ekiga
ekiga-2.0.12-1mdv2008.0.i586|ekiga-2.0.11-1mdv2008.0.i586

$ urpmq -f kernel-2.6.22.18
No package named kernel-2.6.22.18
The following packages contain kernel-2.6.22.18:
actuator-kernel-2.6.22.18-desktop-1mdv
actuator-kernel-2.6.22.18-desktop586-1mdv
...

Paquets (installés ou non ?)
---------------------------
$ urpmq --fuzzy nom_paquet	(ou urpmq -y nom_paquet ou urpmq -y nom_paquet)
$ urpmq -l nom_paquet		liste en plus les fichiers

Information (questions) sur un paquet
--------------------------------------
$ urpmq -h			Mode d'emploi de urpmq
$ urpmq --summary paquet	(ou urmpq -S paquet)		Affiche une courte infomation sur le paquet
$ urpmq -i paquet						Affiche plus d'informations
$ urpmq -l paquet						Liste les fichiers du paquet
$ urpmq -d paquet						Affiche les dépendances

Voir où un paquet est installé :
--------------------------------
$ urpmq arpw
no package named arpw
The following packages contain arpw:
arpwatch
arpwatch2html

ou bien :
$ urpmq --fuzzy arpw
arpwatch
arpwatch2html

Puis :
$ rpm -ql arpwatch
/etc/rc.d/init.d/arpwatch
/etc/sysconfig/arpwatch
/usr/sbin/arpsnmp
/usr/sbin/arpwatch
...

Installer un ensemble de paquets (metapaquets, meta packages dans mcc à partir de MDV 2008.1)
--------------------------------
Le nom des paquets qui regroupent un ensemble de paquets commence par task- :

$ urpmq --list | grep task-
task-3ddesktop
task-c++-devel
task-c-devel
task-gnome
task-kde
task-kde-devel
task-kde4
task-kde4-devel
etc.


urpmi problèmes
===============
urpmi database locked
---------------------
# rm -f /var/lib/urpmi/.LOCK
# rm -f /var/lib/urpmi/.RPMLOCK

Installations en mode graphique
===============================
# rpmdrake
Installation en mode graphique :
# rpmdrake-remove
Configuration des media :
# edit-urpm-sources.pl	(/usr/bin/perl /usr/bin/edit-urpm-sources.pl)
Mises à jour
# MandrivaUpdate

ou bien passer par le menu System / Configuration  /Packaging ...
ou bien encore y accéder par mcc

En cas de problème, essayer :
rpm --rebuilddb
(compter plusieurs minutes pour le mise à jour des index de la db)

Problèmes
---------
"Les paquetages suivants ont des signatures non valides"
Plusieurs causes (Les paquetages suivants ont des signatures non valides)
Vérifier en particulier sue les bonnes clés sont installées :
# mcc > Gérér les clés > Ajouter les clés correspondant aux média utilisés
Les clés sont dans les paquetages gpg-pubkey


Installation de programmes à partir des sources
===============================================

Ne jamais installer de programme à partir des sources dans /usr (destiné aux programmes de la distribution) ; les installer dans /usr/local

Mises à jour
============
Mode d'emploi : http://wiki.mandriva.com/fr/Mettre_Ã _jour



Cygwin
======

Récupération/installation de Cygwin
-----------------------------------
Cf. http://people.via.ecp.fr/~alexis/formation-linux/outils-windows.html

Cygwin disponible sur de nombreux sites, par exemple :
http://xfree86.cygwin.com
http://www.cygwin.com

En bref :

Cliquer sur l'icône "Install Cygwin now" en haut à droite de la page web, ce qui permet de télécharger setup.exe
L'exécuter : c'est le programme qui permet de récupérer et d'installer Cygwin.
Passer la 1° page puis sélectionner "Install from Internet".
Page suivante sélectionner le répertoire d'installation (root directory).
Page suivante sélectionnez le répertoire dans lequel seront écrits les fichiers téléchargés.
Deux pages plus loin, sélectionner un miroir dans la liste.
La liste des packages disponibles s'affiche : 4 possibilités
- Default
- Install
- Reinstall
- Uninstall
Au début tout est à "Default". Rajouter les packages nécessaires, par exemple net/ssh, rsync, X11, etc.
<Next> provoque le téléchargement et l'installation des packages sélectionnés, leur configuration, la mise à jour du menu "Démarrer" et une icône Cygwin est mise sur le bureau.

Installation/configuration de SSH et SSHD
-----------------------------------------
cf. http://pigtail.net/LRP/printsrv/cygwin-sshd.html

Nb : il faut avoir sélectionné et installé net/ssh, cf. ci-dessus

- Ajouter à W$ une variable d'environnement et modifier le path :
Clic droit sur My Computer, puis Properties/Advanced/Environment Variables
User ou System variables/new => CYGWIN=ntsec tty
User ou System variables/Path/Edit => ajouter c:\cygwin\bin
Ceci permet de lancer une commande UNIX directement à partir d'une fenêtre dos (et non pas seulement à partir de la fenêtre cygwin)
- Lancer ssh-host-config et répondre de la façon suivante aux questions :
privilege separation 		=> yes
local user			=> yes
install sshd as a service	=> yes
CYGWIN=				=> ntsec tty

- Lancer le daemon sshd :
net start sshd
ou
cygrunsrv  --start  sshd

- Stopper le daemon sshd
net stop sshd
ou
cygrunsrv  --stop  sshd

- Tester le fonctionnement de sshd
telnet 127.0.0.1 22
ou
ssh $USERNAME@127.0.0.1
à partir d'une machine distante :
telnet adresse_PC_W$ 22
ou
ssh utilisateur@adresse_PC_W$

Si ça ne fonctionne pas, voir si ce n'est pas un problème de firewall.
Dans le cas de Kerio :
Network Security/Applications, x:\cygwin\usr\sbin\sshd.exe, mettre "ask" ou "permit" au moins pour Trusted/In

- ssh-user-config
Cette commande permet de gènèrer facilement le couple clè privèe/publique

Alias
-----
Le fichier ~.bashrc contient un ensemble d'alias très intéressants (mais en commentaires).
Editer le fichier et mettre les alias de son choix (alias rm='rm -i' en particulier !) 

Version de cygwin installée
----------------------------
uname
cygcheck

Créer un utilisateur sous cygwin
--------------------------------
Créer d'abord l'utilisateur sous windows (


Lancer le mode graphique
------------------------
- Un serveur X windows nu, avec juste une console texte
$ xinit &
Lancer ensuite le gestionnaire de fenêtres de son choix :
$ twm &
ou wmaker &

- Ou bien un serveur X windows avec un gestionnaire de fenêtres (twm est lancé par défaut) :
$ startx &
Et éventuellement une autre session X-Windows :
$ startx -- :1

Changer d'environnement graphique
---------------------------------
Lancer le mode graphique (twm est installé par défaut) : startx &
Editeur en mode graphique : nedit
Pour lancer windowmaker à la place de twm :
$ nedit /etc/X11/Xinit/xinitrc
	faire une sauvegarde de xinitrc en xinitrc.twm
	remplacer twm par wmaker
	enregistrer sous le nom xinitrc
Relancer le mode graphique par startx.

Se connecter à un UNIX distant en mode sécurisé (texte uniquement)
-----------------------------
$ ssh -l utilisateur nom_ou_n°IP_machine
ou bien :
$ ssh utilisateur@nom_ou_n°IP_machine

Se connecter en mode graphique sécurisé à un UNIX distant
-----------------------------
$ ssh -X -l utilisateur nom_ou_n°IP_machine
ou bien :
$ ssh -X utilisateur@nom_ou_n°IP_machine

A partir de là, si KDE est installé sur l'Unix distant (Linux Mandrake dans mon cas) on peut lancer différents programmes, par exemple :
$ kwrite &
$ konqueror &
$ kmail &

Problème, par exemple :
$ kwrite
kwrite: cannot connect to X server
ou bien
$ nedit
NEdit: Can't open display
Solution :
- dans /etc/ssh/sshd_config 
changer X11Forwarding no en X11Forwarding yes
- dans /etc/ssh_config:
ForwardX11 yes
et redémarrer sshd (sshd restart ou service sshd restart, sous Debian : /etc/init.d/ssh) restart)

Toutes les étapes pour avoir en local un KDE distant
----------------------------------------------------
Démarrer cygwin, puis :
$ xinit &
$ ssh -X utilisateur@machine_distante &
$ /usr/bin/startkde -display localhost &

Clipboard
---------
Pour des copies entre windows et unix et vice-versa :
$ xwinclip &
Existe aussi en paramètre à passer à XWin.exe, cf. doc cygwin-xfree-ug

Mise à jour du fichiers /etc/passwd de cygwin (contient la liste des utilisateurs)
-----------------------------------------------------------------------------------
La création d'un nouvel utilisateur sous Windows ne modifie pas le fichier /etc/passwd, ce qui fait que pour cygwin
ce nouvel utilisateur n'existe pas 
Pour mettre à jour /etc/passwd (cf. : http://ncyoung.com/entry/389)
mkpasswd -l > /etc/passwd
(pour simplement visualiser les modifications : mkpasswd -l)

Désinstallatoin manuelle de cygwin
----------------------------------
Supprimer les services installés
++++++++++++++++++++++++++++++++
(Cf. cygrunsrv --help)
cygrunsrv --list                        Pour lister les services installés
        ou -L
cygrunsrv --stop <NomDuService>
        ou -S
cygrunsrv ----remove <NomDuService>
        ou -R

Supprimer le répertoire Cygwin
++++++++++++++++++++++++++++++

Nettoyer la base de registre
++++++++++++++++++++++++++++
regedit
Supprimer les registres contenant 'Cygnus solution', en principe :
        HKEY_CURRENT_USER\Software\Cygnus Solutions
        HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions

Nettoyer les variables d'environnement
++++++++++++++++++++++++++++++++++++++
User ou System variables        =>      CYGWIN=
User ou System variables        =>      Path=

Supprimer l'icône sur le bureau et l'entrée dans le menu "Démarrer"

Redémarrer Windows (!)
++++++++++++++++++++++



Configuration de la session root de KDE pour qu'elle se comporte comme une session ordinaire
=============================================================================================
* > System > Configuration > KDE > Appearance & Themes > Behaviour > General
(ou, en ligne de commade kcmshell desktopbehaviour)
	x Show icons on desktop
	Mouse Button Actions
		Left button : 	No Action
		Middle button :	Window List Menu
		Right button :	Desktop menu

* > System > Configuration > KDE > Appearance & Themes > Screensaver
(ou, en ligne de commade kcmshell screensaver)

Gestion du temps, gestion des bugs, bug tracking system
=======================================================
Voir mantis (http://www.mantisbt.org/)

Browsers
========

Mozilla, Firefox

Taper dans la ligne d'adresse :
about:config				-> Infos sur la configuration
about:plugins				-> plugins installés
about:aboutbuildconfig			-> infos sur les compilateurs utilisés

Installation/désintallation de Mozilla, Firefox et thunderbird
===============================================================

Firefox
°°°°°°°
Aucune indication incluse dans le fichier téléchargé => voir la doc sur http://www.mozilla.org/ :

Installation :
--------------
tar -xzvf firefox-1.0.installer.tar.gz
cd firefox-installer
./firefox-installer
et suivre les instructions qui s'affichent. Choisir le mode d'installation "custom" et indiquer comme répertoire d'installation (par exemple) "/opt/firefox"
Pratique : mettre firefox dans la barre de tàches (drag&drop) ; l'icône est dans /opt/firefox/chrome/icons/default/

Désinstallation :
-----------------
Pas d'indication précise sur le site Mozilla : sans doute supprimer /usr/share/firefox/ ?
Le profil utilisateur peut être gardé ou effacé au choix : il est dans ~/.mozilla/firefox

Installation de Firefox par urpmi
---------------------------------
Pour trouver les icônes :
locate ico | grep firefox
L'icône en forme de dragon se trouve dans /usr/lib/mozilla-firefox-1.0.2/chrome/icons/default
Les autres icônes sont moins intéressantes (représentent une terre bleue)

Firefox : répertoires cache et bookmarks
----------------------------------------
$ locate -i cache | grep -i firefox

Cache firefox
-------------
about:cache
permet d'accéder au contenu du cache (en mémoire et sur disque). Indique l'adresse du répertoire cache.

Connaître les plugins installés
-------------------------------
about:plugins

Installer des extensions (plugins .xpi)
---------------------------------------
Outils > Modules complémentaires > Obtenir des extensions
Dans la page "Add-ons for Firefox" qui s'ouvre, chercher le plugin et cliquer sur "Ajouter à Firefox"
Redémarrer Firefox


Firefox, associations fichiers-application
------------------------------------------
Edit > Preferences > Content [Manage]
Si la liste des associations n'est pas visible (ce qui est le cas par défaut !!) :
taper "about:config" dans la barre d'adresses de firefox (sans les "")

Dans la barre Filter: taper "extensions" (sans les "")
Double cliquer sur "browser.download.hide_plugins_without_extensions" de façon à ce que la valeur change de "true" en "false".
La liste est maintenant visible dans Preferences > Content [Manage]
A noter que beaucoup de types de fichiers sont absents (pdf en particulier)

Peut aider aussi :
# urpmi mozplugger
Relancer firefox
Edit > Preferences > Content [Manage] -> les fichiers de type pdf sont maintenant visibles
Double-cliquer sur l'association que l'on veut changer. Cocher "Open them with this application" et choisir l'application ad-hoc (un which <NomDeLApplication> permet de savoir où elle se trouve, en général dans /usr/bin)

Configuration de firefox
------------------------
Pour associer kmail à un "mailto" :
Cf. http://www.think-underground.com/index.php?post/2005/09/06/36-firefox-ouvre-kmail

about:config
Saisir « mail » dans le filtre, cliquer à droite sur la ligne
contenant : "network.protocol-handler.app.mailto"
Choisir « Modifier ».
Mettre (ou remplacer par) ce qu'on veut, par exemple : kmail

Fichier de configuration des associations
-----------------------------------------
fichier mimeTypes.rdf dans :
~/.mozilla/firefox/rqsz96yo.default/mimeTypes.rdf
Il peut être plus facile de le modifier à la main que de passer par des menus de configuration incompréhensibles.

Correcteur orthographique
-------------------------
Récupérer le(s) distionnaire(s) sur
http://dictionaries.mozdev.org/installation.html
ou https://addons.mozilla.org/fr/firefox/browse/type:3

et suivre les indications d'installation.

Sauvegardes
-----------
FEBE 	https://addons.mozilla.org/fr/firefox/addon/2109
"FEBE backs up your extensions, themes, and (optionally) your bookmarks, preferences, passwords, cookies and just about everything else Firefox offers (it can even backup/restore your entire profile)."

Home page de firefox
--------------------
Edit > Preferences > Home Page
about:blank pour avoir une page vierge

Thunderbird
°°°°°°°°°°°
Pas d'installateur.
Sous root, lancer konqueror, cliquer sur le tarball (thunderbird-xxx.tar.gz)
Copier le répertoire thunderbird qui apparaît
Le coller dans (par exemple) /opt
Comme pour firefox ci-dessus mettre thunderbird dans la barre de tàches.
L'icône de thunderbird est dans /opt/thunderbird/chrome/icons/default/ : prendre l'icône messengerWindow.xpm

Configuration :
---------------
tous les dossiers distants n'apparaissent pas automatiquement : pour les faire apparaître, click droit sur inbox (ou un des sous dossiers), menu subscribe, développer l'arborescence et cocher les sous-menus dont le contenu doit apparaître.

Affichage des pièces jointes
----------------------------
Pour changer l'application liée à un type de fichier :
Clic droit sur la pièce à ouvrir
Open
Open with
faire défiler la liste des applications (il n'y en a qu'une) pour voir le bouton "Other"
Choisir l'application voulue.

Fichier de configuration des associations
-----------------------------------------
fichier mimeTypes.rdf dans :
~/.thunderbird/vjrbeg0k.default/mimeTypes.rdf
Comme dans le cas de firefox il peut être plus facile de le modifier à la main que de passer par des menus de configuration incompréhensibles.

Mozilla
°°°°°°°
cf http://www.mozilla.org/releases/mozilla1.7/installation.html#linux
Récupérer Mozilla (actuellement mozilla-i686-pc-linux-gnu-1.7.6-installer.tar.gz)
tar -xzvf mozilla-i686-pc-linux-gnu-1.7.6-installer.tar.gz
cd mozilla-isntaller
./mozilla-installer
et suivre les instructions

Désinstallation :
-----------------
Supprimer le répertoire où est installé Mozilla (par oexemple /opt/Mozille)
Supprimer éventuellemnt ~/.mozilla directory (profil utilisateur)

Profils Mozilla, thunderbird, firefox
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
http://www.geckozone.org/articles/2005/08/31/100-comprendre-le-profil-de-firefox-thunderbird-mozilla
http://gemal.dk/mozilla/files.html

Plugins (pour Mozilla Firefox et konqueror)
===========================================
konqueror est capable d'utiliser les plugins firefox
Pour que konqueror utilise les plugins Mozilla :
1 - repérer dans quel répertoire se trouve le plugin
2 - Démarrer konqueror en root
3 -Settings/Configure Konqueror/Plugins
(en français : Configuration / Configure Konqueror / Modules externes)
Netscape Plugins, onglet Scan, bouton [New]
indiquer le répertoire contenant le plugin
Apply
4 - Il semble qu'il faille redémmarrer KDE pour que la modification soit prise en compte.

Plugin Macromedia Flash
-----------------------
Télécharger le plugin sur le site macromedia.
Lire la doc d'installation (elle est bien faite)
Décompacter, lancer ./flashplayer-installer
Pour Firefox changer le répertoire d'installation proposé par défaut par (actuellement) :
Browser installation directory = /usr/lib/mozilla-firefox-1.0.6

Plugin Flash
------------
Moins de problèmes aujourd'hui (2-7-2007) : télécharger le rpm du site http://www.macromedia.com/go/getflashplayer/
et l'installer.
Taper about:plugins dans firefox pour voir les plugins installés-------

Encore moins aujourd'hui : le plugin s'installe automatiquement pour un utilisateur en cliquant sur l'icône en forme de pièce de puzzle. Sécurité ?

Installation du plugin flash pour konqueror
-------------------------------------------

Installation du plugin Flash pour MDV 64 bits
---------------------------------------------
Plugin 64 bits
..............
Cf : http://wiki.mandriva.com/fr/Plugin_flash_pour_firefox_en_64bits
- Désintaller si nécessaire le plugin 32 bits (cf l'installation du plugin 32 bits ci-dessous)
- Télécharger le plugin 64 bits sur :
 http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.d20.7.linux-x86_64.so.tar.gz
- $ tar -zxvf libflashplayer-10.0.d20.7.linux-x86_64.so.tar.gz
Se mettre sous root à l'endroit où a été décompacté le fichier, puis :
- # cp libflashplayer.so /usr/lib64/mozilla/plugins/

(Re)démarrer firefox et aller sur http://www.adobe.com/fr/products/flashplayer/
pour vérifier que le plugin fonctionne (il y a une animation flash sur la page).

L'installation du plugin 32 bits avec nspluginwrapper(voir ci-dessous) n'est donc plus nécesaire

Plugin 32 bits :
................
Cf. : http://blogs.winsos.net/crev/index.php/?2006/11/29/26-flash-et-acrobat-reader-sous-mandriva-2007-x86_64-nouvelle-version
http://doc.fedora-fr.org/Flash_et_Acrobat_Reader_sous_Firefox_2_en_64bits

Installation de nspluginwrapper
# urpmi nspluginwrapper
Installation du plugin flash 
# nspluginwrapper -i /usr/lib/flash-plugin/libflashplayer.so
Liste les plugins installés
$ nspluginwrapper -l
/usr/lib64/mozilla/plugins/npwrapper.libflashplayer.so
  Original plugin: /usr/lib/flash-plugin/libflashplayer.so
  Wrapper version string: 0.9.91.3

Le plugin au bon endroit (pour firefox) !

Plugin java
------------
Attention : peut maintenant directement s'installer par urpmi java

Télécharger le plugin sur http://www.java.com/en/ (actuellement jre-1_5_0_02-linux-i586.bin)
L'exécuter : il se décompresse localement dans un répertoire "jre1.5.0_02"
Déplacer ce répertoire dans un endroit qui convient (/opt/java/ par exemple)

Installation du jre6 à partir du rpm auto-extractible :
------------------------------------------------------
Télécharger jre-6-linux-i586-rpm.bin
$ chmod +x jre-6-linux-i586-rpm.bin
$ ./jre-6-linux-i586-rpm.bin
$ sudo rpm -ivh jre-6-linux-i586.rpm

L'installation du rpm est automatique : répertoire d'installation /usr/java/jre1.6.0/-------
Continuer l'installation des plugins comme indiqué dans les paragraphes ci-dessous, par exemple :
- pour firefox
# ln -s /usr/java/jre1.6.0/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/firefox-2.0.0.3/plugins

16-10-2007 : il existe maintenant un jre java 64 bits sur le site http://www.java.com/fr/download/
-------
Multiples versions
------------------
Voir les versions installées :
# rpm -q jre

Mettre à jour
-------------
# rpm -Uvh jre-x-x...			(-U = --upgrade)

Implémentations "open source" de Java
-------------------------------------
kaffe, japhar
cf. http://java.oreilly.com/news/freejava_0498.html 
blackdown ?

Activation de java dans mozilla et firefox
------------------------------------------
D'après les docs "officielles" SUN et Mozilla

1 - créer un lien soft vers le plugin ; dans le cas de jre1.5.0_02, par exemple, en étant positionné dans l'un des répertoires "plugins" de mozilla ou de firefox
(mozilla/plugins
firefox/plugins
~/mozilla/plugins
actuellement /usr/lib/mozilla-firefox-1.0.6/plugins) :
ln -s /opt/java/jre1.5.0_02/plugin/i386/ns7/libjavaplugin_oji.so

Sinon chercher le répertoire "plugins" avec :
$ locate plugins | grep firefox


2 -Vérifier que dans la config de ces logiciels java soit autorisé :
Firefox : Edit/Preferences/WebFeatures
Mozilla : Edit/Preferences/Advanced/Scripts & Plug-ins

3 - tester si ça fontionne sur :
http://java.com/en/download/help/testvm.xml

NB :
1 - les docs précisent qu'il faut impérativement créer un lien et non mettre une copie du plugin dans le répertoire plugins.
2 - la création d'un lien par drag'n drop sous konqueror ne fonctionne pas : mozilla et firefox ne veulent plus se lancer.
3 - utiliser le plugin qui se trouve dans i386/ns7 et non pas dans i386/ns7-gcc29 : ce dernier est pour une utilisation avec de vieilles versions de mozilla et firefox compilées avec gcc avant les versions 3.xxx
Pour connaître la version de gcc utilisée pour compiler ces browsers, taper about:aboutbuildconfig dans la ligne d'adresse.
4 - La procédure ci-dessus ne fonctionne pas à tous les coups : il semble que mozilla et/ou firefox ne trouvent pas le path vers l'exécutable "java" (/opt/java/jre1.5.0_02/bin/). Solution ?

Activation de java dans konqueror
---------------------------------
Plus simple et plus logique que pour mozilla/firefox

- Settings/Configure Konqueror/Java & JavaScripts :
En bas de fenêtre, dans "Path to java executable, or 'java' indiquer /chemin_complet_vers/programme_java (par exemple /opt/java/jre1.5.0_02/bin/java ou /usr/java/jre1.5.0_06/bin/java)

- Settings/Configure Konqueror/Plugins :
indiquer le(s) répertoire(s) à scanner pour trouver le plugin java .so ad-hoc (par exemple /opt/java/jre1.5.0_02/plugin/i386/ns7). Si ce répertoire n'est pas encore dans la liste affichée (quasi certain dans l'exemple donné) cliquer ensuite sur "Scans for New Plugins".

java
====

Installation
------------
# urpmi java		et choisir la version la plus récente

Les exécutables java ne fonctionnent pas
------------------------------------
Définir dans ~/.bash_profile le chemin vers jre/bin, par exemple :
#JAVA
JAVA_HOME=/opt/java/jre1.5.0_02
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH

Puis exécuter
source ~/.bashrc
pour que les modifications soient prises en compte.

Pour ajouter le meme PATH à tous les utilisateurs
----------------------------------------------
/etc/profile exécute 1 à 1 les fichiers qui se trouvent dans le répertoire 
/etc/profile.d
Donc créer dans ce dernier les 2 scripts (rwxr-x-r root root) suivants :

jre-1.5.sh :
#!/bin/bash
JAVA_HOME="/opt/java/jre1.5.0_02/"
export JAVA_HOME
export PATH="$PATH:$JAVA_HOME/bin"

jre-1-5.csh :
setenv JAVA_HOME "/opt/java/jre1.5.0_02/"
setenv PATH "$PATH:$JAVA_HOME/bin"

Affecter à ces 2 fichiers les bons droits et propriétaires :
chmod 755 jre-1.5.*
chown root:root jre-1.5.*

et mettre à jour :
source /etc/profile
ou ouvrir une autre session

Tester le fonctionnement des applets java :
-----------------------------------------
http://java.com/en/download/help/testvm.xml

Installation du SDK (j2sdk-1_4_2_07-nb-4_0-bin-linux.bin)
---------------------------------------------------------
http://java.sun.com/j2se/1.4.2/download.html

Exécuter :
./j2sdk-1_4_2_07-nb-4_0-bin-linux.bin
Répondre aux questions

Ca se termine par :
JSE Developpement kit 1.4.2_07 installation location
/opt/java/j2sdk1.1.2_07

To run IDE lanch:
/opt/java/netbeans-4.0/bin/netbeans

To uninstall the IDE lanch:
/opt/java/netbeans-4.0/_uninst/unistaller

To uninstall the J2SE Development Kit 1.4.2_07 launch:
/opt/java/j2sdk1.4.2_07/_uninst/unistall.sh

Installation du SDK (j2eesdk-1_4_01_2005Q1-linux.bin)
-----------------------------------------------------
Exécuter :
./j2eesdk-1_4_01_2005Q1-linux.bin
En cas de message d'erreur :"error while loading shared libraries: libstdc++-libc6.2-2.so.3: cannot open shared object file..." installer libstdc++ (suffisant : l'erreur concernant libc6.2-2.so disparait ; de toutes façons il n'y a pas actuellement de rpm pour libc6).

L'installation se termine par :

-Access the About Application Server PE 8 welcome page at:
SUNWappserver/docs/about.html

- Start the Application Server by executing:
SUNWappserver/bin/asadmin start-domain domain1

- Start the Admin Console:
http://localhost:4848

- Access sample applications:
http://localhost:8080/samples/index.html

Installation du plugin java pour AMD 64
---------------------------------------
# urpmi java
choisir le plus récent
Voir où est installé java (pas mal tordu !) :
# which java
# ll /usr/bin/java
/usr/bin/java -> /etc/alternatives/java*
# ll /etc/alternatives/java
/etc/alternatives/java -> /usr/lib/jvm/jre-1.6.0-sun/bin/java*

ou encore :
# locate java | grep -i plugin
=> actuellement pas de plugin java pour les AMD 64 bits !


PHP
===

Affichage des infos
-------------------
PHP étant installé, l'affichage des infos se fait au moyen d'une page html contenant :
<?php phpinfo(); ?> 
=>
1 - voir ci-dessus Apache "Autoriser l'accès local à un répertoire", par exemple "toto"
2 - mettre dans ce répertoire (ou un sous-répertoire à condition d'avoir mis les autorisations ad-hoc) un fichier "InfosPHP.php" contenant juste :
<?php phpinfo(); ?> 
3 - http://locatlhost/toto
	et cliquer sur InfosPHP.php

Bases de données
////////////////

Mysql
=====
Doc : 	http://dev.mysql.com/doc/mysql/en/index.html
	http://dev.mysql.com/doc/mysql/fr/index.html
FAQ :	http://mysql.developpez.com/faq/
Portail PHP/MySQL : http://www.nexen.net/

Installation du serveur
***********************
# urpmi mysql
Voir les notes d'installation dans /usr/share/doc/mysql/README.urpmi

Vérifier si le service mysqld fonctionne, le lancer, l'arrêter ...
****************************************
# service mysqld status
		start
		restart
		stop

Fichier de configuration
************************
/etc/my.cnf

Première connexion
******************
$ mysql
il n'y a aucun mot de passe !
Les créer d'urgence pour root (= l'administrateur MySQL, n'a rien à voir avec le root linux !) et au moins un utilisateur :
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MotDePassePourRoot');
mysql> GRANT ALL PRIVILEGES ON *.* TO 'utilisateur'@'localhost' IDENTIFIED BY 'MotDePasseDeCetUtilisateur' WITH GRANT OPTION;
Vérifier (facultatif) le résulat :
mysql> SELECT Host, User FROM mysql.user; 
mysql> quit

Se connecter
************
$ mysql -h localhost -u joe -p
$ mysql -p
NB :  -h localhost et -u joe sont facultatifs : en leur absence c'est localhost et l'utilisateur qui lance la commande mysql qui sont pris par défaut.
- p pour qu'au démarrage de mysql le mot de passe soit demandé

Version, aide en ligne
**********************
Lancer simplement mysql :
$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.5-gamma

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SHOW DATABASES;			liste les DB
$ mysqlshow -u root -p			"
mysql> SELECT DATABASE();		affiche la DB actuellement sélectionnée 					(NULL si aucune DB est sélectionnée)
mysql> CREATE DATABASE toto;		Crée la DB toto
mysql> USE toto				Sélectionne la DB toto
CREATE TABLE `tb1` (
	`id_tb1` int(11) NOT NULL auto_increment,
	`nom` text NOT NULL,
....
	PRIMARY KEY  (`id_tb1`)
	) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

mysql> SHOW TABLES FROM toto;		liste les tables contenues dans la DB toto
mysql> DESCRIBE tb1;			Affiche la structure de la table tb1
mysql> DROP DATABASE tb1;		Supprime la DB tb1

Sécurité
********
Afficher les utilisateurs : mysql> SELECT Host, User FROM mysql.user;
---------------------------
mysql> SELECT Host, User FROM mysql.user;
+-----------+------+
| Host      | User |
+-----------+------+
| localhost |      |
| localhost | root |
+-----------+------+
La ligne où user est vide correspond à un accès anonyme avec les pleins droits !
=> supprimer le compte anonyme :
--------------------------------
mysql> DELETE FROM mysql.user WHERE User = '';		suppression
mysql> FLUSH PRIVILEGES;				mise à jour

Assigner un mot de passe chiffré :
----------------------------------
Plusieurs commandes possibles :
- SET PASSWORD
..............
mysql>  SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mot_de_passe');

- mysqladmin
............
$ mysqladmin -u root password "mot_de_passe"
$ mysqladmin -u root -h nom_ou_IP_machine password "mot_de_passe"

- UPDATE
........
mysql> UPDATE mysql.user SET Password = PASSWORD('mot_de_passe')
    ->     WHERE User = 'root';
mysql> FLUSH PRIVILEGES;

Vérifier la mise en place du mot de passe
-----------------------------------------
mysql> SELECT Host, User, password FROM mysql.user;

Se connecter apès avoir mis un mdp
----------------------------------
$ mysql -h host -u user -p		Se connecter après voir mis un mdp
Enter password:

Ajouter un utilisateur
----------------------
Utilisateur pouvant se connecter à partir de localhost avec tous les droits :
mysql> GRANT ALL PRIVILEGES ON *.* TO 'utilisateur'@'localhost'
    ->     IDENTIFIED BY 'mot_de_passe' WITH GRANT OPTION;

Utilisateur pouvant se connecter à partir de n'importe où avec tous les droits :
remplacer TO 'utilisateur'@'localhost' par TO 'utilisateur'@'%'

Autres mesures de sécurité
**************************
http://www.securityfocus.com/infocus/1726

Activer /désactiver l'accès par le réseau
*****************************************
Editer /etc/my.cnf
Désactiver = skip-networking		(existe par défaut dans le fichier)
Activer =  mettre "skip-networking" en commentaire

Messages d'erreur
*****************
$ mysql -u joe -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

=> Vérifier si mysqld est lancé
# service mysqld status
mysqld is stopped
# service mysqld start
Starting MySQL: 		[OK]

Installation de phpMyAdmin
=========================

Voir documentation phpMyAdmin

Configuration de la version stable (rpm)
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
MDV installe phpMyadmin dans /var/www/html/admin/phpMyAdmin
La documentation locale est dans :
http://localhost/admin/phpMyAdmin/Documentation.html
Pour lancer phpMyAdmin : 
http://localhost/admin/phpMyAdmin/

En cas de message d'erreur :
	cannot load mysql extension;
	please check PHP configuration
installer les fonctions nécessaires à PHP pour se connecter au servfeur Mysql :
php-mysql-x.x.x-xmdk

Mire phpMyAdmin, mais message d'erreur :
	The configuration file now needs a secret passphrase (blowfish_secret).
=> editer le fichier /var/www/html/admin/phpMyAdmin/config.inc.php :
chercher la ligne $cfg['blowfish_secret'] = '' et entrer une phrase quelconque qui servira à coder les mots de passe.

Autres messages d'erreur
- The mbstring PHP extension was not found and you seem to be using a multibyte charset. Without the mbstring extension phpMyAdmin is unable to split strings correctly and it may result in unexpected results.
=> probablement une fausse alerte. Installer php4-mbstring-x.x.x-xmdk
Se déloger
Redémarrer le serveur mysql
# service mysqld stop
# service mysqld start
Relancer phpMyAdmin
Le message d'erreur persiste !! A voir.

Création des tables nécessaires au "whole set of new features (bookmarks, comments, SQL-history, PDF-generation, field contents transformation, etc."
----------------------------------------------------------------------------------------------------------
Documentation, voir :
	http://localhost/admin/phpMyAdmin/Documentation.html
	/var/www/html/admin/phpMyAdmin/scripts/create_tables_mysql_4_1_2+.sql

- Créer un utilisateur 'pma' (par userdrake par exemple) et lui attribuer un mot de passe quelconque

- Mettre ce nom d'utilisateur et ce mot de passe dans le fichier de configuration de phpMyAdmin /var/www/html/admin/phpMyAdmin/config.inc.php :
$cfg['Servers'][$i]['controluser']   = 'pma';			// MySQL control user settings
								// (this user must have read-only
$cfg['Servers'][$i]['controlpass']   = 'mot de passe pour pma';	// access to the "mysql/user"

Indiquer dans ce même fichier de configuration les services voulus ; pas de service si la variable correspondante n'est pas initialisée :
$cfg['Servers'][$i]['pmadb']         = 'phpmyadmin';
				        // Database used for Relation, Bookmark and PDF Features
					// (see scripts/create_tables.sql)
					//   - leave blank for no support
					//     DEFAULT: 'phpmyadmin'
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
					// Bookmark table
					//   - leave blank for no bookmark support
					//     DEFAULT: 'pma_bookmark'
$cfg['Servers'][$i]['relation']      = 'pma_relation';
$cfg['Servers'][$i]['table_info']    = 'pma_table_info';
$cfg['Servers'][$i]['table_coords']  = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages']     = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info']   = 'pma_column_info';
$cfg['Servers'][$i]['history']       = 'pma_history';

Configurer correctement les droits du controluser pma : cf http://localhost/admin/phpMyAdmin/Documentation.html au paragraphe "Using authentication modes"
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'mot de passe pour pma';
GRANT SELECT (
    Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
    Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
    File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
    Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
    Execute_priv, Repl_slave_priv, Repl_client_priv
    ) ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
    ON mysql.tables_priv TO 'pma'@'localhost';

- Créer les tables nécessaires à l'aide du script fourni dans phpMyAdmin/scripts :
$ mysql -ulogin -p -vv </var/www/html/admin/phpMyAdmin/scripts/create_tables_mysql_4_1_2+.sql

- Lancer (relancer) phpMyAdmin

Ne semble pas fonctionner correctement : à voir.

Installation de la dernière version disponible sur le site  http://www.phpmyadmin.net/
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
- Décompresser :
	tar zxvf phpMyAdmin_x.x.x.tar.gz
- Mettre le dossier dans (sous) la racine du serveur web (/var/www/html), ou dans un répertoire accessible par apache (cf. Apache, alias)
- Configurer (fichier config.inc.php)
compléter:
$cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin-2.6.0-pl3/';
$cfg['PmaAbsoluteUri_DisableWarning'] = TRUE;
$cfg['Servers'][$i]['host']          = 'localhost';

Installation de phpMyAdmin-2.8.0.3 (à partir de cooker)
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Documentation : /var/www/phpMyAdmin/Documentation.html

Le fichier de configuration "config.inc.php" de phpMyAdmin n'existe pas. Il faut le créer à partir du modèle "config.default.php" fourni :
/var/www/phpMyAdmin/libraries/config.default.php -> /etc/phpMyAdmin/config.default.php
Placer une copie de ce fichier (ou un lien) dans le répertoire principal de phpMyAdmin (celui contenant le fichier index.php, en principe /var/www/phpMyAdmin ou tout autre endroit où l'on a installé phpMyAdmin) ; nommer cette copie config.inc.php.
Seule chose à modifier (pour commencer) :
$cfg['Servers'][$i]['auth_type']     = 'cookie';    // Authentication method (config, http or cookie based)?
=> remplacer 'cookie' par 'http'

Script de configuration : /usr/share/doc/phpMyAdmin-2.8.0.3/scripts/setup.php : intérêt? Fonctionnemnet ?

En cas de login/mot de passe rejeté : vérifier qu'Apache et msql sont bien démarrés !
# service httpd status|start
# service mysqld status|start

Sécurisation
°°°°°°°°°°°°
Pour qu'apache présente une fenêtre login/password :

1 - fichier config.inc.php : remplacer config par http:
$cfg['Servers'][$i]['auth_type']     = 'http';

2 - Créer un fichier de mots de passe utilisable par apache :
cf. documentation apache : file:/usr/share/doc/apache2-manual-2.0.50/howto/auth.html
Créer le fichier de mots de passe n'importe où (éviter de le mettre sous /var/www/html qui est la racine du serveur web sous Mandrake, lisible sauf précautions particuliéres (.htaccess) par tout le monde). Le placer par exemple dans la zone de fichiers de configuration d'apache (/etc/httpd). Créer par exemple un dossier spécial :
# mkdir /etc/httpd/passwd
Puis créer (-c) avec l'utilitaire (apache) htpasswd un fichier de mots de passe avec un nom quelconque (ici par exemple .htpasswd). Ici pour l'utilisateur root :
# htpasswd -c /etc/httpd/passwd/.htpasswd root
répondre par le mot de passe à utiliser pour root
(NB : pour que le nouvel utilisateur soit pris en compte par apache il est nécessaire de redémarrer apache (service httpd restart). Ici ce n'est pas utile : il sera redémarré au point 4
Pour ajouter un nouvel utilisateur, même commande, mais ATTENTION ! sans -c, sinon le fichier de mots de passe est effacé)

3 - Indiquer à apache où se trouve ce fichier de mots de passe :
Dans le fichier de configuration d'apache /etc/httpd/conf/commonhttpd.conf, rajouter dans la partie concernant phpMyAdmin les directives suivantes :

<Directory "/var/www/html/phpMyAdmin-2.6.0-pl3">
...
    AuthType Basic
    AuthName "phpMyAdmin"
    AuthUserFile /etc/httpd/passwd/.htpasswd
    Require user toto
</Directory>

Explication :
<Directory "/var/www/html/phpMyAdmin-2.6.0-pl3">	indique quel répertoire est concerné (celui
							 qui contient phpMyAdmin)
    AuthType Basic					type d'identification
    								Basic : le mot de passe circule en clair
								Digest : le mot de passe est transmis crypté : n'est
								supporté que par les clients web les plus récents   :
								OK avec konqueror
								Ne fonctionne pas avec Mozilla 1.7.2 et Firefor 0.9.3
    AuthName "phpMyAdmin"				Invite affichée dans la fenêtre de demande de login/mot de passe
    AuthUserFile /etc/httpd/passwd/.htpasswd		/path/vers/le/fichier_de_mots_de_passe
    Require user root					utilisateur autorisé
</Directory>

4 - Relancer apache (service httpd restart) pour que les nouvelles directives soient prises en compte

5 - Si on veut indiquer non plus un utilisateur, mais un (ou des) groupes d'utilisateurs
<Directory "/var/www/html/phpMyAdmin-2.6.0-pl3">
    AuthType Digest
    AuthName "Accès à phpMyAdmin"
    AuthUserFile /etc/httpd/passwd/.htpasswd
    AuthGroupFile /etc/httpd/passwd/groups
    Require group Nom_du_groupe 
</Directory>

Explication :
    AuthGroupFile /etc/httpd/passwd/groups		groups : nom du fichier (il peut être quelconque)
    							où sont définis un (ou des) groupe(s)

Dans le fichier texte "groups" définir les groupes de la facon suivante :
Nom_du_groupe: user4 user6 user25

Pour d'autres possibilités de sécuriser l'accès au serveur web, voir la documentation apache : file:/usr/share/doc/apache2-manual-2.0.50/howto/auth.html plutôt bien faite.

phpMyadmin-2.10.0.2 sous MDV 2008.0
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
phpMyadmin est maintenant installé dans /var/www/ (/var/www/phpmyadmin). On peut le déplacer ailleurs.
Documentation : /usr/share/doc/phpmyadmin-2.10.0.2/Documentation.txt
		/var/www/phpmyadmin/Documentation.html
Configuration : /etc/phpmyadmin/config.default.php (/var/www/phpmyadmin/libraries/config.default.php -> /etc/phpmyadmin/config.default.php)
La doc précise
- de copier config.default.php dans config.inc.php
- d'éditer et de compléter ce dernier (voir plus loin)
- de le copier dans la racine de phpmyadmin (phpmyadmin/libraries/config.default.php est d'abord lu puis phpmyadmin/config.inc.php.
# cp /var/www/phpmyadmin/libraries/config.default.php /var/www/phpmyadmin/config.inc.php 

Configuration de phpmyadmin
---------------------------
Voir plus haut "Installation de phpMyAdmin-2.8.0.3 (à partir de cooker)"

Configuration du serveur Apache
-------------------------------
Les modifications ne sont pas apportées dans /etc/httpd/conf/httpd.conf, mais dans /etc/httpd/conf/webapps.d/phpmyadmin.conf
Modifier ce fichier en conséquence en particulier
	Alias /phpmyadmin /var/www/phpmyadmin	si on a modifié l'emùplacement de phpmyadmin
et
	<Directory /var/www/html/phpmyadmin>
    		Allow from All
	</Directory>
pour renforcer la sécurité
puis redémarrer httpd


Quelques problèmes
°°°°°°°°°°°°°°°°°°
couldn't perform authentication. AuthType not set!
--------------------------------------------------
"Require user" non précédé de la façon dont doit se faire l'authentification de l'utilisateur.
=> voir "Authtype" dans le paragraphe "Sécurisation" ci-dessus

Permission denied: Could not open password file: /etc/httpd/passwd/htpasswd
access to /<LaPageWeb>/ failed, reason: verification of user id 'toto' not configured
-------------------------------------------------------------------------------------
=> Apache doit pouvoir lire le fichier htpasswd. Tester où ça bloque avec :
# su - apache
Mettre les droits d'accès corrects et de lecture corrects :
# chmod 755 /etc/httpd/passwd
# chmod 644 /etc/httpd/passwd/htpass
ou de préférence (droits plus restreints) :
ou bien les 2 commandes :
# chown root:apache /etc/httpd/passwd
# chown root:apache /etc/httpd/passwd/htpass
# chmod 750 /etc/httpd/passwd
# chmod 640 /etc/httpd/passwd/htpass

Existing configuration file (./config.inc.php) is not readable
--------------------------------------------------------------
Apache ne peut pas le lire. Appartient probablement à root:root)
# ll /var/www/phpmyadmin/config.inc.php
-rw-r----- 1 root root	 /var/www/phpmyadmin/config.inc.php
# chown root:apache /var/www/phpmyadmin/config.inc.php

MySQL - ODBC - OpenOffice
=========================
Cf. http://support.openoffice.org/index.html, cliquer sur "Free: OpenOffice.org, ODBC,and MySQL How-To"
(fichier OOoMySQL9.pdf)

- Installer MySQL
- Installer MyODBC
- Configurer /etc/odbcinst.ini et /etc/odbc.ini comme indiqué dans la doc ci-dessus
$ cat /etc/odbc.ini
[MySQL-test]
Description     = MySQL database test
Driver          = MySQL
Server          = localhost
Database        = test
Port            = 3306

$ cat /etc/odbcinst.ini (à rajouter dans ce fichier, il y a probablement deja un paragraphe [PostgreSQL])
[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc3.so.1.0.0
Setup =         = /usr/lib/libmyodbc3S.so.1.0.0
FileUsage       = 1

- Voir la version et la config d'ODBC :
$ odbcinst -j
- Tester la configuration :
$  isql -v MySQL-test login MotDePasse

Problèmes
---------
1 :
$ isql -v MySQL-test test
[IM004][unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV fail
ed
[ISQL]ERROR: Could not SQLConnect
=> dans /etc/odbcinst.ini
Driver		= /usr/lib/libmyodbc3S.so.1.0.0

le driver indiqué n'est pas le bon : "S" est seulement pour le setup

2 :
$ isql -v MySQL-test test
[S1T00][unixODBC][MySQL][ODBC 3.51 Driver]Access denied for user 'test'@'localhost' (using password: NO)
[ISQL]ERROR: Could not SQLConnect
=> l'utilisateur test n'existe pas (a été supprimé)
ou bien, même message d'erreur mais avec un utilisateur existant :

3 :
$  isql -v MySQL-test NomDeLogin
[S1T00][unixODBC][MySQL][ODBC 3.51 Driver]Access denied for user 'NomDeLogin'@'localhost' (using password: NO)
[ISQL]ERROR: Could not SQLConnect
=> Connexion refusée car pas de mot de passe

Installation/configuration de PostgreSQL
========================================
http://www.postgresql.org
http://www.postgresqlfr.org/?q=node/view/33 (Tutoriel pour installer PostgreSQL et pgacces sous Mandrake et paramétrer les logiciels pour qu'ils fonctionnent ensemble)
Groupes de discussion :
http://archives.postgresql.org/pgsql-admin/

Installer le rpm MDK
********************
Lors de l'installation du rpm un user "postgres" est créé sans mot de passe (!) avec la configuration suivante :
	User: postgres
	Home directory: /var/lib/pgsql
	Default shell: /bin/bash
Lui assigner un mot de passe avec les commandes sous root :
# userdrake
(si postgres n'apparaît pas => menu/Options/Filter system/users)
ou
# passwd postgres

Lancer postgresql, vérifier si postgresql est lancé :
-----------------------------------------------------
# service postgresql status
postmaster (pid 4037 4036 4032) is running...

Lancer (start) ou relancer (restart)
# service postgresql restart
                                                                [  OK  ]
Starting postgresql service:                                    [  OK  ]

Ou bien :
# /etc/rc.d/init.d/postgresql start

Autre possibilité (cf. pg_ctl --help)
pg_ctl start -D /var/lib/pgsql/data

NB : pour autoriser l'accès au serveur via le réseau (localhost y compris) 2 possibilités :
- mettre tcpip_socket = true dans /var/lib/pgsql/data/postgresql.conf
- ou bien rajouter l'option -i à pg_ctl. 

Sécuriser le compte  postgres
-----------------------------
Par défaut postgres n'a pas de mot de passe non plus au niveau de la base. Pour créer ce mot de passe :
# psql template1 postgres
...
template1=# SELECT * from pg_shadow ;
... 
template1=# UPDATE pg_shadow SET passwd = 'mon_mdp';

Pour voir si le mdp a bien été entré :
template1=# select * from pg_shadow;
 usename  | usesysid | usecreatedb | usesuper | usecatupd | passwd  | valuntil | useconfig
----------+----------+-------------+----------+-----------+---------+----------+-----------
 postgres |        1 | t           | t        | t         | mon_mdp |          |
 toto     |        1 | t           | t        | t         | mon_mdp |          |

Attention : cette commande met tous les mots de passe à la même valeur !
Utiliser plutôt :
template1=# ALTER USER toto WITH PASSWORD 'fifi' ;
et vérifier :
template1=# SELECT * from pg_shadow WHERE usename = 'toto';

Pour que le mot de passe soit inséré (et apparaisse) crypté et non pas en clair, ouvrir /var/lib/pgsql/data/postgresql.conf et dans :
 # - Security & Authentication -
mettre :
password_encryption = true
puis relancer postgresql

Aide en ligne psql :
\h
\h commande

Pour quitter psql : 
template1=# \q;

Créer un utilisateur
--------------------
su postgres
createuser MonNom
Attention : le mot de passe demandé est celui de postgres dans la BD et non pas le mot de passe de l'utilisateur unix postgres. 
createuser ne permet pas non plus d'affecter un mot de passe au nouvel utilisateur. Pour lui créer un mot de passe :
$ psql template1 -U postgres
template1=# ALTER USER MonNom WITH PASSWORD 'MonMotdePass' ;
et pour vérifier :
template1=# SELECT USER MonNomU from pg_shadow ;

Vérifier où MDK a installé les fichiers de configuration de postgresql
----------------------------------------------------------------------
# find / -name pg_hba.*
/usr/share/pgsql/pg_hba.conf.sample
/var/lib/pgsql/data/pg_hba.conf

=> les fichiers de configuration sont dans /var/lib/psql/data

Ou bien installer Posgresql à partir des sources
************************************************
Récupérer les sources sur http://www.postgresql.org/
Les décompresser :
# tar -zxvf postgresql-xxx.tar.gz
Les possesseurs et groupes des fichiers sont rpc:rpc !?
# chown -Rv root:root postgresql-xxx.tar.gz

L'installation est très bien expliquée dans le fichier INSTALL :
./configure
gmake
su
gmake install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test

Ici le programme s'installe dans 
/usr/local/pgsql
/var/lib/pgsql/

Pour pouvoir démarrer et stopper le serveur avec la commande "service postgresql", récupérer dans les sources le script "linux.sh". Il permet aussi de lancer automatiquement Postgresql au démarrage du PC et l'arrêter lors de l'arrêt du PC. Ce script est situé dans le répertoire :contrib/start-scripts, a partir de la racine de l'archive. Placer ce fichier dans /etc/init.d/, le renommer "postgresql". Consulter la doc très claire, contenue dans le script, pour le configurer correctement.

Configurer postgresql
*********************

Fichier /var/lib/pgsql/data/pg_hba.conf ("postgresql host-based authentication")
--------------------------------------------------------------------------------
cf.http://www.postgresql.org/docs/7.3/static/client-authentication.html
Pour commencer mettre des autorisations assez permissives, par exemple :
# TYPE	DATABASE	USER		IP-ADDRESS	IP-MASK			METHOD
local 	all		all 							trust
host 	all 		all 		127.0.0.1	255.255.255.255		trust

ce qui signifie :
	accès : local (à partir du PC) ou host (à partir du réseau, y compris localhost) 
	bases de données : all = accès à toutes les bases de données
	utilisateurs : all = tous
	méthode d'identification :
		trust : accepte tout utilisateur sans mot de passe

Puis limiter l'accès au strict minimum nécessaire, par exemple :
local	all		truc, postgres								md5
host	all		truc, postgres		127.0.0.1, machine.fr	255.255.255.255		md5

soit accès permis seulement aux utilisateurs "truc" et "postgres" en local ou par réseau (localhost et machine.fr uniquement), avec mot de passe obligatoire crypté md5.

Fichier /var/lib/pgsql/data/postgresql.conf
-------------------------------------------
tcpip_socket = true
port = 5432 (ou un autre port de son choix)

Après ces changements de configuration, ne pas oublier de faire la mise à jour par : 
postgresql start (ou restart)
Ou bien :
	pg_ctl reload
ou en cas d'erreur "pg_ctl: no database directory specified and environment variable PGDATA unset"
	pg_ctl -D /var/lib/pgsql/data -l logfile reload

Quelques commandes
******************
Trouver le n° de version
------------------------
$ psql --version

Créer une base de données "test"
--------------------------------
$ createdb test

Lister les BD disponibles
-------------------------
$ psql -U NomUtilisateur -l

Installation de phpPgAdmin
==========================
Installer le rpm fourni par Mandrake est sans intérêt : préférer la dernière version disponible sur :
http://phppgadmin.sourceforge.net/
actuellement : phpPgAdmin-3.5.1.tar.bz2

Décompresser :
$ tar -jxvf phpPgAdmin-3.5.1.tar.bz2
Déplacer le répertoire créé (phpPgAdmin) vers un endroit acceptable quelconque : par exemple le rpm Mandrake installe phpPgAdmin dans la racine du serveur apache : 
/var/www/html/admin/phpPgAdmin
Si on l'a installé de cette façon, on le lancera donc par :
http://localhost/admin/phpPgAdmin

Dans le cas où on l'a installé "à la main" par exemple dans /installe/admin, ajouter dans la config de Apache (/etc/httpd/conf/commonhttpd.conf) :

Alias /toto /installe/admin/phpPgAdmin

<Directory /installe/admin/phpPgAdmin>
    Options Indexes FollowSymLinks
   <IfModule mod_access.c>
      Order deny,allow
      Deny from all
      Allow from localhost
   </IfModule>
</Directory>

S'y connecter avec :
http://localhost/toto
Rajouter si nécessaire après "Allow from" les machines autorisées à se connecter en plus de localhost :
	Allow from localhost 192.168.1.23 monpc.fr

knoda
=====
www.knoda.org

2 packages à installer :
- hk_classes
- knoda
Télécharger et décompresser chaque package

Installer en premier hk_classes 
Pour que les BD postgresql, mysql, sqlite et ODBC soient reconnues il faut que les packages -devel correspondants aient été installés au préalable (avant hk_classes)

xmms
====
Pour accéder au menu : click droit

Le skin par défaut (noir avec boutons bleu foncé) est illisible/inutilisable, à dégouter d'utiliser xmms : télécharger xmms-skins et choisir un skin correct (Helix-Sawfish par exemple)

La liste des url (radios à écouter) se trouve à la fin du fichier ~/.xmms/config sous la forme :
url_history_length=2
url_history1=http://ogg.tv-radio.fr:1441/encoderfip.ogg
url_history2=http://accent4.dyndns.org:8000/

Radio, musique, enregistrement des flux (stream)
================================================
Interface d'accès à des radios :
	streamtuner	http://www.nongnu.org/streamtuner/

Liste de radios :
	streamtuner	http://www.nongnu.org/streamtuner/
	shoutcast	http://www.shoutcast.com/

Enregistrement des flux
	streamripper	http://streamripper.sourceforge.net/

Synchronisations
================
rsync				en ligne de commande (cf. ci-dessous)
draksync			graphique

Sauvegardes
===========
http://yann.morere.free.fr/article.php3?id_article=74


rsync
°°°°°
rsync -Cvaub  --exclude='/tmp/' --exclude='/downloads/' ~/ /sauvegarde_mon_home
ou
rsync -Cvau --exclude-from=dir_exclus.lst / /sauvegarde_tout

avec un fichier texte dir_exclus.lst contenant par exemple :
...................
/proc
/tmp
/mnt
...................

-C	évite les fichiers inutile (*~, *.bak,core ...)
-a	sert à passer en mode archive (conservation des droits, des liens ...)
-u	pour transférer uniquement les fichiers nouveaux ou modifiés (plus exactement, ne transfère pas les fichiers
	 qui sont plus récents sur la destination)
-b	fait une copie des fichiers modifiés (avec un ~, option pas toujours utile).
-v	verbose
-r	récursif
-n	pour un transfert "à blanc" : montre ce qui sera transferré


rsync Via SSH :			(n'est plus nécessaire avec les versions récentes de rsync)
rsync -e 'ssh' -vau --delete --exclude='/tmp/' ~/ utilisateur@machine:~/

--delete	efface les fichiers sur la destination qui ne sont pas présents sur le source 

Autre exemple : sauvegarder via samba une partition Windows (ici D:)
----------------------------------------------------------- 
$ rsync -Cav --exclude-from=win_exclude.lst --delete /mnt/Win/D  /repertoire/destination
- La partition D est montée en /mnt/Win/D
- win_exclude.lst contient, par exemple, une liste de répertoires à ne pas sauvegarder ; ces répertoire ne sont pas obligatoirement présents sur D :
MSDOS6
Sauvegardes
_Download
System?Volume?Information
RECYCLER
Recycled
pagefile.sys
Temp
temp1
temp
Tmp
tmp
tmp1
tmp2


tar
---

A voir :
- backuponcd
- cdbackup
- rsnapshot
- BackupPC
- storeBackup		http://sourceforge.net/projects/storebackup
- dar			http://dar.linux.free.fr/
- et KDar		http://members.shaw.ca/jkerrb/kdar/index.html
- DrakBackup
- rdiff-backup
- bacula
- amanda
- areca backup		http://areca.sourceforge.net
- Rsync: le meilleur des systèmes de sauvegarde
	http://linuxfocus.vlsm.org/Francais/March2004/article326.shtml
- rsync examples
	http://rsync.samba.org/examples.html
- Easy Automated Snapshot-Style Backups with Linux and Rsync
	http://www.mikerubel.org/computers/rsync_snapshots
	Excellent ! Contient aussi des explications très claires sur le fonctionnement de
	rsync, cron, hard links, cp
- dirvish
- La Sauvegarde sous GNU/Linux
	http://linux.ensimag.fr/sauvegarde.html

- Mise en oeuvre d'un solution de clonage sur disque dur IDE externe
	http://erick.bullier.org/pub/real_perso/backupDD/
- Linux Backups mini-FAQ
	http://kmself.home.netcom.com/Linux/FAQs/backups.html
- Backup and Restore Procedures
	http://tldp.org/LDP/lame/LAME/linux-admin-made-easy/backup-and-restore.html
- The Linux System Administrator's Guide: Chapter 12. Backups
	http://tldp.org/LDP/sag/html/backups.html
- Backing Up Windows Machines to a Linux Host
	http://tldp.org/HOWTO/SMB-HOWTO-11.html
- Linux Complete Backup and Recovery HOWTO
	http://tldp.org/HOWTO/Linux-Complete-Backup-and-Recovery-HOWTO/index.html
- EVMS User Guide-Chapter 11. Creating snapshots
	http://tldp.org/LDP/EVMSUG/html/whatissnapshotting.html

Installation de BackupPC (BackupPC-3.0.0beta2)
����������������������������������������������
http://backuppc.sourceforge.net/			(téléchargement)
http://backuppc.sourceforge.net/faq/BackupPC.html	(Documentation)
Une fois les sources téléchargées, la documentations est dans BackupPC-3.0.0beta1/doc/BackupPC.html
Suivre pas à pas cette documentation plutôt bien faite.

Lirairies::modules perl à installer, si pas déjà présentes (cf. documentation) :
--------------------------------------------------------------------------------
Compress::Zlib
Archive::Zip
File::RsyncP

Vérifier si ces librairies sont déjà présentes :
----------------------------------------------
# perl -MCPAN -e shell
cpan> i Librairie::Module

Sinon installer celles qui manquent :
-------------------------------------
cpan> install Librairie::Module
On peut aussi les installer à partir des rpm, exemple :
# urpmi perl-Compress-Zlib

Samba
-----
Pour la sauvegarde de machines sous Windows via samba (probablement inutile si la sauvegarde est faite avec rsync), vérifier la présence des programmes smbclient et nmblookup
Sous MDV2007 smbclient3 et nmbclient3

Versions de tar et rsync
-------------------------
$ tar --version						(> 1.13.20)
tar (GNU tar) 1.15.1
$ rsync --version					(> 2.6.3)
rsync  version 2.6.6  protocol version 29

Installer Backuppc proprement dit
---------------------------------
$ tar zxvf BackupPC-3.0.0beta1.tar.gz
Dans le répertoire où a été décompressé BackupPC-3.0.0beta2 :
# perl configure.pl
Répondre aux questions
=> Sauvegarder l'ensemble des messages affichés par perl configure.pl (par exemple dans un fichier "Output_configure.pl.txt" :
- utile pour se souvenir des paramètres entrés (répertoires d'installation, etc.
- contient des infos utiles pour la suite.

NB : dans les messages affichés :
- "I found the following locations for these programs:"
un certain nombre de programmes n'auront pas été trouvés : ne pas s'en soucier, le problèmes sera réglé plus tard au niveau du fichier de configuration /etc/BackupPC/config.pl (cf. paragraphe suivant).

- "Are these paths correct? [y]?"
répondre "y" : on fera aussi les vérifications et modifications èventuelles au niveau de /etc/BackupPC/config.pl

- "BackupPC should run as user [backuppc]?"
=> crèer un utilisatur de backup dèdiè "backuppc" (ou tout autre non de son choix) et rèpondre par le nom de cet utilisateur. Prèciser son home directory dans lequel on pourra mettre les clés ssh dans ~/.ssh


Configurer
----------
Fichier de configuration général : /etc/BackupPC/config.pl
Le script configure.pl ci-dessus a déjà rempli un certain nombre de variables de ce fichier. Configures "à la main" les autres.

4 sections (cf commentaires dans le fichier) :
1 - Configuration générale du serveur
2 - backups : quand et quoi
3 - backups : comment
4 - statut et messages
5 - interface CGI

Les configs 2, 3, 4 et 5 peuvent etre personnalisées pour chaque PC à sauvegarder en mettant un fichier config.pl dans directory_de_backup/HostName

# Full path to various commands for archiving
Installer les programmes manquants si nécessaire :
- par2 : si utilisé (si $Conf{ArchivePar} = 1 dans /etc/BackupPC/config.pl)
récupérer sur le site http://sourceforge.net par2cmdline-0.4-x86-Linux-2.4.20-Redhat-9.0.tar.gz
	copier par2 dans /usr/bin
	# chown root:root /usr/bin/par2
	# chmod 755 /usr/bin/par2
- bzip2 (compression des backups) : si utilisé (si $Conf{ArchiveComp} = 'bzip2' dans /etc/BackupPC/config.pl)
	dans cooker main pour MDV2006

# What transport method to use to backup each host
=> indiquer la plus courante. Pas important car modifiable pour chaque hôte à sauvegarder
$Conf{XferMethod} = 'rsync';

Machines à sauvegarder
----------------------
Compléter le fichier /etc/BackupPC/hosts

Fichiers de configuration pour chaque client
--------------------------------------------
Ils doivent être mis dans le répertoire de configuration "/etc/BackupPC/pc" avec comme nom le nom du client (ou n°IP) terminé par ".pl".
- si le nom du client est 192.168.0.36 =>  /etc/BackupPC/pc/192.168.0.36.pl

Dans ces fichiers, modifier les variables concernant l'hôte à sauvegarder : sections 2 et 3 principalement (2 - backups : quand et quoi, 3 - backups : comment)
- Pour rsync les variables à vérifier sont (cf doc) :
$Conf{RsyncClientPath}		chemin vers l'exécutable rsync sur l'hôte à sauvegarder
$Conf{RsyncClientCmd}		Commande de sauvegarde avec ses arguments
$Conf{RsyncClientRestoreCmd}	Commande de restauration avec ses arguments
$Conf{RsyncShareName}, 		Les répertoires à sauvegarder
$Conf{RsyncArgs}		Arguments passés à la commande rsync de backup
				on peut y ajouter:
				           '-v',
				           '--exclude', '/proc',
				           '--exclude', '*.tmp',
$Conf{RsyncRestoreArgs}.	Arguments passés à la commande rsync de restauration

Voir aussi les variables :
$Conf{ClientCharset}
$Conf{BackupFilesExclude}


Installer le script de démarrage
--------------------------------
Cf. BackupPC-3.0.0beta1/init.d/README
Il se trouve dans les sources (/BackupPC/BackupPC-3.0.0beta1/init.d/linux-backuppc) et a été configuré par configure.pl
# cp linux-backuppc /etc/init.d/backuppc
# chmod 700 /etc/init.d/backuppc

Le tester
---------
# service backuppc status | start | stop
ou bien (équivalent) :
# /etc/init.d/backuppc status | start | stop

(pour recharger simplement la configuration sans stopper et redémarrer : reload)

Communiquer avec BackupPC
-------------------------
Permet de voir si tout fonctionne bien. Ce qui suit permet d'accéder directement à des programmes utilitaires normalement utilisés par l'interface web. S'exécute sous "user" backuppc :

$ su - backuppc
et si le répertoire d'installation est /opt/BackupPC :
$ /opt/BackupPC/bin/BackupPC_serverMesg status info
$ /opt/BackupPC/bin/BackupPC_serverMesg status jobs
$ /opt/BackupPC/bin/BackupPC_serverMesg status hosts

Pour vérifier que BackupPC peut envoyer correctement des mails dans la BAL "user@ServeurDeMail" :
$ /opt/BackupPC/bin/BackupPC_sendEmail -u user@ServeurDeMail
=> message reçu : 
This is a test message from /opt/BackupPC/bin/BackupPC_sendEmail.

Regards,
PC Backup Genie

Pour envoyer un message avertissant que BackupPC est arrêté, mettre dans le cron de l'utilisateur backuppc :
/opt/BackupPC/bin/BackupPC_sendEmail -c
le message est envoyé à l'administrateur (ou aux administrateurs) listés dans /etc/BackupPC/config.pl variable $Conf{EMailAdminUserName} :
$Conf{EMailAdminUserName} = 'admin1@ServeurDeMail, admin2@ServeurDeMail';
=> Contenu du message
Error: cannot connect to BackupPC server.

Regards,
PC Backup Genie

Interface web (CGI)
-------------------
Voir où l'interface CGI a été installée lorsque BackupPC a été configuré au moyen de configure.pl 
(cf. "Installing cgi script BackupPC_Admin in" dans le fichier Output_configure.pl.txt que l'on a sauvegardé)
Dans ce répertoire il y a 
-r-sr-xr--  1 backuppc backuppc 3986 Oct 26 18:03 BackupPC_Admin*

Adapter les droits :
^^^^^^^^^^^^^^^^^^
# chown backuppc:apache BackupPC_Admin
# ll /var/www/cgi-bin/BackupPC
-r-xr-xr--  1 backuppc apache 3986 Oct 26 18:03 BackupPC_Admin*
# chmod u+s,o= BackupPC_Admin
# ll /var/www/cgi-bin/BackupPC
-r-sr-x---  1 backuppc apache 3986 Oct 26 18:03 BackupPC_Admin*

Fichier config.pl et variables CGI : vérifier qu'elles sont correctement positionnées :
�����������������������������������������������������������������������
$Conf{CgiAdminUserGroup}
$Conf{CgiAdminUsers}
$Conf{CgiImageDir}
$Conf{CgiImageDirURL} i

Configurer Apache
^^^^^^^^^^^^^^^^^
Editer /etc/httpd/conf/httpd.conf et rajouter une configuration du type :

ScriptAlias /backuppc/ "/chemin/vers_BackupPC_Admin/"

<Directory "/chemin/vers_BackupPC_Admin/">
   Options ExecCGI
   AllowOverride None
   Order deny,allow
   Deny from all
   Allow from 127.0.0.1
   AuthName "BackupPC Access"
   AuthType Basic
   AuthUserFile /etc/BackupPC/htpass.backuppc
   Require valid-user
</Directory>

Créer les utilisateurs qui pourront accéder à l'interface web de BackupPC et entrer les mots de passe qu'ils devront utiliser 
# htpasswd -c /etc/BackupPC/htpass.backuppc root
# htpasswd /etc/BackupPC/htpass.backuppc backuppc

Lancer l'interface web
^^^^^^^^^^^^^^^^^^^^^^
http://localhost/backuppc/BackupPC_Admin

Problèmes éventuels
------------------
- Dans le menu à gauche, sous "Hosts" pas de liste déroulante avec le nom des machines à sauvegarder
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
=> taper dans la zone de recherche le nom d'une machine déclarée dans le fichier /etc/BackupPC/hosts et cliquer sur <Go>
Résultat : le message d'erreur "Error: Only privileged users can view information about host <nom de l'hôte>." s'affiche.
Solution : voir les variables 
	$Conf{CgiAdminUserGroup}
	$Conf{CgiAdminUsers}
La configuration de ces variables n'est pas très claire. Mettre per exemple :
	$Conf{CgiAdminUserGroup} = '*';
	$Conf{CgiAdminUsers}     = 'user1 user2';
ou
	$Conf{CgiAdminUserGroup} = '';
	$Conf{CgiAdminUsers}     = 'user1 backuppc';
pour pouvoir administrer le serveur (à revoir).

Sauvegarde
----------
Choisir dans la liste déroulane sous "Hosts" un ordinateur à sauvegarder (<pc.domaine>)
Cliquer sur [Start Full Backup]
BackupPC crée automatiquement l'arborescence suivante sous le répertoire de backup (ici /backup) : attention il faut que l'utilisateur backup ait les droits d'accès et d'écriture dans ce répertopire :

# ll -R /backup
/backup:
total 0
drwxr-x---  3 backuppc backuppc 88 Nov  1 11:56 pc/

/backup/pc:
total 0
drwxr-x---  2 backuppc backuppc 136 Nov  1 11:56 <pc.domaine>/

/backup/pc/<pc.domaine>:
total 8
-rw-r-----  1 backuppc backuppc   0 Nov  1 11:56 LOCK
-rw-r-----  1 backuppc backuppc 189 Nov  1 11:56 LOG.112006
-rw-r-----  1 backuppc backuppc 618 Nov  1 11:56 XferLOG.bad


=> pour avoir une sauvegarde personnalisée de ce PC, placer dans le répertoire /etc/BackupPC/pc/ une copie du fichier /etc/BackupPC/config.pl en lui donnant le nom ou l'adresse IP du PC à sauvegarder suivi de .pl (nom.du.client.pl) et ajuster les variables pour ce PC.

Configuration de ssh
-------------------
Cf. http://backuppc.sourceforge.net/faq/ssh.html#how_can_client_access_as_root_be_avoided

Sur le client
^^^^^^^^^^^^^
- Créer un utilisateur ("admsave" par exemple) et lui mettre un mot de passe
- Configurer sudo (en lançant visudo)
    admsave  ALL=NOPASSWD: /usr/bin/rsync
=> l'utilisateur admsave peut lancer en root sans mot de passe uniquement la commande rsync
- Editer /etc/ssh/sshd_config
Si le mot clé AllowUsers existe, rajouter admsave dans les utilisateurs autorisés par exemple :
AllowUsers toto backuppc@<serveur_de_backup>
(cf. www.faqs.org/docs/securing/chap15sec122.html)

Sur le serveur
^^^^^^^^^^^^^^
- Vérifier que l'utilisateur "backuppc" puisse se connecter via ssh en tant qu'utilisateur "admsave" sur le client
$ su - backuppc
Password :
[backuppc]$ ssh admsave@<client>

- Pour éviter d'avoir à entrer le mot de passe de l'utilisateur "admsave", créer un couple clé publique/clé privée :
[backuppc]$ ssh-keygen -t rsa
et copier la clé publique dans le répertoire de l'utilisateur admsave sur le client :
[backuppc]$ scp ~/.ssh/id_rsa.pub admsave@<client>:~/.ssh/authorized_keys
(NB : le répertoite .ssh doit exister sur le client, sinon message d'erreur :
scp: /home/admsave/.ssh/authorized_keys: No such file or directory)

- Editer /etc/BackupPC/config.pl et modifier $Conf{RsyncClientCmd} pour que l'utilisateur "admsave" puisse lancer "sudo rsync" sans avoir à fournir le mot de passe root : remplacer
$Conf{RsyncClientCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+';
par :
$Conf{RsyncClientCmd} = '$sshPath -q -x -l admsave $host nice -n 19 sudo $rsyncPath $argList+';

- Tester en lançant une sauvegarde complète
- Modifier/créer un fichier et un répertoire sur le client et vérifier que la sauvegarde incrémentale fonctionne.

- De même modifier la commande de restauration
$Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l root $host $rsyncPath $argList+';
en 
$Conf{RsyncClientRestoreCmd} = '$sshPath -q -x -l admsave $host nice -n 19 sudo $rsyncPath $argList+';

- et tester en lançant une restauration


Démarrage automatique de BackupPC
---------------------------------
Quand tout fonctionne bien, configurer le démarrage automatique :
# chkconfig --add backuppc
# chkconfig --level 35 backuppc on		(démarre dans les niveaux 3 et 5)
						( cf /etc/inittab :
							3 - Full multiuser mode
							5 - X11
# chkconfig --list backuppc
ou passer par mcc.

Fichier de logs
---------------
/var/log/BackupPC/LOG

Configuration pour sauvegarde d'un PC sous windows en utilisant ssh et rsync
-----------------------------------------------------------------------------
Sur le client
-------------
- Installer cygwin
modifier la sélection par défaut pour inclure rsync
- Configurer ssh
ssh-user-config

NB : sudo et nice n'existent pas dans cygwin

Sur le serveur
--------------
- Vérifier que la connexion en ssh sur le client avec le login utilisateur que l'on veut utiliser fonctionne.
Copier ou ajouter la clé publique de backuppc dans le répertoire de l'utilisateur chargé de la sauvegarde sur le client :
Pour copier :
[backuppc]$ scp ~/.ssh/id_rsa.pub <AdministrateurDeSauvegarde>@<client>:~/.ssh/authorized_keys
(NB : le répertoite .ssh doit exister sur le client, sinon message d'erreur : 
scp: /home/<AdministrateurDeSauvegarde>/.ssh/authorized_keys: No such file or directory)
Pour ajouter :
[backuppc]$ cat .ssh/id_rsa.pub | ssh <AdministrateurDeSauvegarde>@<client> "cat >> .ssh/authorized_keys"

- Créer un fichier /etc/BackupPC/pc/<nom du client>.pl 

- Ajouter dans le fichier /etc/BackupPC/hosts le client windows à sauvegarder

- recharger le fichiers de configuration
# service backuppc reload

- Lancer un "Full Backup" et vérifier le résultat.


Problèmes
---------

Démarrage d'Apache
------------------
# service httpd restart
Starting httpd: Syntax error on line 46 of /etc/httpd/modules.d/41_mod_ssl.default-vhost.conf:
SSLCertificateFile: file '/etc/pki/tls/certs/localhost.crt' does not exist or is empty

=> Pas de certificat SSL, le créer :
# /usr/sbin/mod_ssl-gentestcrt

Mot de passe refusé à la connexion sur la page backuppc
-------------------------------------------------------
"Authentification failed"
=> # tail -f /var/log/httpd/error.log
"Permission denied: Could not open password file"
Vérifier si apache peut accéder au répertoire contenant le fichier de mots de passe, par exemple (fichier de mots de passe dans /etc/BackupPC):
# su - apache
-sh-3.1$ ls /etc/BackupPC/
ls: /etc/BackupPC/: Permission denied
-sh-3.1$ ll /etc | grep Bac
drwxr-x---  3 backuppc backuppc   1024 Nov 22 11:46 BackupPC/
=>
# chmod o+x /etc/BackupPC/
# ll /etc/ | grep Bac
drwxr-x--x  3 backuppc backuppc   1024 Nov 22 11:46 BackupPC/
ou encore :
# chown backuppc:apache /etc/BackupPC/
# ll /etc/ | grep Bac
drwxr-x---  3 backuppc apache   1024 Nov 22 11:46 BackupPC/

aborted by signal=ALRM
-----------------------
 Peut être dû à un "time out" : voir la variable $Conf{ClientTimeout}, par défaut 7200 secondss (2 heures)


Exécuter en ligne de commande la sauvegarde du client qui pose problème : 
$ su - backuppc
Password:
-bash-3.00$ BackupPC_dump -v -f <NomClient>
-bash: BackupPC_dump: command not found
-bash-3.00$ locate BackupPC_dump
/opt/BackupPC/bin/BackupPC_dump
-bash-3.00$ /opt/BackupPC/bin/BackupPC_dump -v -f <NomClient>

La page web s'affiche en texte uniquement
-----------------------------------------
il est possible que le répertoire contenant les images ne soit pas accessible : vérifier les logs :
 # tail -f /var/log/httpd/error_log 
=> L'autoriser dans /etc/httpd/conf/httpd.conf, par exemple si /usr/local/apache/htdocs/BackupPC/ contient les images :
    Alias /BackupPC "/usr/local/apache/htdocs/BackupPC/"

<Directory "/usr/local/apache/htdocs/BackupPC/">
    Options -Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

fileListReceive failed
----------------------
Got fatal error during xfer (fileListReceive failed)
Backup aborted (fileListReceive failed)

Peut être dû au fait que backuppc a attendu en vain l'entrée du mot de passe pour se connecter sur le client.
=> Se loger en tant qu'utilisateur "backuppc"
Taper :
ssh <nom.du.client>
et vérifier que la connexion se fasse sans mot de passe
Si ce n'est pas le cas, voir "Configuration de ssh" ci dessus.

Drakbackup
°°°°°°°°°°
Permet de sauvegarder des données locales sur différents médias, y compris à travers le réseau sur une machine distante : c'est la machine locale qui commande ses sauvegardes.
Contrairement à BackupPC ne permet pas de centraliser les sauvegardes de données de machines distantes sur un serveur.

Version :
---------
# drakbackup --version

Répertoires et fichiers utilisés par drakbackup
-----------------------------------------------
/etc/drakxtools/drakbackup
	drakbackup.conf
	drakbackup_catalog
/etc/drakxtools/drakbackup/restores/

/var/lib/drakbackup/
	list_base_user_toto_20080422_222202.txt.gz
~/
	.backupignore				(ou autre localisations)

Configuration
-------------
Lancer drakbackup en root
Passer tout de suite à Advanced configuration plus souple que Wizard Configuration
What :		sélectionner les données à sauvegarder (What)
	Users : cocher "Do not include browser cache"
	Décocher "Use incremental/Differential Backups" pour forcer la sauvegarde complète.
		Sinon le cocher et sélectionner de préférence Use incremental Backups (c'est le choix par défaut)
Where :		sélectionner l'emplacement de sauvegarde (PC distant via ssh de préférence)
		Pour une sauvegarde sur PC distant via ssh :
			cocher "Use network connection to backup
			Sélectionner "Net method: ssh"
			cocher "Other (not drakbackup) keys in place already" et créer un jeu de clés ssh : voir ci-dessous)
			"Host name ou IP" du la mechine qui recevra les sauvegardes
			Directory ...	bien mettre le path complet
			"Login name" : mettre celui de l'utilisateur qui recevra le backup et qui a la clé root du PC source (sur lequel tourne drakbackup), cf. ci-dessous
			Password : ne rien mettre, c'est ssh qui gère tout
 
When :		Configurer à quel moment doit être faite la sauvegarde :
			cocher "Use daemon"
			Choisir "Custom" pour pouvoir définir manuellement les intervalles de sauvegarde (cf. le Help) : la commande cron se construit automatiquement dès qu'on sélectionne les minutes./var/lib/drakbackup/backup_ba

More options	Configurer l'envoi de mails (pour savoir si ça fonctionne)
		Cocher delete Hard Drive tar ...
		Cocher view restore log ...

.backupignore
	Fichier texte indiquant les répertoires/fichiers à exclure
	Créer ce fichier dans la racine du répertoire à sauvegarder.
	Attention : mal foutu, n'accepte pas différentes façons de nommer les répertoires : /home/bibi/tmp ne fonctionne pas !
	Exemple de syntaxe correcte pour le home d'un utilisateur :
------------------
.*
*~
Documents
Download
tmp
Desktop
core.*
-------------------

- Le répertoire de sauvegarde local (et temporaire) est pas défaut /var/lib/drakbackup/ : il contient
backup_base_user_toto_20080422_120837.tar.gz
list_base_user_toto_20080422_120837.txt.gz
Pour la reconstitution des sauvegardes, il peut être intéressant de sauvegarder :

- Le fichier de configuration est pas défaut :
	/etc/drakxtools/drakbackup/drakbackup.conf
  Dans le cas de configurations de drakbackup sur plusieurs PCs, il est plus facile de copier ce fichier sur ces PCs et de modifier juste ce qui est nécessaire. Idem avec le(s) fichier(s) .backupignore
- Le catalogue des sauvegardes est dans le fichier /etc/drakxtools/drakbackup/drakbackup_catalog :
  en cas d'erreur (peut contenir de vieilles sauvegardes inutiles que l'on aura supprimées à la main) l'éditer et le modifier

Dans le cas de sauvegardes automatiques programmées à travers le réseau via ssh, il faut éviter d'avoir à taper le mot de passe : pour cela, la machine sur laquelle sont stockées les sauvegardes (D(estination)) doit connaître la clé publique de la machine (S(ource)) à sauvegarder.
Drakbackup fonctionne en root, c'est donc la clé publique de root qui doit être copiée dans les "authorized-keys" du compte utilisateur de destination :

Sur S(ource) créer un jeu de clés en root :ls 
# ssh-keygen -t rsa
Copier la clé publique sur D(estination) :
# cat ~/.ssh/id_rsa.pub | ssh utilisateur@Destination "cat >> ~/.ssh/authorized_keys2"
(puis vérifier qu'elle a bien été copiée, sinon drakbackup demandera le mot de passe)
Vérifier sur D le propriétaire et les droits sur ~/.ssh/authorized_keys2 :
-rw------- 1 bibi bibi
Si ce n'est pas le cas sshd du PC destination peut continuer à demander un mot de passe
=> Vérifier les droits sur ~/.ssh/authorized_keys2 : rw uniquement pour le propriétaire, sinon corriger :
$ chmod go-rwx ~/.ssh/authorized_keys2~/.ssh/authorized_keys2

Lancer la sauvegarde à la main
------------------------------
# export USER=root; /usr/sbin/drakbackup  --daemon


Problèmes :
***********

Backup destination quota exceeded! 1881 Mb used vs 1000MB allocated
-------------------------------------------------------------------
Editer /etc/drakxtools/drakbackup/drakbackup.conf
$ sudo vi /etc/drakxtools/drakbackup/drakbackup.conf
et mettre une valeur correcte à la place de :
MAX_SPACE=1000

No media selected for cron operation
------------------------------------
Dans le fenêtre "When" Ne pas oublier en bas à droite de sélectionner le mdia utilisé (ssh par exemple)

No configuration file found please click Wizard or Advanced
-----------------------------------------------------------

Un mot de passe pour ssh est demandé
------------------------------------
Vérifier que cat a correctement copié la clé sur la destination, que la clé sur S(ource) et celle sur D(estination) sont bien identiques.
Vérifier les droits sur le fichier authorized_keys2 :
# ll ~utilisateur/.ssh/authorized_keys2
-rw-------
Si les droits sont différents :
# chmod 600 ~utilisateur/.ssh/authorized_keys2
Vérifier aussi que l'utilisateur est bien le propriétaire du fichier

Si Drakbackup persiste à demander le mot de passe, cela peut provenir des droits sur le répertoire ssh : n'accorder les droits d'entrée, lecture, écriture qu'à l'utilisateur :
# chmod go-rwx ~utilisateur/.ssh (ou chmod 700 ~utilisateur/.ssh)

"Warning: Identity file /root/.ssh/identity-drakbackup not accessible: No such file or directory."
--------------------------------------------------------------------------------------------------
Pour éviter ce message :
Configuration manuelle > Où > Réseau
et cocher "D'autres clés (pas celles de drakbackup) sont déjà en place"

Drakbackup semble se bloquer sur un fichier ou répertoire, pas d'affichage du rapport de sauvegarde
---------------------------------------------------------------------------------------------------
Peut-être dû à la taille du fichier à transférer par ssh : le transfert d'un fichier de 500 Mo peut durer de nombreuses minutes avant que le compte rendu de sauvegarde s'affiche. On peut vérifier que ssh et scp sont actifs avec la commande top. On peut aussi comparer la taille du fichier à tansférer avec celle du fichier qui augmente petit à petit dans le répertoire destination.

Pourrait être dû à l'absence de serveur SMTP local (à vérifier) ?
Editer /etc/drakxtools/drakbackup/drakbackup.conf
et supprimer :
SMTP_SERVER=localhost
ou bien indiquer un serveur SMTP valide.

Récupération de la sauvegarde
-----------------------------
Si ce n'est pas possible à partir de drakbackup, se positioner dans le répertoire où se trouve la sauvegarde et taper :
	for f in `ls -tr`; do tar -zxvf $f; done
ce qui reconstitue la sauvegarde à partir de l'ensemble des fichiers :
	backup_base_user....tar.gz
	backup_incr_user....tar.gz

ls -tr		liste les fichiers du plus ancien au plus récent
		(-t du plus récent au plus ancien, -r pour inverser l'ordre) 

Rechercher un nom de fichier dans la sauvegarde
-----------------------------------------------
for f in `ls -tr`; do tar -tf $f | grep -i LeNomDuFichier ; done

Suppression des sauvegardes
---------------------------
- Effacer les fichiers dans le répertoire où ils sont sauvegardés
- Vider le répertoire /var/lib/drakbackup/
- Effacer la commande cron de sauvegarde (sudo crontab -e)
- Effacer /etc/drakxtools/drakbackup/drakbackup.conf
- Effacer /etc/drakxtools/drakbackup/drakbackup_catalog

Autres softs et docs à voir
===========================
http://www.coagul.org/article.php3?id_article=481	Synchronisation de dossiers avec UNISON
http://www.coagul.org/article.php3?id_article=234	Copier/partager/synchroniser un fichier entre deux postes

Software raid array
===================
http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html
http://www2.linuxjournal.com/article/3778
http://linas.org/linux/raid.html
http://evms.sourceforge.net/
http://www.drbd.org/


NAS (Network Attached Storage), SAN (Storage Area Network)
==========================================================
FreeNAS (the free NAS Server), à base de FreeBSD	http://www.freenas.org/
Openfiler						www.openfiler.com

Images, slideshow (diaporama), traitement d'images, photos
==========================================================
gimp
kuickshow			xxx
gthumb				xx
gwenview			xxx
	#urpmi kipi-plugins	pour ajouter des plugins
showimg				xx
kim (Image menu for kde)
gqview
xnview				xxx
imagemagick

Création de panoramas
---------------------
hugin
# urpmi hugin
avec éventuellement en plus :
AutoPano-Sift
# urpmi autopano-shift

et Enblend
# urpmi enblend

cf. http://www.commentcamarche.net/faq/sujet-6740-creer-une-vue-panoramique-avec-hugin-et-autopano-sift

Traitement, retouche d'images
=============================
gimp
krita
Inkscape
Xara Xtreme
fotoxx
qtpfsgui (http://bellette.tuxfamily.org/tutos/hdr/3.php)
Enfuse

GIMP
====
Documentation :
---------------
http://www.gimp.org/docs/
http://www.gimp.org/tutorials/
http://www.wideo.fr/search/?q=gimp
http://www.monsieurnicolas.com/trOpFastOch/gimp/index.html
http://www.infetech.com/
http://raymond.ostertag.free.fr/php/webring.php3

ImageJ
======
Télécharger la version pour Linux x86 avec inclus le Sun Java runtime sur :
http://rsb.info.nih.gov/ij/download.html
Décompresser :
$ tar zxvf ij136-x86.tar.gz
Exécuter :
$ cd ImageJ
$ ./run

Pour le mettre par exemple dans opt et le rendre exécutable par quiconque :
# mv ImageJ/ /opt
# chmod ugo+x /opt/ImageJ/*
# chown -R root:root /opt/ImageJ/

On peut déplacer java dans un répertoire plus logique, par exemple
# mv /opt/ImageJ/jre/ /opt/java/
# chown -R root:root /opt/java

et créer un lien vers l'exécutable java :
# ln -s /opt/java/jre/bin/java /usr/bin/java

Remplacer dans /opt/ImageJ/run :
	jre/bin/java -mx256m -cp ij.jar ij.ImageJ
par
	java -mx256m -cp /opt/ImageJ/ij.jar ij.ImageJ

Créer un lien vers /opt/ImageJ/run :
# ln -s /opt/ImageJ/run /usr/bin/ImageJ

ImageJ peut maintenant être démarré de la façon suivante :
$ ImageJ
ou 
$ /opt/ImageJ/run

Cluster, TreeView
=================

Cluster
-------
Télécharger Cluster 3, actuellement :
http://bonsai.ims.u-tokyo.ac.jp/~mdehoon/software/cluster/cluster-1.35.tar.gz
Compilation :
$ ./configure
configure: error: Failed to locate the Xp library.
=> quel est la librairie manquante (motif ?) ?

$ ./configure --without-x
$ make
# make install


Treeview
--------
Documentation : http://jtreeview.sourceforge.net/manual.html

Installation :
Récupérer la version en cours (actuellement TreeView-1.1.0-bin.tar.gz)
Décompresser :
$ tar zxvf TreeView-....-bin.tar.gz
Mettre le répertoire créé à l'endroit de son choix (/opt par exemple) :
# mv TreeView-...-bin/ /opt/
Le rendre exécutable par quiconque :
# chmod ugo+x /opt/TreeView-...-bin
# chown -R root:root /opt/TreeView-...-bin/

NB : TreeView ne fonctionne pas avec java-1.4.2-kaffe fourni par MDV. Fonctionne
avec le java fourni par ImageJ (cf. ci-dessus)

Pour que treeview puisse être lancé par tout le monde :
Supprimer /opt/TreeView-...-bin/win32TreeView.bat
Le remplacer par un fichier treeview contenant la ligne :
	java -jar -Xmx500m /opt/TreeView-1.1.0-bin/TreeView.jar
Rendre ce fichier exécutable :
# chmod ugo+x /opt/TreeView-...-bin/treeview
Mettre un lien dans /usr/bin
# ln -s /opt/TreeView-...-bin/treeview /usr/bin/treeview

TreeView peut maintenant être lancé par :
$ treeview


VOIP

Gnomemeeting
============
Paramétrage de shorewall (cf. http://www.gnomemeeting.org/index.php?rub=3&pos=0&faqpage=x213.html)

# Pour recevoir les appels :
ACCEPT          net     fw      tcp     1720

# H.245 Port Range: TCP port range [30000-30010],
ACCEPT		fw	net	tcp	30000:30010
#ACCEPT		net	fw	tcp	30000:30010

# RTP Port Range: UDP port range [5000-5016]: RTP and RTCP channels for audio and video 
transmission/reception.
ACCEPT		fw	net	udp	5000:5016
#ACCEPT		net	fw	udp	5000:5016

# Gatekeeper Port Range: UDP port range [5020-5023],
ACCEPT		fw	net	udp	5020:5023
#ACCEPT		net	fw	udp	5020:5023

VOIP libres
===========
Gnomemeeting/Ekiga
WengoPhone/QuteCom
SIP Communicator

VOIP peer to peer
=================
skype

Ekiga
=====
Installation sur MDV 2006 du rpm cooker ekiga Version: 2.0.2-7mdv2007.0
-----------------------------------------------------------------------
$ ekiga
ekiga: symbol lookup error: /usr/lib/libedataserver-1.2.so.7: undefined symbol: g_intern_static_string
=> Problème de dépendances. Solution : installer libglib2.0_0 Version: 2.12.3-1mdv2007.0

Installation sur MDV 2006 des rpm fournis sur le site http://www.ekiga.org/?rub=5
----------------------------------------------------------------------------------
Télécharger les 6 rpm pour Mandriva :
ekiga-2.0.2-1.1.20060mdk.i586.rpm
libopal2-2.2.2-0.1.20060mdk.i586.rpm
libpwlib1-1.10.1-0.1.20060mdk.i586.rpm
libpwlib1-plugins-1.10.1-0.1.20060mdk.i586.rpm
libpwlib1-plugins-avc-1.10.1-0.1.20060mdk.i586.rpm
libpwlib1-plugins-dc-1.10.1-0.1.20060mdk.i586.rpm

Puis 
# rpm -ivh --nodeps libpwlib1-1.10.1-0.1.20060mdk.i586.rpm
# urpmi libpwlib1-plugins-1.10.1-0.1.20060mdk.i586.rpm
# urpmi libpwlib1-plugins-avc-1.10.1-0.1.20060mdk.i586.rpm
# urpmi libpwlib1-plugins-dc-1.10.1-0.1.20060mdk.i586.rpm
# urpmi libopal2-2.2.2-0.1.20060mdk.i586.rpm
# urpmi ekiga-2.0.2-1.1.20060mdk.i586.rpm

Tests en boucle
---------------
voir 500@ekiga.net

Problèmes
---------
"Impossible to open the selected audio device"


Webcam
======

Logiciels à essayer :
---------------------
gqcam
xawtv
motv
ffmpeg
camorama
camstream
cheese
luvcview
uvccapture

Webcam avec Pilote uvc (Quickcam Pro 9000), logiciels
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
http://www.quickcamteam.net/software/linux/v4l2-software/
Bug Quickcam Pro 9000 : cf. http://www.quickcamteam.net/documentation/faq/how-many-versions-of-the-quickcam-pro-9000-are-there

luvcview
--------
Installation : 
# urpmi luvcview

uvccapture
----------
Installation :
Télécharger sur http://staticwave.ca/source/uvccapture/
$ tar -jxvf uvccapture-xxx.tar.bz2
$ cd uvccapture
$ make
$ sudo make install
$ which uvccapture
/usr/local/bin/uvccapture

Prendre une image 1600x1200 avec comme nom par défaut snap.jpg :
$ uvccapture -x1600 -y1200
Prendre une image avec comme nom image.jpg (pas d'espace entre o et le nom) :
$ uvccapture -image.jpg

fswebcam
--------
Télécharger sur http://www.firestorm.cx/fswebcam/
$ sudo urpmi fswebcam-20070108-1.x86_64.rpm

Capturer une image :
$ fswebcam --save image.jpg
$ fswebcam -r 960x720 --save image.jpg

Installation du pilote gspca (MDV 2008.1)
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Cf. http://www.aptget.net/index.php?option=com_content&task=view&id=132&Itemid=251

# uname -r				Indique la version du noyau
# urpmi gspca				choisir le module correspondant au noyau installé
# modprobe gspca			charge le module en mémoire
# lsmod|grep gspca			vérifie qu'il est bien chargé (sinon lsmod ne retourne rien)
gspca                 694992  0
compat_ioctl32         13184  1 gspca
videodev               31104  1 gspca
usbcore               145712  7 gspca,snd_usb_audio,snd_usb_lib,uhci_hcd,ohci_hcd,ehci_hcd
#  modinfo gspca | head -1		localise le module
filename:       /lib/modules/2.6.24.4-server-1mnb/dkms-binary/drivers/usb/media/gspca.ko.gz

gqcam
"/dev/video: No such file or directory"

Surveillance par webcam
=======================
motion ?

Camescope, camera numérique
===========================
Acquisition vidéo
-----------------
dvgrab

Montage
-------
kino

Création de dvd
---------------
mandvd


Dictionnaires
=============
Définition et prononciation des mots anglais :
Merriam-Webster online (http://www.m-w.com/)

Prononciation
-------------
Récupère et joue le fichier son du site Merriam-Webster
mvsay (http://www.floc.net/mwsay/)

Télévision
==========
http://www.linuxtv.org

Miro
°°°°
www.getmiro.com

Peertv
°°°°°°
http://www.peertv.eu/index.php?action=getDownloadsForOs&id=3
Doir fonctionner avec Free, Darty
Ne fonctionne pas avec 9

Neuf.tv
°°°°°°°
Fonctionne avec VLC et les chaînes diffusées par neuf.
Récupérer le fichier tvsurpc.m3u sur http://televisionsurpc.neuf.fr/
Cliquer sur ce fichier pour lancer VLC qui affichera la première chaîne de la liste.
Pour enregistrer :


Zattoo
°°°°°°
http://zattoo.com/fr

Télécharger le rpm pour linux (http://zattoo.com/fr/download/linux?download=1&version=Linux-i386-rpm)
Voir les instructions d'installation en fin de page.

Sur MDV 2008 x86-64 un certain nombre de librairies ne sont pas trouvées : elles sont en fait dans /usr/lib64.

Essais avec liens sur les librairies 64 bits ne fonctionnent pas :
# ln -s /usr/lib64/libgnomeui-2.so.0.2201.0 /usr/lib/libgnomeui-2.so.0
$ zattoo_player
zattoo_player: error while loading shared libraries: libgnomeui-2.so.0: wrong ELF class: ELFCLASS64

Les librairie 32 bits fonctionnent :
# urpmi libgnomeui2_0
# urpmi	libgtkglext-1.0_0
# urpmi libcurl4
# ln -s /usr/lib/libcurl.so.4.0.1 /usr/lib/libcurl.so.3


Petites applications intéressantes
==================================

Dictionnaires
°°°°°°°°°°°°°
Stardict
Kdict

Installation de stardict
------------------------
# urpmi stardict
Liste des dictionnaires :
$ urpmq --fuzzy stardict
Français-anglais :
# urpmi stardict-freedict-fra-eng
Anglais-français :
# urpmi stardict-freedict-eng-fra

Autres dictionnaires à chercher sur le web (Merriam-Webster, Littré, etc.) :
http://stardict.sourceforge.net/Dictionaries.php

OCR
===
http://www.lea-linux.org/cached/index/Logithèque:OCR.html
A tester :
Clara OCR
GOCR
Kooka

Multimedia, son, video
======================

.mid
----
TiMidity++

Real
----
urpmi mplayerplugin real-codecs

.au
---
cat bird.au > /dev/audio

.mov (Quicktime)
----------------
Installer mplayer

RealPlayer
----------
Installer Helix player
cf. http://soft.zoneo.net/Linux/ecouter_la_bbc.php

Enregistrement de flux audio ou video
-------------------------------------
Interreta Televidilo : http://home.gna.org/televidilo/

Enregistrer un flux mms
-----------------------
$ mmsrip "mms://......wmv" Destination/nom.wmv

Codecs
------
Cf. http://club.mandriva.com/xwiki/bin/view/KB/GettingHelp?language=fr#HLEVADEMECUMDUDEBUTANT
http://forum.mandriva.com/viewtopic.php?t=59494

# urpmi faad2 ffmpeg ffmpeg2theora lame-mp3x libdvdcontrol9 libdvdcss2 libdvdnav4 libdvdplay0 
libdvdread-utils libdvdread3 libfaad2_0 libffmpeg51 libmatroska0 libmpeg2dec0 libmpeg4ip0 liboggflac3 libquicktime-faac libquicktime-faad libquicktime-lame libquicktime-x264 libsmpeg0.4 libx264_50 mencoder mp32ogg mpeg2dec real-codecs toolame transcode win32-codecs x264 xanim-codecs xvid-divx-devel avifile-win32 mplayerplugin libquicktime-dv audacious-jack mjpegtools SDL_sound streamripper streamtuner dirac-utils helixplayer-real-codecs

Découpage, encodage, montage de videos, films
=============================================
Avidemux
--------
http://www.avidemux.org/admWiki/index.php?title=Main_Page

MEncoder
--------

Projectx
--------
Doc : http://www.doom9.org/index.html?/DigiTV/projectx-fullguide.htm

Montage d'images fixes jpeg en film
===================================
Voir exemples dans le man
Voir aussi :
http://www.mplayerhq.hu/DOCS/HTML/fr/menc-feat-enc-images.html

$ mencoder  "mf://*.jpg"  -mf  fps=2 -o output.avi -ovc lavc 
$ mencoder mf://*.jpg -mf w=1024:h=768:fps=5 -ovc lavc -lavcopts vcodec=mpeg4 -oac copy -o output.avi


Lecture des CD/DVD
==================
http://www.mplayerhq.hu/DOCS/HTML/fr/cd-dvd.html

DVD, avi, DivX, xvid, encodage
==============================
http://www.trustonme.net/didactels/204.html

Encodage mpeg2
--------------
kmpg2


Enregistement d'écran
=====================
Touche Impr  ecran
Screencast	http://news.softpedia.com/news/Screencast-Guide-Capure-Your-Linux-Desktop-on-Video-42626.shtml
Istanbul	http://linux.softpedia.com/get/Utilities/Istanbul-12358.shtml

Streaming (flux) : enregistrement
==========================
Rechercher dans la page web source le lien sur le stream. Par exemple si c'est un fichier vidéo flv, rechercher "flv"
Si cete adresse n'est pas trouvée (cas par exemple d'adressage indirect), lancer wireshark, capturer le flux (Capture/Options, interface : eth0 -ou autre-, Capture Filter : port 80), l'enregistrer et y chercher l'adresse du flux 
Pour enregistrer :
- avec konqueror :
	lancer la video, puis Localisation > Save as
- avec wget :
	ou bien : wget -O <Nom> "http://<adresse du flux>"

Aspirer un site web
===================
httrack		(urpmq -y httrack)
wget

Avec wget
---------
Cf le man

$ wget -rk -np http://le.point.d'aspiration

-r	récursif
-k	(ou --convert-links) Convertit les liens du document pour qu'il soit consultable en local
-np	(ou --no-parent) Ne pas remonter dans les répertoires parents


flv
===
Lire avec :
- vlc		File > Open file
- firefox	/addresse/du/fichier.flv

wxWidgets
=========
- installer si ce n'est déjà fait les librairies GTK+ :
# urpmi libgtk+2-devel

Installation de wxBase
----------------------
- Télécharger à partir de http://www.wxwidgets.org/downloads/#latest_stable
(cliquer sur Sourceforge -> http://sourceforge.net/project/showfiles.php?group_id=9863

$ tar -zxvf wxBase-2.8.9.tar.gz
$ cd wxBase-2.8.9
$ ./configure
erreur =>
config.status: error: cannot find input file: samples/Makefile.in

Installation de wxX11
---------------------
idem : erreurs au make

Installation de wxAll
---------------------
$ tar -zxvf wxWidgets-2.8.9.tar.gz
$ cd wxWidgets-2.8.9
$ ./configure
$ make
# make install

Installation sans problème

Statistiques et data mining
===========================
R
Stats101		(resampling) 		www.statistics101.net
RapidMiner		(data mining)		www.rapidminer.com
Rattle			(data mining sous R)	rattle.togaware.com	
Explorase		(analyses sousR)	metnet.vrac.iastate.edu/MetNet_exploRase.htm

Statistiques  : R
=================
Mirroir local : http://cran.univ-lyon1.fr/
http://cran.r-project.org/index.html
http://lib.stat.cmu.edu/R/CRAN/doc/FAQ/R-FAQ.html
http://www.sciviews.org/_rgui/
"R & BioConductor Manual" : http://faculty.ucr.edu/~tgirke/Documents/R_BioCond/R_BioCondManual.html#R_functions

MDV 2007.0 :
Installer R-base (version 2.4.0-1 sous MDV 2007.0)
ou installer R-bioconductor (installe R et les librairies nécessaires pour l'analyse statistique des données génomiques)

MDV 2007.1
Le rpm R-base-2.4.1-2mdv2007.1.i586 est à jour : R version 2.4.1 (2006-12-18)
NB : ce rpm n'installe que libgfortran : c'est suffisant pour R, mais pas pour bioconductor, voir plus loin.

Problème :
----------
"no png support in this version of R"
Solution : installer R à partir des sources

Installation de la dernière version de R (actuellement R-2.5.1.tar.gz)
---------------------------------------------------------------
http://cran.r-project.org/doc/manuals/R-admin.html

Désinstaller la version mdv (qui désinstalle par la même occasion les programmes qui en dépendent, bioconductor, rkward ...)
Télécharger la dernière version de R (sur http://cran.univ-lyon1.fr/ par exemple)
$ tar -zxvf R-2.4.1.tar.gz
Voir plus loin à "Installation de R et Bioconductor, en résumé" le résumé d'une installation de R correcte

$ ./configure --enable-R-shlib 2>&1 | tee compil
(--enable-R-shlib :	nécessaire pour rkward, cf. son fichier INSTALL dans les sources de rkward
nécessaire aussi si on veut installer Rserve, utilisé par CARMAweb)
2>&1 | tee compil	pour mémoriser ce qui s'affiche - messages d'erreur compris - dans un fichier pour
			 faciliter la recherche des messages "warning" et "error"  qui apparaissent un peu partout)

Messages d'erreur et warnings :

"configure: error: Neither an F77 compiler nor f2c found"
=> installer gcc-fortran
$ sudo urpmi gcc-gfortran
Il ne semble pas utile d'installer en plus f2c.

"configure: WARNING: you cannot build info or html versions of the R manuals"
La doc indique "You will not be able to build the info files unless you have makeinfo".makeinfo fait partie de texinfo.
=> sudo urpmi texinfo

"configure: error: --with-readline=yes (default) and headers/libs are not available"
=> # urpmi libreadline-devel			(lib64readline5-devel)
=> si nécessaire : 	# ln /lib/libreadline.so.5.1 /lib/libreadline.so
=> si nécessaire : 	urpmi tclreadline	(lib64tclreadline2.1.0 )
			urpmi tclreadline-devel	(lib64tclreadline2.1.0-devel)
NB : pas de tclreadline-devel en 32 bits.

"configure: WARNING: you cannot build DVI versions of all the help pages"
"configure: WARNING: you cannot build PDF versions of all the help pages"
=> consulter le source de R à l'endroit de ce message, ce qui donne une idée de ce qu'il faut installer
$ sudo urpmi tetex-latex 
(à vérifier : il faut peut être aussi installer :
ghostscript-dvipdf
tetex-dvips
xpdf)

$ make 2>&1 |tee makeR 				(2>&1 |tee makeR pour mémoriser dans un fichier)
$ sudo make install

Problèmes :
Pas d'éditeur ligne intégré (alors que la version R-base mdk l'a).
Cf. R FAQ "How can I get command line editing to work?" : "users of Linux binary distributions will need to install packages such as ... readline-devel.
=> installation de libreadline-devel pas de changement (même après recompilation de R)
=> make distclean puis recompilation : cette fois-ci l'éditeur fonctionne !

Répertoires intéressants
R		/usr/local/bin/
		/usr/local/lib/R/

Désinstallation
---------------
Voir ci-dessous "Désinstallation de la version de R compilée"

R Gui
-----
http://www.sciviews.org/_rgui/
http://datamining.togaware.com/survivor/Emacs_ESS.html
ess :	http://stat.ethz.ch/ESS/
kate :	http://kate.kde.org/

Colorations syntaxiques (syntax highlightings) pour kate : http://www.kate-editor.org/downloads/syntax_highlighting
coloration pour R avec kate V5 : http://www.kate-editor.org/syntax/2.5/r.xml

Bioconductor
============
Documentations :
----------------
"R & BioConductor Manual" : http://faculty.ucr.edu/~tgirke/Documents/R_BioCond/R_BioCondManual.html#R_functions
"How to install Bioconductor" : http://www.bioconductor.org/download

Lancer R (en root), puis :

> source("http://www.bioconductor.org/biocLite.R")
> biocLite()
Running biocinstall version 1.9.9 with R version 2.4.1
Your version of R requires version 1.9 of Bioconductor.
Will install the following packages:
 [1] "affy"        "affydata"    "affyPLM"     "annaffy"     "annotate"
 [6] "Biobase"     "Biostrings"  "DynDoc"      "gcrma"       "genefilter"
[11] "geneplotter" "hgu95av2"    "limma"       "marray"      "matchprobes"
[16] "multtest"    "ROC"         "vsn"         "xtable"

ou bien la version longue :

> source("http://bioconductor.org/getBioC.R")
> getBioC()
Running biocinstall version 1.9.9 with R version 2.4.1
Your version of R requires version 1.9 of Bioconductor.
Will install the following packages:
 [1] "affy"        "affydata"    "affyPLM"     "annaffy"     "annotate"
 [6] "Biobase"     "Biostrings"  "DynDoc"      "edd"         "gcrma"
[11] "genefilter"  "geneplotter" "globaltest"  "hgu95av2"    "limma"
[16] "makecdfenv"  "marray"      "matchprobes" "multtest"    "pamr"
[21] "ROC"         "siggenes"    "sma"         "statmod"     "tkWidgets"
[26] "vsn"         "widgetTools" "xtable"

Warning messages:
1: installation of package 'pamr' had non-zero exit status in: install.packages(              pkgs = pkgs, repos = repos, dependencies = dependencies,
2: installation of package 'genefilter' had non-zero exit status in: install.pac              kages(pkgs = pkgs, repos = repos, dependencies = dependencies,
3: installation of package 'tkWidgets' had non-zero exit status in: install.pack              ages(pkgs = pkgs, repos = repos, dependencies = dependencies,
4: installation of package 'affyPLM' had non-zero exit status in: install.packag              es(pkgs = pkgs, repos = repos, dependencies = dependencies,
> source("/root/tmp/Rtmpm63fhu/downloaded_packages")

Ces messages apparaissent si R est installé à partir de R-base-2.4.1-2mdv2007.1.i586
Pour résoudre les warnings 1,2 et 4 installer gcc-gfortran puis relancer l'installation de bioconductor 
Par contre, le warning n°3 (tkWidgets) ne disparaît qu'après recompilation de R.

Warning message:
installation of package 'tkWidgets' had non-zero exit status in: install.packages(pkgs = pkgs, repos = repos, dependencies = dependencies,
=> installation de wxGTK2.7 : même Warning message
=> vérifier que tcltk est installé et a été trouvé par R lors de la compilation :
- dans R :
> library(tcltk) 
...
Tcl/Tk support is not available on this system

=> recompiler R :
$ make distclean
$ ./configure --enable-R-shlib --with-readline --with-tcltk 2>&1 | tee configureR
$ vi configureR				chercher tcl et tk
checking for tclConfig.sh... no
checking for tkConfig.sh... no
=> installer libtcl8.4-devel et libtk8.4-devel qui contiennent tclConfig.sh et tkConfig.sh
Recompiler
checking for tclConfig.sh... no
checking for tclConfig.sh in library (sub)directories... /usr/lib/tclConfig.sh
checking for tkConfig.sh... no
checking for tkConfig.sh in library (sub)directories... /usr/lib/tkConfig.sh
Lancer R
> library(tcltk)
Loading Tcl/Tk interface ... done		Ca marche

Ou bien
> library(tcltk)
Loading Tcl/Tk interface ... Error in fun(...) : Can't find a usable tk.tcl in the following directories:
    /usr/lib/tcl8.4/tk8.4 /usr/lib/tk8.4 ./lib/tk8.4 ./lib64/tk8.4 ./library ./tk8.4.13/library

Vérifier si tk.tcl est installé

$ locate init.tcl
/usr/lib/tcl8.4/init.tcl
/usr/lib64/pentaxpj/BWidget-1.3.1/init.tcl
$ locate tkConfig.sh
/usr/lib/tkConfig.sh
/usr/lib64/tkConfig.sh
$ locate tclConfig.sh
/usr/lib/tclConfig.sh
/usr/lib64/tclConfig.sh

sudo ln /usr/lib/tkConfig.sh /usr/lib/tcl8.4/tk8.4/tkConfig.sh

Relancer l'installation de bioconductor -> plus aucune erreur !
La fin des messages de ./configure :
-------------
R is now configured for x86_64-unknown-linux-gnu

  Source directory:          .
  Installation directory:    /usr/local

  C compiler:                gcc -std=gnu99  -g -O2
  Fortran 77 compiler:       gfortran  -g -O2

  C++ compiler:              g++  -g -O2
  Fortran 90/95 compiler:    f95 -g -O2

  Interfaces supported:      X11, tcltk
  External libraries:        readline
  Additional capabilities:   iconv, MBCS, NLS
  Options enabled:           shared R library, shared BLAS, R profiling

  Recommended packages:      yes
--------------

Tester l'installation comme indiqué sur http://staff.pubhealth.ku.dk/~kaha/BioC2003/ à "Testing Bioconductor"
> library(Biobase)
Loading required package: tools ...
> library(tkWidgets)
Loading required package ...
> vExplorer()		ouvre la fenêtre "BioC Vignettes Explorer"
> library(XML)
Error in library(XML) : there is no package called 'XML'
=> télécharger le package XML sur http://cran.univ-lyon1.fr/ (par exemple)
L'installer :
# R CMD INSTALL /chemin/vers/le/fichier/téléchargé/XML_1.7-1.tar.gz
(ou sous R : install.packages("XML"))
Relancer R et tester à nouveau : 
> library(XML)				plus d'erreur !

**************** Installation de R et Bioconductor, en résumé ****************************
------------------------------------------------------------------------------------------
Pour le moment (MDV 2007.1) le rpm de R-base ne permet pas une installation correcte de bioconductor.
Il est nécessaire de le compiler.

Installationde R :
``````````````````
# urpmi gcc-gfortran
# urpmi libtcl-devel
# urpmi tclreadline
# urpmi libreadline-devel
# urpmi libncurses-devel
# urpmi libtclreadline
# urpmi libtclreadline-devel
# urpmi texinfo
# urpmi tk
# urpmi libtk-devel
# urpmi tetex-latex
# urpmi libpng
# urpmi libpng-devel
# urpmi libjpeg
# urpmi libjpeg-devel

ou en plus court :
sudo urpmi gcc-gfortran libtcl-devel tclreadline libncurses-devel libtclreadline libtclreadline-devel libreadline-devel texinfo tk libtk-devel tetex-latex libpng libpng-devel libjpeg libjpeg-devel

$ tar -zxvf R-n°version.tar.gz
$ ./configure --enable-R-shlib --with-readline --with-tcltk 2>&1 | tee configureR
------------------------------------
R is now configured for i686-pc-linux-gnu

  Source directory:          .
  Installation directory:    /usr/local

  C compiler:                gcc -std=gnu99  -g -O2
  Fortran 77 compiler:       gfortran  -g -O2

  C++ compiler:              g++  -g -O2
  Fortran 90/95 compiler:    gfortran -g -O2
  Obj-C compiler:

  Interfaces supported:      X11, tcltk
  External libraries:        readline
  Additional capabilities:   PNG, JPEG, iconv, MBCS, NLS
  Options enabled:           shared R library, shared BLAS, R profiling

  Recommended packages:      yes
---------------------------------------

$ make 2>&1 |tee makeR
$ sudo make install
Installation de Bioconductor (en root) :

Installation de Bioconductor :
``````````````````````````````
$ sudo R
> source("http://bioconductor.org/getBioC.R")
> getBioC()

Installer de nouveaux packages bioconductor
-------------------------------------------
Chercher le package sur http://www.bioconductor.org/packages/release/BiocViews.html
et plus précisemment sur  http://www.bioconductor.org/packages/release/Microarray.html pour les microarrays
Télécharger les sources
L'installer en root par la commande :
$ sudo  R CMD INSTALL <chemin/package>.tar.gz

ou à partir de R :
$ sudo R
> install.packages(c("paquet1", "paquet2", "paquet3"))

Désinstallation de la version de R compilée
-------------------------------------------
Lancer éventuellement un :
ls /usr/local/lib/R/library > librariesR.txt
pour mémoriser les librairies installées, puis

$ sudo make uninstall
(NB : ne pas lancer "make clean", "make distclean" avant, sinon refaire un "./configure --enable-R-shlib --with-readline --with-tcltk"

REMARQUE : 
Il semble bien que "make uninstall" ne désinstalle pas les librairies dans "/usr/local/lib/R/library" (ou "/usr/local/lib64/R/library").
En connséquence, pour une mise à jour de R il suffit de :
- compiler et installer la nouvelle version de R comme indiqué ci-dessus
- Puis en root : 
	> update.packages(ask=FALSE)					Mise à jour des paquets R
	> source("http://bioconductor.org/getBioC.R")
	> getBioC()							Installe bioconductor
	> update.packages(repos=biocinstallRepos(), ask=FALSE)		Mise à jour des paquets Bioconductor présents dans "/usr/local/lib/R/library"


rkward (GUI pour R)
===================
Problème :
----------
"The PHP backend could not be started. Check whether you have correctly configured the location of the PHP-binary (Settings->Configure Settings->PHP backend)"
=> installer php-cli

Documentation
-------------
http://rkward.sourceforge.net/wiki/index.php?title=Getting_Started_Using_RKWard

Installation à partir des sources (rkward-0.4.7.tar.gz)
-------------------------------------------------------
Nb : il faut au préalable avoir compilé R avec ./configure --enable-R-shlib (Cf. fichier INSTALL dans les sources de rkward)

$ tar -zxvf rkward-0.4.7.tar.gz
$ ./configure
$ make
# make install

Rattle
======
http://datamining.togaware.com/survivor/index.html
http://www.maths.anu.edu.au/~johnm/courses/dm/math3346/2006/pdf/rattle.pdf

# R
> install.packages ("rattle")
> install.packages ("RGtk2")
...
checking pkg-config is at least version 0.9.0... yes
checking for GTK... configure: error: GTK version 2.8.0 required
ERROR: configuration failed for package 'RGtk2'

=> Solution :
# urpmi libgtk+2-devel 
(voir aussi glade ci-dessous si au début de la compilation de RGtk2 on a un message concernant Glade non trouvé)

$ R
> library(rattle)
> rattle()
Error in rattle() : could not find function "gladeXMLNew"

=> Solution :
# urpmi libglade2.0_0-devel 
et relancer l'installation de RGtk2 :
> install.packages ("RGtk2")

Autres packages conseillés dans rattle.pdf (cf. ci-dessus) :
# R
> install.packages (c("bitops","cba","combinat","ellipse","fBasics","fpc","gbm","gregmisc","kernlab","maptree","randomForest","RODBC","ROCR","rpart","XML"))
also installing the dependencies ‘RUnit’, ‘zoo’, ‘fEcofin’, ‘fUtilities’, ‘robustbase’, ‘fCalendar’, ‘fSeries’, ‘fImport’, ‘gdata’, ‘gmodels’, ‘gplots’, ‘gtools

Problème d'installation de RODBC :
configure: error: "ODBC headers sql.h and sqlext.h not found"
=> voir la solution dans le README du paquet à "ODBC under Windows"

Cairo
-----
Pour que rattle utilise cairo, installer cairoDevice et (probablement) Cairo :
> install.packages("Cairo")
> install.packages("cairoDevice")

Lancement
---------
$ R
> library(rattle)		# rattle en ligne de commande
> rattle()			# interface graphique

exploRase
=========
http://metnet.vrac.iastate.edu/MetNet_exploRase.htm
Nécessite l'installation de ggobi et rgobi

ggobi
-----
cf. http://www.ggobi.org/downloads/

$ tar -jxvf ggobi-2.1.7.tar.bz2
$ ./configure --with-all-plugins 2>&1 | tee configuregobi
$ make 2>&1 | tee makegobi
$ sudo make install
$ make ggobirc
$ sudo mkdir -p /etc/xdg/ggobi
$ sudo cp ggobirc /etc/xdg/ggobi/ggobirc

rggobi
------
# R
> install.packages("rggobi")
....
checking for GGOBI... configure: error: Package requirements (ggobi) were not met:
No package 'ggobi' found
Il semble que les librairies ggobi ne soient pas trouvées.

=> Solution
- ajouter /usr/local/lib dans /etc/ld.so.conf (on y trouve libggobi.so)
# ldconfig
	toujours la même erreur
- mettre un lien dans /usr/lib sur les fichiers de description de ggobi qui se trouvent dans /usr/local/lib/pkgconfig :
# ln -s /usr/local/lib/pkgconfig/ggobi.pc  /usr/lib/pkgconfig/ggobi.pc 
# ln -s /usr/local/lib/pkgconfig/libR.pc /usr/lib/pkgconfig/libR.pc
	plus d'erreur

exploRase : installation
------------------------
http://www.bioconductor.org/packages/2.1/bioc/html/explorase.html

# R
> source("http://bioconductor.org/biocLite.R")
> biocLite("explorase")

Lancement :
$ R
> library(explorase)
> explorase()

Suivre l'avancement de certains programmes bioconductor
=======================================================
Certaines fonctions peuvent durer plusieurs heures sans qu'aucun message s'affiche à l'écran.
Pour suivre l'état d'avancement des téléchargements effectués par la fonction ABPkgBuilder() du package AnnBuilder, plusieurs solutions :

lsof
----
# lsof -i | grep ftp	

iptraf
------
# iptraf
ou, pour avoir le programme en anglais :
# LANG=C iptraf
 IP traffic monitor > eth0
Dans la fenêtre bleu du haut choisir avec les flèches (haut/bas) la connexion à suivre : le nombre de paquets et le débit s'affichent dans le fenêtre du bas.

Suivre l'augmentation de taille des dossiers téléchargés
--------------------------------------------------------
Le problème est souvent de savoir où sont téléchargés ces fichiers.
Par défaut ABPkgBuilder stocke les fichiers téléchargés dans un sous répertoire de ~/tmp
dont le nom change à chaque lancement de R (RtmpsF08CK par exemple). Sous R son nom est retourné par la fonction tempdir().
Malheureusement si l'on n'a pas noté la valeur de tempdir, il faut attendre la fin de ABPkgBuilder pour connaître sa valeur.
Si les répertoires commençant par R sont peu nombreux, on peut le repérer par un ls ~/tmp/R*
Sinon, repérer dans tmp les répertoires les plus gros (les fichiers téléchargés par ABPkgBuilder font plusierus centaines de Mo) :
$ du ~/tmp --max-depth=1 |sort -rn 
Les répertoires les plus gros sont en tête.

ip_conntrack
------------
# cat /proc/net/ip_conntrack
filtrer avec un grep sur les adresses ip à suivre, éliminer les addresses sans intérêt au moyen de grep -v


Répertoire /tmp
================
Pour qu'il soit vidé à chaque redémarrage :
mcc > Boot > Set up how the system boots > Advanced
cocher Clean /tmp at each boot 

PDF
===
http://www.coagul.org/spip.php?article443

- Extraire le texte d'un fichier PDF : sous Acrobat, File > Save as text
- Opérations diverses sur les pdf : pdftk
- Mode d'emploi de pdftk : http://faak.freeservers.com/manuelfr-pdftk.htm
- pdftotext
Pour convertir tous le fichiers pdf d'un répertoire :
$ for f in `ls *.pdf`; do pdftotext $f ; done


Visualiser
----------
kpdf
evince

Editer un PDF
-------------
- kword  (si pas installé : urpmi koffice)
- PDFedit (http://sourceforge.net/projects/pdfedit) : à voir
		http://pdfedit.petricek.net/index_e.html)

Installation de PDFedit
-----------------------
$ tar -jxvf pdfedit-0.4.1.tar.bz2
# urpmi boost boostdevel
$ ./configure
$ make
# make install
/bin/sh: line 0: cd: /src/moc: No such file or directory
Sembmle lié à qt. Pourtant :
$ echo $QTDIR
/usr/lib/qt3/
Il manque qt-devel (cf. http://wiki.zenwalk.org/index.php?title=Qt3_and_Qt4). A voir.

Extraire les images d'un PDF :
------------------------------
- pdfimages source.pdf destination
- pdfimages -j document.pdf image		=>	image-001.jpg 
							image-002.jpg	etc.
ou bien :
- utiliser kword

Extraire le texte d'un pdf
--------------------------
$ ps2ascii FichierSource.pdf FichierDestination.txt
$ pdftotext FichierSource.pdf FichierDestination.txt

Extraire le texte d'un ensemble de fichiers se trouvant dans le répertoire courant :
$ for i in *.pdf; do echo $i; ps2ascii $i $i.txt; done 
(les fichiers obtenus ont l'extension .pdf.txt. Pour changer l'extension en .txt :
for x in `ls *.txt | sed s/.pdf.txt//`; do mv $x.pdf.txt $x.txt; done
)

Rechercher l'occurence d'une chaine de caractères dans les fichiers texte obtenus :
$ grep -l -i chaine *.txt		(l pour n'afficher que le nom des fichiers contenant la chaine)

Fichiers postscripts (.ps)
==========================
Pour visualiser directement :
ghostscript fichier.ps

Pour transformer en pdf :
ps2pdf fichier.ps

Dessins vectoriels et formats
=============================
SVG = Scalable Vector Graphics (format libre)
Logiciels :
OpenOffice : en natif SVG non supporté
Karbon14
InkScape
Xara Xtreme

Voir aussi : http://www.openclipart.org/wiki/index.php/SVG_Tools
Browsers :
Viewer and Browser Plugins (cf. http://www.openclipart.org/wiki/index.php/SVG_Tools)
- Firefox : suport natif du SVG
- Konqueror: support SVG via le plugin KSVG
	=> urpmi kdegraphics-ksvg

InkScape
--------
Bibliothèque de cliparts : http://www.openclipart.org/downloads/index.php

Xara Xtreme
-----------
http://www.xaraxtreme.org/download/
L'installation à partir de la version Autopackage Archive est simplissime :
Rendre exécutable le fichier téléchargé
Cliquer dessus pour l'exécuter et suivre les instructions qui s'affichent :
Autopackage est téléchargé et installé automatiquement puis xara est aussi installé automatiquement.
Lancement de Xara en ligne de commande : xaralx

Bibliographie
=============
Non testé, à voir :

BibTex		www.bibtex.org
		http://gte.univ-littoral.fr/members/dbitouze/pub/conferences-latex-ulco/diapositives-conference/
jabref		http://jabref.sf.net
tellico		http://periapsis.org/tellico/
pybliographer	http://pybliographer.org/
bibus		http://bibus-biblio.sourceforge.net/
bibutils	http://www.scripps.edu/~cdputnam/software/bibutils/
		(conversion de formats, endnote en particulier
		Voir aussi les liens donnés sur cette page
BiblioExpress 	http://www.biblioscape.com/biblioexpress.htm
refbase		http://refbase.sourceforge.net/
refdb		http://refdb.sourceforge.net/
zotero		http://www.zotero.org/

Bibliographie sous OOo	www.framasoft.net/IMG/pdf/BibliographieTuto.pdf

Installation de bibus
/////////////////////

Documentations :
http://bibus-biblio.sourceforge.net/bibus_doc/html/en/usingBibus.html
http://bibus-biblio.sourceforge.net/bibus_doc/html/en/usingOOo.html

# urpmi bibus
# urpmi mysql 		(si ce n'est pas déjà fait. Voir le paramétrage plus haut)
# urpmi python-mysql

$ bibus
Menu > Help et suivre les explications de configuration.
La localisation du socket (/var/run/mysqld/mysqld.sock) est à changer : taper
$ mysqladmin -u root -p version
pour connaître celle utilisée (/var/lib/mysql/mysql.sock)

Création de la base bibliographique
-----------------------------------
A partir du menu Help :
Help > First Connection Wizard
DB engine, cocher MySQL
MySQL daatbase setup
Boutons "Database", New Database, choisir le "Database type" (la versin de mySQL est retournée par la commande mysqladmin -u root -p version)

A la main :
la base est dans bibus/db_models/mysql.sql pour MySQL <=
> 4.0 et mysql41.sql pour MySQL >= 4.1

Installation de zotero
----------------------
http://www.zotero.org/
Pour les fonctionalités de zotero, voir les animations "http://www.zotero.org/videos/tour/zotero_tour.htm"
"http://www.zotero.org/documentation/quick_start_guide"

Télécharger/installer le add-on zotero à partir de http://www.zotero.org/
Récupérer sur rpm.pbone.net ou rpmfind.net le rpm openoffice.org-pyuno pour Mandriva et l'installer.
Télécharger l'extension Zotero.oxt à partir de http://www.zotero.org/documentation/openoffice_integration et l'installer dans OpenOffice (Tools > Extension Manager) 


DNS dynamiques
==============
cf.:
www.dyndns.com/ 
www.no-ip.com/

Dyndns
======

ddclient
--------
Pour la mise à jour des IP sur un service DynDNS.

Installation
------------
# urpmi ddclient

A lire : /usr/share/doc/ddclient-3.6.6/README
Fichier de configuration : /etc/ddclient/ddclient.conf

service ddclient status | start | restart

Pour un modem adsl Olitec CPL400 (et d'autres sans doute) :
contenu de /etc/ddclient/ddclient.conf :

#-------------------------------------------------------------
daemon=600				# test effectué toutes les 600 secondes (10 minutes)
syslog=yes				# log des messages de mise à jour
mail=<BAL du destinataire des messages de mise à jour>
pid=/var/run/ddclient.pid		# mémorise l'ID du processus dans ce fichier

use=fw					# Récupère l'adresse WAN du modem sur le modem lui-même
	fw=<IP du modem>/doc/wan.htm	# sur cette page http du modem
	fw-login=<login pour accéder au modem>						
	fw-password=<mot de passe>

server=members.dyndns.org		# Adresse de la page web du service dyndns
protocol=dyndns2
login=<login pour cette page>
password=<mot de passe pour cette page>

machine.dyndns.org			# Nécessaire pour que l'adresse IP lue sur le modem
					# soit associée à l'adresse "machine.dyndns.org"
#-------------------------------------------------------------

Pour déboguer :
# ddclient -daemon=0 -debug -verbose -noquiet  
Pour lancer le démon
# service ddclient start | restart

Nb : la mise à jour du DNS de dyndns n'est pas instantannée (de la minute à plusisuers dizaines de minutes,
cf. http://www.dyndns.com/support/services/dyndns/faq.html#q19). 

Pour connaître l'adresse wan de son routeur
-------------------------------------------
ceci sans passer par l'utilitaire de gestion du routeur.
=> se connecter sur n'importe quelle page web qui retourne l'adresse IP du client, par exemple :
http://www.cnil.fr/index.php?id=123
http://checkip.dyndns.org
http://checkip.dyndns.org:8245/

Pour mettre à jour manuellement son adresse sur DynDns
------------------------------------------------------
http://www.dyndns.com/
Entrer le UserName et le Password
Au milieu de la page "My Services" (https://www.dyndns.com/account/services/), section "Hostnames",
cliquer sur son hostname (lien en bleu) ce qui ouvre la page https://www.dyndns.com/account/services/hosts/<NomDuHostName>
Cliquer sur "Use auto detected IP address" et valider la modification ("Save Cahnges")


Emulations, virtualisation ...
==============================
wine
	(winetricks)
wine HQ		http://www.winehq.org/
vmware
quemu
virtualbox

VirtualBox
==========
http://www.virtualbox.org/wiki/Documentation
http://wiki.mandriva.com/

Installation de virtualbox
--------------------------
# urpmi virtualbox

Lancement
---------
$ VirtualBox

Utilisation de virtualbox par plusieurs utilisateur :
-----------------------------------------------------
Créer un groupe vbox et y mettre les utilisateurs potentiels de virtualbox

Première configuration : installation de XP
-------------------------------------------
Nb : tous les fichiers de configuration sont dans ~/.VirtualBox

Pour que dans le wizard qui suit, le disque virtuel ne soit pas automatiquement créé dans ~/.VirtualBox/VDI, changer l'emplacement en utilisant le menu :
Fichier > Préférences > Fichier VDI.
Il sera créé automatiquement au bon endroit. On peut le changer plus loin, mais c'est plus compliqué.
Par exemple, si on a créé une partition /XP, on peut indiquer l'emplacement :
/XP/VirtualBox/VDI

Icône "Nouveau"
Nom de la machine virtuelle : WindowsXP (ou autre, sans grande importance ; ce nom sera attribué à la machine et au disque virtuels)
Système : Windows XP
Mémoire : garder la valeur par défaut

Disque dur virtuel :
- image dynamique : peut-être plus intéressant si on veut faire des sauvegardes de l'image (taille plus petite)
- image à taille fixe : sans doute système plus rapide
- Nom du fichier image : par défaut le nom attribué à la machine virtuelle (WindowsXP)

Le disque virtuel est créé avec les droits de celui qui a lancé VirtualBox. Modifier les droits sur le fichier et les répertoires créés de façon à ce qu'ils soient accessibles par le groupe vbox, par exemple :
drwxrwx---	root	vbox	XP/
drwxrwx---	root	vbox	VirtualBox/
drwxrwx---	root	vbox	VDI/
-rw-rw----	root	vbox	WindowsXP.vdi

# chown -R root:vbox /XP 
# chmod -R u+rwx,g+rwx,o-rwx /XP
# chmod u+rw-x,g+rw-x,o-rwx /XP/VirtualBox/VDI/WindowsXP.vdi

Installation proprement dite de XP
----------------------------------
Dans l'écran VirtualBox : menu Machine > Préférences > CD/DVD-ROM, cocher "Installer un lecteur CD/DVD-ROM" et sélectionner "Lecteur CD/DVD hôte"
Mettre le CD XP dans le lecteur
Cliquer sur l'icône "Lancer"
Installer XP cemme habituellement

Configutation du réseau
-----------------------
Ecran VirtualBox
Machine > Préférences -> Réseau -> NAT

Additions client
----------------
Attention : s'installe après que Windows XP soit installé (c'est un ensemble de drivers pour XP).
Dans l'écran Windows XP, cliquer sur l'icône "Lancer"
Dans une session administrateur, menu de l'écran WindowsXP : Périphériques > Installer les additions client : répondre aux questions pour que le fichier iso correspondant soit téléchargé et les drivers installés.
Parfois l'installation des drivers ne démarre pas automatiquement : dans ce cas 
aller à la racine du disque où est montée l'image iso
et double-cliquer sur VBoxGuestAdditions.exe.
Redémarrer W$.

Passer du mode fenêtre que mode plein écran et vice-versa
---------------------------------------------------------
CTRL F

Installations suivantes pour chaque utilisateur
-----------------------------------------------
Pour chaque utilisateur :
$ VirtualBox
configurer comme ci-dessus : dans le wizard, il suffit 
d'indiquer qu'on veut utiliser le disque virtuel déjà créé.

Changement de la taille mémoire allouée à XP
--------------------------------------------
Fenêtre VirtualBox
Menu Machine > Préférences > Général > Taille mémoire vive de base


Problèmes divers
°°°°°°°°°°°°°°°°

Echec au lancement
//////////////////
VirtualBox kernel driver not installed. The vboxdrv kernel module was either not loaded or /dev/vboxdrv was not created for some reason. Re-setup the kernel module by executing '/etc/init.d/vboxdrv setup' as root.
VBox status code: -1908 (VERR_VM_DRIVER_NOT_INSTALLED).

Code de résultat: 
0x80004005
Composant:
Console
Interface: 
IConsole {1dea5c4b-0753-4193-b909-22330f64ec45}

=> # /etc/init.d/virtualbox start
ou encore
# service virtualbox start

En cas de changement de noyau
/////////////////////////////
Charger si nécessaire les sources du noyau (uname -r pour connaître la version)
# urpmi kernel-source
# urpme dkms-virtualbox
# urpmi dkms-virtualbox
L'installation de dkms-virtualbox déclenche la mise à jour du pilote vboxdrv et le relance automatiquement.

Peut aussi se faire sans désintallation (essayer) ?
# /usr/sbin/dkms --rpm_safe_upgrade add -m virtualbox -v 1.6.0-4mdv2008.0
# /usr/sbin/dkms --rpm_safe_upgrade build -m virtualbox -v 1.6.0-4mdv2008.0

Spawning session... 0% tourne en boucle
///////////////////////////////////////
ps aux | grep -i virt
et tuer tous les processus VirtualBox qui tournent
 
WindowsXP avorté
////////////////
La fenètre Windows s'ouvre pour se refermer quasiment tout de suite avec le message "WindowsXP avorté"
Cause ? Semble provenir de l'installation dans Préférences de l'un des périphériques, en l'occurence périphérique disquette !
Solution : désactiver l'un après l'autre chaque périphérique et redémarrer l'OS virtuel
Sinon :
urpme virtualbox
urpmi virtualbox
et reconfigurer comme avant
(ou plus rapide :
$ rm -rf ~/.VirtualBox/
et reconfigurer)

Echec au lancement de la machine virtuelle WindowsXP
////////////////////////////////////////////////////
Unknown error creating VM (VERR_ACCESS_DENIED).
VBox status code: -38 (VERR_ACCESS_DENIED).

Code de résultat: 
0x80004005
Composant:
Console
Interface: 
IConsole {1dea5c4b-0753-4193-b909-22330f64ec45}

Solution ?

Echec au lancement de la machine virtuelle WindowsXP
////////////////////////////////////////////////////
Cannot open host device '/dev/hda' for readonly access. Check the permissions of that device ('/bin/ls -l /dev/hda'): Most probably you need to be member of the device group. Make sure that you logout/login after changing the group settings of the current user.
VBox status code: -38 (VERR_ACCESS_DENIED).

$ ll /dev/hda
brw-rw---- 1 root cdwriter 3, 0 2008-08-12 17:38 /dev/hdall
# vi /etc/group
et rajouter l'utilisateur qui lance VirtualBox au groupe cdwriter

Autre solution plus drastique au cas où la première solution ne marcherait pas :
$ rm -rf ~/.VirtualBox
et reconfigurer

Echec au lancement de la machine virtuelle WindowsXP
////////////////////////////////////////////////////
The VirtualBox kernel driver is not accessible to the current user. Make sure that the user has write permissions for /dev/vboxdrv by adding them to the vboxusers groups. You will need to logout for the change to take effect..

$ ll /dev/vboxdrv
crw-rw---- 1 root root 10, 61 2008-03-06 16:46 /dev/vboxdrv# chmod 
# chown root:vbox /dev/vboxdrv			(vbox : groupe des utilisateurs de virtualbox)
# ll /dev/vboxdrv
crw-rw---- 1 root vbox 10, 61 2008-03-06 16:46 

Echec au lancement de la machine virtuelle WindowsXP
////////////////////////////////////////////////////
 Unknown error creating VM (VERR_ACCESS_DENIED)

Peut se produire quand on lance VirtualBox à partir d'une machine distante (X -query ...)
Solution : désactiver les périphériques CD/DVD, disquette ...
(menu Machine/Préférences)

Erreur d'accès au sous système USB
//////////////////////////////////
This machine does not have any snapshots


Accès aux répertoires partagés
------------------------------
Pour une aide rapide, voir dans l'écran Virtualbox les explications qui s'affichent dans :
Machine > Préférences > Répertoires partagés
=> Dans XP :
net use x:\\vboxsvr\<share>



VirtualBox et utilisateur XP non administrateur
///////////////////////////////////////////////
vboxsvr n'est utilisable que par un utilisateur avec droits d'administration !
Pour un utilisateur à droits limités, utiliser samba :

Sous linux
----------
- installer samba si ce n'est déjà fait
# urpmi samba
- le démarrer si nécesaire
# samba status
# samba start
- Mettre le home de l'utilsateur (ou un autre répertoire) en partage :
éditer /etc/samba/smb.conf et ajouter :
---------------------------------------------------------
# Un répertoire privé, utilisable uniquement par Fred. Nb : Fred doit avoir les doits d'écriture sur le répertoire
[fred_home]
   comment = Home de Fred
   path = /home/fred
   valid users = fred
   public = no
   writable = yes
   printable = no
----------------------------------------------------------
- Créer le mot de passe pour fred
# smbpasswd -a fred

Sous Windows
------------
Monter la partition	\\<HôteLinux>\fred_home

Erreur d'accès au sous système USB
//////////////////////////////////
This machine does not have any snapshots.

Code de résultat: 
0x80004005
Composant:
Machine
Interface: 
IMachine {31f7169f-14da-4c55-8cb6-a3665186e35e}
Code retourné:
0x80004001

Touches mortes (¨, ^, etc.)
///////////////////////////
cf : www.virtualbox.org/ticket/599#comment:117

Menu > Tools > System Tools > Control Center > Keyboard Layout
(ou mieux, ouvrir cette fenêtre avec la commande kcmshell keyboard_layout)
Onglet Layout, cocher "Enable keyboard layouts", sélectionner "France" dans la 
partie "Available Layouts" et l'ajouter (touche "Add)
Sélectionner "France" dans la partie "Active Layout" ; Dérouler "Layout 
variant" et choisir "latin9", puis cocher "Include latin layout".

ou en français :
$ kcmshell keyboard_layout
Cocher "Activer les dispositions de clavier"
Dans "Dispositions disponibles" sélectionner "France", l'ajouter dans la 
partie "Dispositions actives" avec la touche "Ajouter >>"
Dans la partie 'Disposition actives, sélectionner "France" puis 
dérouler "Variante de la disposition" et choisir  "latin9" (ça marche 
peut-être avec un autre choix ?) et enfin cocher "Inclure la disposition 
latine.

Attention à bien mettre le clavier français en premier. Si le clavier anglais est en premier, à chaque login le clavier par défaut sera anglais (on peut le changer momentannément in cliquant sur le drapeau dans la barre de tâche).

Ne fonctionnerait pas pour Vista.

========================
Logiciels scientifiques
========================
Emboss
======
http://emboss.sourceforge.net/
emboss manual : http://faculty.ucr.edu/~tgirke/Documents/EMBOSS/EMBOSS_MANUAL.html

# urpmi emboss

Interfaces graphiques (GUI) :

EMBOSS Explorer
----------------
A récupérer sur http://embossgui.sourceforge.net/
Décompresser le fichier tar.gz.
$ tar -zxvf emboss-explorer-2.2.0.tar.gz
L'installation est bien expliquée dans le fichier README
Démarrage de l'interface web :
http://localhost/emboss

Problèmes éventuels :
- l'installateur indique des modules manquants : ils sont en rpm (cf. mcc)
	(par exemple # urpmi perl-Parse-RecDescent)
- Apache n'est pas installé (Un problème s'est produit lors du chargement de http://localhost/emboss :
Impossible de se connecter à l'hôte) :
	# urpmi apache-mpm-prefork
	# service httpd start
- Les CGI ne sont pas exécutés :
	# urpmi apache-mod_perl
	# service httpd restart
- Object not found! Error 404
	Semble se produire lorsque l'installation de emboss a été faire sur un PC alors que Apache et 
	apache-mod_perl n'étaient pas installés. Solution : relancer ./install.

Mise à jour MDV 2007.0 -> MDV 2007.1 (Spring)
=============================================
Si on ne veut pas faire une réinstallation complète :

$ sudo urpmi.removemedia -a
easyurpmi.zarb.org => sélectionner les serveurs
# urpmi --auto-update --auto-select --auto --noverify-rpm

Ne marche pas à tous les coups

Personnalisation de Mandriva 2007 après uen réinstallation complète
===================================================================
Un certain nombre de configurations par défaut sont assez désagréables : les modifier après installation :

Konqueror browser Web : démarrer avec une page blanche :
--------------------------------------------------------
Location : about:blank
Save View Profile "Web Browsing"

Icônes par défaut (Crystal-SVG) illisibles
-----------------------------
System > Configuration > KDE > Appearance & Themes > Icons > Theme > Kde-Classic

Taille des icônes sur le bureau
-------------------------------
System > Configuration > KDE > Appearance & Themes > Icons > Advanced > Size 32

RPM
---
easyurpmi.zarb.org/

slocate/updatedb absents !
--------------------------
urpmi mlocate

Bouton du menu démarrage inutilement grand
------------------------------------------
Editer /var/lib/mandriva/kde-profiles/free/share/config/kickerrc
Changer :
KMenuIcon=mdv_kmenu
en :
KMenuIcon=kmenu

Dictionnaires français
----------------------
# urpmi aspell-fr
# urpmi kde-i18n-fr (redémarrer KDE)


Encodages, conversions utf8 iso-8859
====================================
Voir aussi sur http://mdvmondelinux.s3ii.info/: 
Internet et tables de caractères
Quand Apache, php ou Mysql renâclent.

Conversion des contenus de fichiers : iconv
-------------------------------------------
Exemple : de (from) utf8 à (to) Iso-8859-1 :
$ iconv -f UTF-8 -t ISO-8859-1 fichier
où fichier contient le texte à convertir
-f		encodage source (from)
-t		encodage destination (to)
fichier		contient le texte à convertir
iconv --help	pour la doc
iconv --list	pour la liste des encodages supportés

Conversion des noms de répertoires et des noms de fichiers : convmv
(à installer : urpmi convmv)
--------------------------------------------------------------------
convmv --help
convmv --list			liste des encodages disponibles
convmv -f latin1 -t utf-8 -r <repertoire>

================
Logiciels divers
================
Astronomie
==========
celestia
stellarium

Visualisation 3D
================
paraview
--------
Installation : télécharger la version linux (paraview-x.y.z-Linux-x86.tar.gz.tgz) sur http://www.paraview.org/New/download.html
Décompresser (tar -zxvf)
Rien à compiler, en root déplacer juste le répertoire obtenu dans (par exemple) /opt

Apic, acpi, pat
===============
acpi (Advanced Configuration and Power Interface)
----
wiki acpi
Désactiver : acpi = off

apic (Advanced Programmable Interrupt Controller)
----
wiki apic
Désactiver : noapic

pat (Page Attribute Table)
---
http://lwn.net/Articles/278994/
Désactiver : nopat


================================
BUGS et messages d'erreur divers
================================

Pas de son sous Firefox avec les video flv
==========================================
Installer libflashplayer, voir plus haut





UTF-8 / iso-8859-15
===================
UTF-8 par défaut dans MDV2007.0 crée énormément de problèmes et ne semble pas apporter de "plus". Pour revenir à iso-8859-15, cf, http://article.gmane.org/gmane.linux.mandrake.newbie.french/90922/match=jipe+iso+8859+mandriva+2007
# cp /etc/sysconfig/i18n /etc/sysconfig/i18n.UTF-8 (pour le cas où on veut revenir en arrière)
Puis éditer /etc/sysconfig/i18n et supprimer le .UTF8 de la fin de chaque ligne.
=> cette solution ne semble pas marcher : à revoir.


kwrite sous MDK10
-----------------
Quand les utilisateurs veulent imprimer sous kwrite ils n'ont pas d'imprimante.
Solution : modifier le fichier de configuration de kwrite (~.kde/kwriterc) des utilisateurs : remplacer le paragraphe [KPrinter Settings] de l'utilisateur par celui de root.

KDE : "Could not find mime type application/octet-stream"
---------------------------------------------------------
Solution : supprimer le fichier octet-stream.desktop qui se trouve dans le répertoire ~/.kde/share/mimelnk/application

KDE : No write access to $HOME directory
KDE is unable to start
----------------------------
Passer en root et essayer :
# chown nom_utilisateur:nom_utilisateur /home/nom_utilisateur

Kwrite sous MDV 2005LE
----------------------
Les caractères noirs sur fond de lignes noires sont invisibles !!!
Solution :
Settings / Configure Editor
en bas : Default Schema for Kwrite : choisir "kwrite - Printing"

Kmail
-----
Plante avec un message "The application Kmail crashed and caused signal 11 (SIGSEGV)" etc.
Remède : supprimer le fichier de configuration de l'utilisateur : $HOME/.kde/share/config/kmailrc
Refaire la config de Kmail (menu "Settings")

Kmail (kdepim-kmail-3.3.2-45mdk) après installation de MDV 2005 LE
------------------------------------------------------------------
"KMail could not create folder '$HOME/.Mail';"
alors que $HOME = /home/utilisateur et que les droits sur ce répertoire sont corrects. 
Solution : installer la version "Cooker" de kmail.

Kmail après installation de la version 3.4.2
--------------------------------------------
Problème MIME : "Impossibe de trouver le type MIME"
$ kmail &
kio (KSycoca): WARNING: Outdated database found
(KSycoca): WARNING: Found version 75, expecting version 79 or higher.
kio (KSycoca): ERROR: No database available!

Solution : redémarrer KDE.

Composer Kmail, correction orthographique
-----------------------------------------
Le choix du dictionnaire se fait en principe au niveau de KDE : 
K/System/Configuration/KDE/Components/Spellchecker
(ou kcontrol, KDE Components/Spellchecker

Dans Kmail le choix du correcteur orthographique n'apparaît pas dans le menu principal, mais dans le
menu d'édition des messages (Message/New Message) => menu Settings/Spellchecker.
NB : ne pas oublier de charger le support de langue (française) :
	urpmi aspell-fr
	et pour KDE : urpmi kde-i18n-fr (et redémarrer KDE)
Puis dans K/System/Configuration/KDE/Components/Spellchecker
choisir le "client" (aspell), le dictionnaire (French) et l'encodage (ISO 8859-1 ou ISO 8859-15)

Dans Kmail, on a beau choisir un dictionnaire français au niveau de (fenêtre Nouveau Message) "Settings/Spellchecker" c'est souvent le dico anglais qui reste actif.
Solution : vérifier la ligne "Dictionnary" (entre "Identity" et "To")qui est sans doute à "Aspell Default" : dérouler et sélectionner un des dicos français.
Si la ligne Dictionnary est absente, la faire afficher au moyen du menu View > Dictionary.

kmail : des messages semblent vides
-----------------------------------
A essayer :

1 - Redémarrer KDE (Alt Ctrl Backspace)
2 - ou bien supprimer les index

Barre de tâche KDE
==================

Supprimer un applet
-------------------
Clic droit sur la poignée de l'applet, supprimer

Si elle n'est plus visible :
----------------------------
Lancer kcontol ([Alt][F2] kcontrol)
Menu : Desktop > Panels > Hiding,
Sélectionner "Only hide when a panel-hiding button is clicked" pour la faire réapparaître.
Ensuite on peut revenir à "Hide automatically"

Barre de tâche Gnome
====================
Si elle n'est plus visible :
# urpmi gnome-panel

/usr/lib/libstdc++.so.6: version `CXXABI_1.3.1' not found
=========================================================
Installer (après avoir èventuellement dèsinstallè)
gcc-4.0.1-5
gcc-c++-4.0.1-5

$ vi
vi: error while loading shared libraries: libperl.so: cannot open shared object file: No such file or directory
========================================================================================
Une solution :
# locate libperl.so
/usr/lib/perl5/5.8.7/i386-linux/CORE/libperl.so

# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/X11R6/lib
/usr/lib/qt3/lib

==> libperl.so n'est pas dans un répertoire référencé : éditer /etc/ld.so.conf et
rajouter :
/usr/lib/perl5/5.8.7/i386-linux/CORE
Puis mettre à jour les paths :
# ldconfig

Bug /etc/hosts
==============
Sur MDV 2005 (et d'autres versions sans doute) le fichier /etc/hosts est incorrect, ce qui fait que certains programmes (tcpdump par exemple) ne fonctionnent pas correctement
$ cat /etc/hosts
127.0.0.1               nom_de_la_machine.domaine.fr nom_de_la_machine localhost
Corriger en :
127.0.0.1       localhost.localdomain   	localhost
N°_IPmachine	nom_de_la_machine.domaine.fr	nom_de_la_machine

Debian Sarge : aptitude
=======================
Message "Warning: could not lock the cache file"
Aptitude n'a pas été fermé correctement, les fichiers de vérouillage n'ont pas été effacés.
Solution (http://wiki.linuxquestions.org/wiki/Aptitude)
Sous root :
rm /var/cache/apt/archives/lock
rm /var/lib/aptitude/lock 
rm /var/lib/dpkg/lock 
rm /var/lib/apt/lists/lock

Adaptateur Marvell Yukon, driver sk98lin, carte mère ASUS P4P800-E deluxe
=========================================================================
MDV 2006.0
- avec cd de boot boot.iso
	et démarrage automatique : impossible l'adaptateur ne répond pas
	En choisissant [F2], démarrage avec Alt1 (noyau 2.6.12-12mdk-1586-up-1GB), OK jusqu'au message 
	"The modulese for this kernel (2.6.12 ...) can't be found  on this mirror, please update your boot disk" !

DEBIAN SARGE	avec cd de boot debian-31r0a-i386-netinst.iso
		impossible aussi bien avec noyau 2.4 que 2.6 :
		après installation du système de base et redémarrage, connexion
		réseau impossible
FEDORA		Ca marche, mais après installation, pas de réseaeu ! 

Samba
======
9769: session request to *SMBSERVER failed (Called name present, but insufficient resources)
--------------------------------------------------------------------------------------------
Pas assez de ressources sur le PC sous Windows. Solution: rebooter windows.

Grub
====
Error 15: File not found
Exemple : /boot/grub/menu.lst contenant :
title		Debian GNU/Linux, kernel 2.6.8-2-386 (on /dev/hdb1)
root		(hd1,0)
kernel		/boot/vmlinuz-2.6.8-2-386 root=/dev/hdb1 ro
initrd		/boot/initrd.img-2.6.8-2-386
savedefault
boot

1° cas : il y a une erreur dans les noms de fichiers
----------------------------------------------------
Lancer grub et utiliser la touche tab (autocomplétion) pour vérifier l'emplacement et le nom des fichiers :
grub> root (hd
 Possible disks are:  hd0 hd1

grub> find /boot/grub/stage1
 (hd0,0)
 (hd1,2)

grub> kernel (hd0,0)/boot/
 Possible files are: grub kernel.h vmlinuz System.map-2.6.12-12mdksmp config-2.
6.12-12mdksmp vmlinuz-2.6.12-12mdksmp message-graphic kernel.h-2.6.12 initrd-2.
6.12-12mdksmp.img kernel.h-2.6.8.1-12mdkBOOT initrd.img fr-latin1.klt System.ma
p config kernel.h-2.6.12-12mdksmp

grub> initrd (hd0,0)/boot/
 Possible files are: grub kernel.h vmlinuz System.map-2.6.12-12mdksmp config-2.
6.12-12mdksmp vmlinuz-2.6.12-12mdksmp message-graphic kernel.h-2.6.12 initrd-2.
6.12-12mdksmp.img kernel.h-2.6.8.1-12mdkBOOT initrd.img fr-latin1.klt System.ma
p config kernel.h-2.6.12-12mdksmp

Corriger les éventuelles erreurs dans /boot/grub/menu.lst

2° cas : grub est une version récente (0.97 par exemple)
-------------------------------------
"savedefault" est encore utilisé dans Debian Sarge et dérivés (Ubuntu ...) mais semble ne plus être supporté dans les versions récentes de grub.
Il semble que savedefault permettait de mémoriser le dernier choix fait dans le
menu.lst grub.
Supprimer savedefault et le message "File not found" doit disparaître.

freenx, version pour AMD64
==========================
Sur une Mandriva/x86-64 avec le serveur freenx installé :
freenx-0.4.4-1mdk (noarch)
lib64nxX11_0-1.5.0-4mdk (Architecture: x86_64)
nxagent-1.5.0-4mdk (Architecture: x86_64)
nxproxy-1.5.0-4mdk (Architecture: x86_64)

impossible de se loger avec le client nx de NoMachine : la connexion échoue avec parfois
un essage d'erreur sur le client :
"invalid MIT-MAGIC-COOKIE-1"

Il semble qu'il y ait au moins un bug au niveau de nxagent :
# nxagent
nxagent: symbol lookup error: /usr/lib64/libXcompext.so.1: undefined symbol: 
_NXFlushSize"
alors que :
# strings /usr/lib64/libXcompext.so.1  | grep NXFl
_NXFlushSize
montre que _NXFlushSize est bien présent.

Solution en attendant que le bug soit corrigé :
- supprimer tous les fichiers ci-dessus
- installer la version 32 bits de freenx.

Après connexion réussie sur le serveur (la mire NX s'affiche) la connexion stoppe brutalement sans message d'erreur
----------------------------------------------------------------
Aucun message d'erreur dans /var/log/messages du client ou du serveur.
Sur le client, dans le répertoire ~/.nx/S-...-1000-8EF994068E7572DCCF5155573054C66D
rien dans le fichier errors mais en fin de fichier session :
Info: End of NX transport requested by remote.
Info: Shutting down the NX transport.

=> cause : ~/.Xauthority se retrouve parfois avec les droits root !!
$ ll ~/.Xauthority
-rw------- 1 root root
=> Solution :
# chown <user>:<user> ~/.Xauthority

fish
====
"An error occurred while loading fish://<host>:"
Se produit sur certaines machines et pas d'autres !!
Probablement un bug KDE (bug 91107) lié à un problème de droits.
Contournement provisoire possible :
kdesu konqueror
fish://user@host

Xauth
-----
Warning: No xauth data; using fake authentication data for X11 forwarding.
Cf. http://www.rocketcalc.com/bread.php?key=22

smbfs: mount_data version 1919251317 is not supported
-----------------------------------------------------
Sous MDV 2007, mount -t smbfs ... génère une erreur :
mount: wrong fs type ...
dmesg | tail affiche smbfs: mount_data version 1919251317 is not supported
=> mount.smbfs n'existe plus. Utiliser mount.cifs à la place :
# mount -t cifs ...


nedit et UTF-8
==============
nedit: the current locale is utf8 (en_GB.UTF-8)
nedit: changed locale to non-utf8 (en_GB)
X Error of failed request:  BadMatch (invalid parameter attributes)
etc.

Pour que nedit veuille bien démarrer (cf. http://www.webservertalk.com/printthread.php?s=0cc0d0d5730b9b47fb8d2ab449425c34&threadid=1796258)


$ XLIB_SKIP_ARGB_VISUALS=1
$ export XLIB_SKIP_ARGB_VISUALS
$ nedit

ou 3 autres possibilités (http://www.nedit.org/pipermail/develop/2006-August/012199.html)

nedit -xrm '*visualID: default'
XLIB_SKIP_ARGB_VISUALS=1 nedit
compile nedit from the latest CVS sources

Ou encore plus simple : revenir en iso-8859-15 : voir plus haut.

X11 connection rejected because of wrong authentication
=======================================================
Message d'erreur qui apparaît lorsqu'on est connecté par ssh en root sur une machine distante et qu'on essaye de lancer une application graphique, 
=> changer dans /etc/ssh/ssh_config file 
Forward X11 no
en
Forward X11 yes


Could not start interprocess communication
No write access to /home/<user>/.ICEauthority
There was an error setting up inter-process communication for KDE. The message returned by the sysem was:
Authentication Rejected, reason: None of the authentication protocols specified are supported and host-based authentication failed

Please check that the "dcopserver" program is running
===================================================================================================================================
Pour une raison inconnue le propriétaire de ~/.ICEauthority a été changé en root:root
Solution : le réattribuer à son propiétaire :
$ sudo chown <user>:<user> /home/<user>/.ICEauthority

Problèmes d'installation MDV 2007.0, MDV 200.1 liés au chipset NVIDIA
=====================================================================

Concerne en particulier les CM Asus A8N-SLI deluxe, M2N4-SLI, celles qui équipent les Pundit, etc.

Pas de problème en utilisant les versions "Mandriva One" : elles semblent contenir les drivers NVIDIA propriétaires
Par contre impossibilité d'installer à partir des CD d'installation classiques.
Solution à partir :
- du DVD mandriva-linux-2007-spring-free-dvd-x86_64.iso
- du CD boot.iso (à chercher dans mandrivalinux/official/2007.1/x86_64/install/images, installation via le 
réseau).
- ...

Nb : dans le cas de boot.iso, l'adresse du répertoire contenant les sources de MDV 2007.1 est erroné : corriger 2006.0 en 2007.1

1 - pour pouvoir booter, il faut rajouter "acpi=off" dans le ligne de commande 
de boot
2 - pour que le driver de disques SATA fonctionne il faut aussi 
rajouter "irqpoll" dans cette même ligne de commande. D'après la page de 
messages (alt ctrl F4) il s'agit d'un conflit au niveau d'IRQ5 : la solution 
irqpoll est indiquée dans cette page.
3 - à la fin de l'installation dans le paramétrage de l'amorçage, cliquer 
sur "Avancé" et désactiver l'APIC.

NB : pour modifier la ligne de commande, pas de problème dans le cas de 
boot.iso. Dans le cas du DVD d'installation c'est moins évident :
- se positionner sur "Install Mandriva Linux 2007 Spring on your system"
- Appuyer sur F3 : Other Options
- Se déplacer dans la ligne de commande avec la touche <- jusqu'au point 
d'insertion des paramètres à rajouter.

Les symptômes :
1 (acpi) : écran noir après lancement de l'installation
2 (irqpoll) : après chargement du pilote NVIDIA, message "Une erreur est 
survenue : aucun périphérique valide n'a été trouvé pour créer une nouvelle 
partition"
3 (désactivation de APIC) : impossible de redémarrer après l'installation.

Driver video pour carte NVIDIA GeForce FX
-----------------------------------------
Voir plus loin pour MDV 2008

Installer les pilotes propriétaires (beurk)
Aller sur le site NVIDIA (http://www.nvidia.com/object/unix.html)
Télécharger le dernier driver ad hoc, par exemple NVIDIA-Linux-x86_64-100.14.11-pkg2.run
Passer en mode texte (pas de X qui tourne) pour pouvoir l'exécuter :
# telinit 3
# sh NVIDIA-Linux-x86_64-100.14.11-pkg2.run
L'affichage des messages est atroce : ils se foutent vraiment du monde chez nvidia !
Repasser en graphique :
# telinit 5
Sélectionner au moyen de mcc le nouveau driver :
# mcc
=> Harware > Set up the graphical server > Graphic card
Garder la carte sélectionnée
Il est demandé si on veut utiliser le driver propriétaire : répondre oui
Redémarrer X

Video pour pour carte NVIDIA GeForce FX (MDV 2008, marche peut-être aussi pour 2007 ?)
--------------------------------------------------------------------------------------
# urpmi x11-driver-video-nvidia-current		(NVIDIA proprietary X.org driver and libraries for new cards)​
ce qui charge le driver propriétaire, actuellement 100.14.19-1mdv2008.0
Puis :
# XFdrake
Cliquer sur Carte graphique [ NVIDIA GeForce FX ] ; un message demande si on veut utiliser le pilote propriétaire : accepter. Le chargement et la mise à jour des modifs du noyau se fait automatiquement. Redémarrer le PC pour que le nouveau driver soit pris en compte.

X ne démarre plus en cas de cas de changement de noyau :
Installer les sources du nouveau noyau
A tester :
- soit lancer XFdrake
- ou bien il suffit sans doute de désinstaller/réinstaller dkms-nvidia

A voir : le problème peut peut-être être résolu avec irqpoll : à tester.

Instabilité du pilote propriétaire NVIDIA (nvidia-current-100.14.19-1mdv2008.0)
sur CM ASUS M2N4-SLI (l'écran graphique se fige de temps en temps)
-------------------------------------------------------------------------------
Mettre à jour le bios
Bug avec version 0902.
Plus de problème avec la dernière version du bios :
Version: ASUS M2N4-SLI ACPI BIOS Revision 1202

Après installation de mdv 2008.0, écran noir au redémarrage
==========================================================
Provient sans doute d'un bios avec ACPI (Advanced Configuration and Power Interface) défectueux.
Solutions :
- si possible mettre à jour le bios (acpi foireux sur le bios d'origine de beaucoup de machines)
- sinon : acpi=off dans /boot/grub/menu.lst (sur la ligne kernel ...)
- essayer aussi irqpoll

Pour modifier les options au démarrage (2008.1 en particulier) : F2 et rajouter les options une à une pour tester leur effet 

Après installation de mdv 2008.0, pas de clavier
================================================
Provient sans doute de l'APIC (Advanced Programmable Interrupt Controller) absent ou défectueux dans le bios)
Solutions :
- si possible mettre à jour le bios
- sinon : noapic dans /boot/grub/menu.lst (sur la ligne kernel ...)

Bug shorewall/iptables ?
========================
Messages d'erreur :
----------------------------------------------------------------
Processing /etc/shorewall/start ...
FATAL: Module ip_set not found.
ipset v2.2.9a: Error from kernel: Protocol not available
iptables v1.3.7: Problem when communicating with ipset, errno=92.

FATAL: Module ip_set not found.
ipset v2.2.9a: Error from kernel: Protocol not available
iptables v1.3.7: Problem when communicating with ipset, errno=92.

iptables: No chain/target/match by that name
iptables: No chain/target/match by that name
----------------------------------------------------------------
Cause ?

Solutions
---------
1 -Solution "bourrin" :

Sauvegarder /etc/shorewall/interfaces, rules, zones et policy
cp /etc/shorewall/interfaces /etc/shorewall/interfaces.bak
cp /etc/shorewall/rules /etc/shorewall/rules.bak
cp /etc/shorewall/zones /etc/shorewall/zones.bak
cp /etc/shorewall/policy /etc/shorewall/policy.bak

Puis :
urpme iptables			(enlève iptables et shorewall)
urpmi shorewall			(installe iptables et shorewall)
Remettre les fichiers de configuration sauvegardés
cp -f /etc/shorewall/interfaces.bak /etc/shorewall/interfaces
cp -f /etc/shorewall/rules.bak /etc/shorewall/rules
cp -f /etc/shorewall/zones.bak /etc/shorewall/zones
cp -f /etc/shorewall/policy.bak /etc/shorewall/policy

Relancer shorewall (shorewall start) ... et plus d'erreur !!!

2 - Mettre à jour le noyau
Le message apparaît en effet avec le noyau livré avec MDV 2008.0 (2.6.22.9-desktop586-1mdv)

X -query, kdm et 2008.0
-----------------------
Actuellement si on essaie de se connecter sur une machine distante avec X -query
le kdm distant plante. Utiliser à la place gdm. Sur la machine distante :
# urpmi gdm
Puis configurer gdm comme indiqué plus haut dans "Configurer GDM à partir de 2008.0" :
[xdmcp] Enable=true

Diskdrake : nouvelle partition créée non montée !
-------------------------------------------------
Une nouvelle partition est crée au moyen de diskdrake. Diskdrake ajoute l'entrée correspondante dans /etc/fstab, par exemple :
/dev/sdb3 /Sauvegardes reiserfs notail 1 2
mais la partition n'a pas été montée !
La commande df ne la fait pas apparaître
Si on essaie de copier quelque chose dans /Sauvegardes la partition senble ne faire que 1 Go.
Solution : monter la partition à la main :
# mount /dev/hdb3

R : fontes absentes (edit, plot, etc.)
-----------------------------
plot : "X11 font at size 7 could not be loaded"
edit : "unable to create fontset -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*"

Quelques pistes :
cf. http://linuxgazette.net/132/misc/lg/fonts_puzzle_and_puzzling_gmail_page_upon_login_from_firefox.html

- voir quels répertoires sont déclarés dans /etc/X11/xorg.conf, Section "Files"
- ou bien les faire afficher par la commande :
$ xset q|grep -i font
- rechercher les fontes :

$ grep -ir "adobe-helvetica" /usr/share/fonts

avec xlsfonts (à installer : urpmi xlsfonts) :
$ xlsfonts -fn '*adobe-helvetica*'
xlsfonts: pattern "*adobe-helvetica*" unmatched

ou avec :
$ fc-match '*adobe-helvetica*'
DejaVuSans.ttf: "DejaVu Sans" "Book"

et pour voir où les fontes DejaVuSans sont localisées :
$ locate -i dejavusans
/usr/share/fonts/TTF/dejavu/DejaVuSans-Bold.ttf
...
Vérifier dans /etc/X11/fs/config (fichier de configuration du serveur de fontes xfs) que le chemin /usr/share/fonts/TTF est déclaré.

Vérifier que le serveur de fontes fonctionne ($ ps aux |grep xfs)

$ cat /usr/share/fonts/TTF/dejavu/fonts.dir
Les fichiers fonts.dir sont vides : utiliser mkfontdir pour les remplir :
# mkfontdir NomDuRepertoire
Regénérer la base de données de fontes :
# xset fp rehash

=> Solution :
# urpmi x11-font-adobe-75dpi x11-font-adobe-100dpi
et redémarrer X.
En fait la plupart des applications modernes utilisent FreeType (http://www.freetype.org/)
xlsfonts est un outil pour l'ancien système de fontes ce qui fait qu'il ne trouve pas les fontes adobe-helvetica. Idem avec R

xauth
-----
/usr/bin/xauth: error in locking authority file
Solution :
xauth -b
quit

xine was unable to initialize any audio drivers
-----------------------------------------------
et aussi kalarm : ne joue pas les fichiers son
-----------------------------------------------
Solution : se rajouter dans le groupe audio

kfloppy : Internal error: device not correctly defined
-------------------------------------------------------
Sans doute un problème de droits : passer en root.

NX : fonte de caractère illisible au niveau de la configuration (nxclient) ou du panneau de connexion
---------------------------------------------------------------------------------
Solution :
# urpmi x11-font-adobe-75dpi x11-font-adobe-100dpi

Problèmes de son (pas de son)
-----------------------------
http://forum.ubuntu-fr.org/viewtopic.php?id=2969

The application unknown (nspluginviewer) crashed and caused signal 11 (SIGSEGV)
-------------------------------------------------------------------------------

Problèmes avec HAL (Hardware Abstraction Layer)
***********************************************

Mandriva 2008.1, lorsqu'on est connecté à un PC distant par X -query ...  et qu'on essaye de monter un périphérique (clé USB, etc) :
-------------------------------------------------------------------------
A security policy in place prevents this sender from sending this message to this recipient, see message bus configuration file (rejected message had interface "org.freedesktop.Hal.Device.Volume" member "Mount" error name "(unset)" destination "org.freedesktop.Hal")
----------------------------------------------------------------------

Cf. http://www.jefferyfernandez.id.au/2007/07/26/a-security-policy-in-place-prevents-mounting-of-volumes/

Créer le groupe "plugdev" et y mettre les utilisateurs autorisés.
Ajouter à la fin du fichier “/etc/dbus-1/system.d/hal.conf” :
<policy group="plugdev">
    <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
    <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
    <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
  </policy>

Redémarrer le démon hal :
# service haldaemon restart

Cette modification ne suffit pas, cf. le message suivant lorsqu'on essaye de monter le périphérique :
org.freedesktop.hal.storage.mount-removable no <-- (action, result)
-------------------------------------------------------------------
Solution, cf. http://foo-projects.org/pipermail/lunar/2008-August/008081.html.
Ajouter dans le fichier "/etc/PolicyKit/PolicyKit.conf", entre :
<config version="0.1">
et
</config>
les lignes :

<match action="org.freedesktop.hal.storage.mount-removable">
  <match user="nom de l'utilisateur">
    <return result="yes"/>
  </match>
</match>

<match action="org.freedesktop.hal.storage.mount-fixed">
  <match user="nom de l'utilisateur">
    <return result="yes"/>
  </match>
</match>

Inutile de rédémarrer le démon hal.

NB : bizarre : ces modifications résolvent aussi le problème de mot de passe root non reconnu par exemple lorsqu'on lance mcc par Alt F2 !!

Problème de disque
==================
Le PC redémarre normalement, mais s'arrête sur le message :
"Checking root filesystem
fsck.ext2: Is a directory while trying to open /
/:
The superblock could not be read or does not describe a correct ext2
filesystem. If the device is valid and if it really contains an ext2 filesystem (and not swap or ufs or something else), then the superblock is corrupt, and you might try running e2fsck with an alternate superblock
	e2fsck -b 8193 <device>"

Solution :
Booter avec un CD live (SysRescueCD par exemple). Vérifier les partitions avec :
# e2fsck /dev/sda1	(si /dev/sda1 est la partition en cause)
Si la réponse est "Clean" "ssayer encore avec :
# e2fsck -f /dev/sda1
S'il n'y a toujours pas d'erreur le blocage ci-dessus peut provenir d'un fichier fstab vide (ou illisible) !