Archives de catégorie : Documentation

Ne perdez plus konsole !

Obligé de faire une réinstallation complète de mon ordinateur (Mandriva sous-version 2006 en 2 Go), pas moyen de l’obliger à garder une console à l’écran. A chaque démarrage, il faut cliquer sur l’icône et repositionner cette console.

Tout ce qui est inutilement répétitif est haïssable, surtout quand on est informaticien (la solution existe déjà, sinon vous la programmez !)

Plusieurs incidents de ce type ne m’avaient pas permis dans le passé d’en trouver soit la cause soit la solution.

Cette fois-ci, et avec l’expérience acquise et avec des recherches assez longues, je crois avoir enfin identifié une solution, que je vous propose ci-dessous. Attention, elle est probablement quelque peu dépendante de la distribution !

Des collègues m’avaient déjà signalé que le lieu du délit se situait dans :
~/.kde/share/config/session

Mais le renseignement était insuffisant… Car après la toute récente réinstallation, il n’y a rien dans ce répertoire !

Heureusement, j’ai un autre ordinateur, qui garde la console d’une fois sur l’autre (pour le moment!) Mais il a été installé avec la version Mandriva 2005 en 4 Go (octobre 2005)…

Le répertoire ci-dessus indiqué contient deux fichiers :
– kwin
– konsole

En réalité, leur nom est suivi d’un nombre d’environ 38 chiffres hexadécimaux…
Ces deux nombres se retrouvent dans ksmserverrc, situé dans le répertoire au-dessus :
(~/.kde/share/config).

Après transfert d’un ordinateur à l’autre de ces trois fichiers aux bons endroits, et après plusieurs redémarrage,’konsole’ condescend enfin à bien rester présente à l’écran, et au bon endroit. Ouf !

NB : ces trois fichiers forment un ensemble indissociable, à cause des fameux nombres de 38 chiffres, sinon ça ne marche pas !

Voici le contenu de ces fichiers :

1) ~/.kde/share/config/ksmserverrc : (complet)
_ [$Version]
_ update_info=ksmserver.upd:kde3

_ [General]
_ screenCount=1

_ [LegacySession: saved at previous logout]
_ count=0

_ [Session: saved at previous logout]
_ clientId1=1013ad0d4db000113111176100000065400008 (nombre a)
_ clientId2=1013ad0d4db000113092683800000062930008 (nombre b)
_ clientId3=1013ad0d4db000113085722000000067400007
count=3
_ discardCommand1=rm,$HOME/.kde/share/config/session/kwin_1013ad0d4db000113111176100000065400008_1140355101_666346
_ discardCommand2=rm,$HOME/.kde/share/config/session/konsole_1013ad0d4db000113092683800000062930008_1140355101_608035
_ discardCommand3=
_ program1=kwin
_ program2=konsole
_ program3=krandrtray
_ restartCommand1=kwin,-session,1013ad0d4db000113111176100000065400008_1140355101_666346
_ restartCommand2=konsole,-session,1013ad0d4db000113092683800000062930008_1140355101_608035
_ restartCommand3=krandrtray,-session,1013ad0d4db000113085722000000067400007_1140355101_609339
_ restartStyleHint1=0
_ restartStyleHint2=0
_ restartStyleHint3=0
_ userId1=mikhail (c’est le nom de l’utilisateur : /home/mikhail)
_ userId2=mikhail
_ userId3=mikhail

‘nombre a’ et ‘nombre b’ sont les parties à bien noter. L’important semble être surtout la première partie des trois groupes de chiffres.
Comme on peut voir, il y a aussi un ‘nombre c’ sur la ligne « restartCommand3 », mais qui ne joue aucun rôle dans mon problème.

2) konsole_1013ad0d4db000113092683800000062930008_1140355101_608035
_ Seul le nom de ce fichier semble avoir de l’importance, pas son contenu (pour le problème en cours)

3) kwin_1013ad0d4db000113111176100000065400008_1140355101_666346

La partie importante de ce fichier semble être la ligne sessionId2. Voici quelques lignes qui encadrent cela :

_ restore1=0,753,1280,47
_ restore2=0,0,0,0
_ sessionId1=1013ad0d4db000114035408900000065790002
_ sessionId2=1013ad0d4db000113092683800000062930008
_ shaded1=false
_ shaded2=false
_ shortcut1=
_ shortcut2=

Le nombre qui suit ‘sessionId1’ ne se retouve pas ailleurs. Qui sait à quoi cela sert ???

Je souhaite que ce renseignement, que je n’ai pu trouver sur Internet (www.google.fr/linux), pourra être utile à d’autres ‘Mandriviens’.

mikhail

Suppression automatique de modules non utilisés avec un noyau 2.6.

Depuis la sortie du noyau 2.6, l’option autoclean de rmmod (rmmod -a) qui permettait de supprimer facilement de la mémoire les modules du noyau non utilisés n’est plus disponible.

Cet article donne une façon de rétablir une telle fonctionnalité.

Avertissement: Si cette possibilité a disparu du noyau 2.6, c’est pour une très bonne raison. La suppression de certains modules n’est pas conseillée et est susceptible de rendre un système instable, voire même de le planter. Même si cette fonctionnalité était disponible avec les noyaux 2.4.x, elle était tout aussi dangereuse.

Le contexte.

Il m’arrive de temps en temps de lire des disquettes ou des CD-ROM. Je trouve très dommage d’encombrer en permanence la mémoire de ma machine avec des drivers rarement utilisés, surtout quand la machine dispose de très peu de mémoire.

D’où l’idée de compiler en module les drivers du lecteur de disquettes, du lecteur de CDROM et les systèmes de fichier iso 9660, ext2 et fat et de les charger en mémoire seulement quand c’est nécessaire.

Le chargement automatique de ces modules lorsqu’on monte une disquette ou un CDROM n’a posé aucun problème, mais une fois qu’on en a fini avec eux, les modules restent en mémoire si on ne les supprime pas manuellement.

Une solution.

Tout d’abord, le noyau doit être compilé avec les options nécessaires:

– Le système de fichier /proc (CONFIG_PROC_FS).
– L’option permettant de supprimer des modules pour les noyaux 2.6 uniquement (CONFIG_MODULE_UNLOAD).
Par défaut, cette dernière option n’est pas compilée.

Pour détecter et décharger les modules inutiles, j’ai écrit un script bash (appelé autoclean). Il recherche dans /proc/modules les modules dont le compteur d’utilisation est à zéro puis les supprime avec rmmod.

Certains drivers ne mettent pas ce compteur à jour lorsqu’ils sont compilés sous forme de modules. C’est notamment le cas de certains drivers de souris ou de clavier (comment décider si le driver d’une souris est utilisé ?). De tels modules risquent donc d’être supprimés alors qu’ils sont utilisés et nécessaires à la bonne marche du système.

Afin d’éviter ce genre de problèmes, j’ai prévu d’utiliser un fichier de configuration (/usr/local/etc/autoclean.conf). Le script vérifie que les modules dont le compteur est à zéro ne sont pas présents dans ce fichier avant de les supprimer. Ce fichier, dont les lignes commençant par un # sont ignorées, n’a pas de format particulier.

Voici le source de ce script:


#!/bin/bash

EXCLUDE=/usr/local/etc/autoclean.conf

cat /proc/modules | egrep "[[:space:]]0[[:space:]]" |
while read MODULE NOT_USED; do
if ! (sed -e "/^#/d" $EXCLUDE | grep "<$MODULE>") &> /dev/null ; then
/sbin/rmmod $MODULE
fi
done

exit 0

Pour une suppression automatique des modules, il suffit d’ajouter un appel à ce script dans une cron table. Par exemple, dans ma cron table root, j’ai ajouté la directive suivante:


*/15 * * * * /usr/local/sbin/autoclean

Cette directive lance une recherche et une suppression des modules non utilisés toutes les 15 minutes.

Conclusion.

Cette méthode s’est montrée très fiable chez moi et m’a permis de réduire de façon substancielle l’empreinte mémoire de mon noyau sans sacrifier la moindre fonctionnalité.

Cependant, il faut rester très prudent avec la suppression des modules. Certains modules ne doivent pas être supprimés du tout et d’autres ne peuvent pas l’être par cette méthode car il n’y a aucun moyen fiable de savoir quand ils sont utilisés et quand ils ne le sont pas.

Configuration du Wifi (centrino) avec Mandrake 9,2

Matériel et logiciels :
– portable de marque ECS, Centrino 1,3 Ghz, Wifi ; c’est le même que celui du Président, par pur hasard (merci aux supermarchés Carrefour, qui vendent aussi Linux)
– point d’accès Linksys WRT54G-FR
– distribution Linux Mandrake 9,2.

Les logiciels Wifi, à télécharger :
– hostap-drivers-0.1.3.tar.gz
– ipw2100-0.43.tgz
– ipw2100-1.0.fw

Avant de commencer
_ lspci donne :
_ 02:02.0 Network controller: Intel Corp. PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04)
_ qui est le périphérique WiFi Intel à installer ci-dessous.

Installation

A – HOSTAP
En ‘root’,bien évidemment, et dans ce répertoire (/root) décompacter :
– tar zxvf hostap-drivers-0.1.3.tar.gz
_ aller dans le répertoire :
– cd hostap-drivers-0.1.3/
– make ; make install

_ ‘make install’ échoue ici parce que le répertoire ‘hostap’ existait déjà ; suppression, nouveau ‘make install’,avec succès

Faire encore :
– modprobe hostap ; lsmod

B – IPW2100
_ Remonter au répertoire de base (/root)
– tar zxvf ipw2100-0.43.tgz
– cd ipw2100-0.43/
_ là les choses sont un peu plus compliquées :
– make HOSTAP=../hostap-drivers-0.1.3
– make install
_ échec … il manque le ‘firmware’ Intel

C – ‘FIRMWARE’
_ Il faut copier le firmware Intel ipw2100-1.0.fw dans /usr/lib/hotplug/firmware

recommençons :
– make install
– modprobe ipw2100
_ il s’avère préférable de copier aussi le firmware dans /etc/firmware, répertoire qui n’existe pas en Mandrake 9,2 (comme l’a fait David sous Debian)

Une modification du Makefile de ‘ipw2100’ est nécessaire, il faut décommenter la ligne :
_ CONFIG_IPW2100_LEGACY_FW_LOAD=y
_ c’est d’ailleurs signalé dans l’article de David

faire :
– modprobe ipw2100

installation du paquetage Mandrake, qui ne l’était pas : wireless-tools-26-1mdk pour disposer de iwconfig, programme équivalent à ping pour le Wifi.

– iwconfig eth1
_ car la carte wifi est considérée comme ‘eth1’.

D – installer le codage WEP
_ Aller chercher la clé de codage du Linksys par Mozilla : http://192.168.1.1
_ pour activer le wep :
– iwconfig eth1 key (clé fournie).
_ Il vaut mieux éviter de faire une erreur dans la recopie de cette longue clé…

Voilà, ça marche !
_ Il faut maintenant créer un script d’activation du wifi et le faire exécuter au démarrage de la machine. Dès que j’aurai un point d’accès personnel.

NB : un changement périodique de clé est vivement recommandé car quelqu’un qui écouterait « assez longtemps » votre Wifi pourrait la craquer.
Chaque semaine semble une durée maximum, dans le cas d’une utilisation suffisamment intensive, par exemple avec l’ADSL.

Une connexion par modem pourrait se contenter d’un changement mensuel…

Comme toujours, la qualité de sécurité maximale est celle du maillon le plus faible de la chaîne.

mikhail

Créer une disquette de boot pour noyau 2.6 avec grub

Contrairement à leurs ancêtres, les noyaux 2.6 ont besoin d’un gestionnaire d’amorçage pour booter. La création d’une disquette de boot ne peut donc plus se faire au moyen d’un simple:


# cp bzImage /dev/fd0

La création d’une disquette de boot avec lilo ayant échoué, je décide de tenter ma chance avec grub.

Cet article décrit la méthode que j’ai employé pour arriver à mes fins (ce n’est certainement pas la seule méthode possible).

Je partirai du principe que grub est déjà installé sur le PC qui servira à créer la disquette boot.

Installation de grub sur une disquette

Premièrement, formatez la disquette au format ext2fs et créez-y les répertoires boot et boot/grub:


# mke2fs /dev/fd0
# mount -t ext2 /dev/fd0 /floppy
# mkdir /floppy/boot
# mkdir /floppy/boot/grub

Ensuite, on copie sur la disquette les fichiers stage1 et stage2 de grub (les fichiers *stage1_5 ne sont pas indispensables ici).

# cp /usr/lib/grub/i386-pc/stage[12] /floppy/boot/grub[[localisation des fichiers sur une Debian woody]]

Enfin, on peut passer à l’installation de grub proprement dite.


# umount /floppy
# grub
Probing devices to guess BIOS drives. This may take a long time.

GRUB version 0.91 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]

grub> root (fd0)
Filesystem type is ext2fs, using whole disk

grub> setup (fd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... no
Running "install /boot/grub/stage1 d (fd0) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded
Done.

grub> quit

Voilà, grub est installé sur la disquette, il n’y a plus qu’à le configurer.

Configuration de grub

Tout d’abord, voici comment booter un noyau qu’on aura au préalable copié sur la disquette.


# mount -t ext2 /dev/fd0 /floppy
# cp bzImage /floppy/boot

A ce stade, il n’y a plus qu’à créer un fichier: le fichier de configuration /floppy/boot/grub/menu.lst.

Le contenu suivant fera très bien l’affaire:


timeout 2
default 0
title Linux 2.6.0-test10 (disquette)
root (fd0)
kernel /boot/bzImage root=/dev/sda3

Naturellement, remplacez le /dev/sda3 par la partition root.

Grub permet également de booter un noyau qui se trouve sur un autre média.

Pour aller chercher un noyau sur le disque dur, il suffit d’ajouter au fichier menu.lst une entrée de ce style.


title Linux 2.6.0-test10 (disque dur)
root (hd0,0)
kernel /bzImage root=/dev/sda3

hd0,0 fait référence à la première partition du premier disque dur. Dans mon cas, il s’agit de /boot qui est sur une partition séparée, d’où le /bzImage.

Il ne reste plus qu’à démonter la disquette (umount /floppy) et à tester…

Conclusion

La création d’une disquette de boot avec grub reste simple. Une fois grub installé sur une disquette de 1.44 Mo, il reste plus de 1.2 Mo pour le noyau, ce qui est largement suffisant.

Grub est également d’une très grande souplesse puisque depuis une disquette, on a la possibilité d’aller chercher le noyau à booter sur un disque dur (ce qui est plus rapide si on boote sur disquette suite à un simple problème de MBR).

Noyau 2.6 sur une Debian Woody.

Je partirai du principe que le lecteur est déjà familiarisé avec la
compilation des noyaux de la famille 2.4.x « à l’ancienne ».

Bien que ce que je présente dans ce guide se soit assez bien passé pour moi, je ne peux que très vivement recommander de faire une sauvegarde complète du système avant de commencer, surtout si la configuration de la machine sort un tant soit peu de l’ordinaire.

Le noyau 2.6 est encore en béta version, et il est à craindre que les drivers de certains périphériques peu courants n’aient pas encore été beaucoups testés.

1/ La compilation.

La dernière version du noyau peut-être récupérée sur Le package update:

Si ce package est présent (dpkg -l | grep update pour vérifier), il provoquera un avertissement [[warning: process `update’ used the obsolete bdflush system call. Fix your initscripts ?]] pendant la phase d’init. Ce package est obsolète depuis la sortie du noyau 2.2.8 et peut-être supprimé.

Clients NFS:

Par défaut, /etc/init.d/nfs-common lance le démon lockd. Avec un kernel récent, c’est inutile (lockd est lancé automatiquement au montage d’un volume nfs). Avec le noyau 2.6, ça a provoqué un message d’erreur [[lockdsvc: function not implemented] »>http://www.kernel.org à l’init. Ce message est inoffensif. Pour éviter ce désagrément, il suffit de positionner la variable NEED_LOCKD à no au début du script nfs-common.

Pour s’assurer que le lancement de lockd à l’init n’est pas nécessaire, il suffit de faire un test. Si avec un nfs-common modifié un ‘ps aux’ fait apparaître une ligne [lockd »>ici après montage d’un volume nfs, ce script peut-être modifié sans risque.

Conclusion:

Il est encore un peu tôt pour que je me prononce sur ce noyau. Seul mon 486 tourne régulièrement avec le noyau 2.6 (contre toute attente, tous les drivers nécessaires à son bon fonctionnement avaient été portés).

Les résultats préliminaires sont plutôt encourageant. Le seul problème que j’ai eu à déplorer en 2 semaines d’utilisation est un freeze complet de la machine intervenu après une semaine et demie de fonctionnement continu et sans le moindre incident.

Compte tenu du caractère pour le moins exotique de la plate forme de test, ce n’est pas si mal pour un noyau qui est encore en béta version.

Comment limiter la bande passante lorsque l’on télécharge

Voici un petit utilitaire qui peut parfois dépanner. Afin d’expliquer son fonctionnement je vais prendre un exemple:

Il y a peu de temps, je me suis trouvé face à un dilemme, je devait télécharger à partir du ftp.freebsd.org les ISO de la dernière version. Jusque là rien de grave, sauf que cela faisait 3 ISOs de 650 Mo sur ma connection ADSL. De plus je n’avais pas envie de bloquer tout les autres téléchargements avec ces 3 ISOs. N’ayant jamais réussi à installer une Qos (qualité de service) décente sur ma passerelle, je me suis retrouvé confronté à un problème: Le téléchargement des ISO utilisait toute la bande passante, et mes nombreux ssh devenait inutilisables. Après 3 sec de réflexion, je me suis rappelé que j’avais vu qque part un « userland shaper » à savoir tickle. Après quelques tests, j’ai trouvé ca très pratique et j’ai donc décidé de vous le faire partager. Le principe est le suivant, trickle lance le logiciel donné en lui faisant croire que le max de bande est égale a ce que vous avez mis:

Voici qques exemples :


# force ncftp à n'utiliser que 10Ko/s max lors du téléchargement
$trickle -d 10 ncftp ftp.freebsd.org

# idem avec wget
$trickle -d 10 wget http://linuxfr.org/

Intéressant non ? 🙂

Installation du serveur imap

Introduction

Ce court tutoriel à pour but de permettre d’installer un serveur imap SSL sur une machine (typiquement une passerelle ADSL) afin de rendre les mails accèssibles de l’extérieur de manière sécurisé.

Qui n’a jamais était confronté au problème suivant:
Comment lire au boulot mes mails que j’ai récupéré à la maison ?
Comme ne pas avoir tous les mails en double ( par ex en les lisant et en les renvoyant vers une autre adresse ) ..

Une méthode consiste à accéder à vos mails sur votre machine perso via ssh + un lecteur de mail en mode texte par ex mutt. Mais cela peut poser des problèmes comme par exemple comment transféré des mails du boulot vers votre compte email perso .. etc etc.

Mais la méthode exposé ici est bcp + pratique car elle permet :
– de travailler tout le temps sur la même arborescence de messagerie
– de changer facilement de lecteur de mail (mozilla / evolution / outlock etc etc ) car les mails sont sauvegardés sur le serveur et non pas dans le client de messagerie lui même.

La solution retenue est basé sur :
– postfix
– procmail
– courier-imap-ssl

Comment ca fonctionne ?

Afin d’arriver à nos fins il faut que les mails soit récupérés des différents serveurs de mails pop chez wanadoo free … etc centraliser dans une boite à lettre commune (cette partie était faite via fetchmail / procmail ). Et ensuite configurer le serveur imap pour utiliser cette boite à lettre.

Récuperation des mails:

Pour la récupération des mails nous allons utiliser fetchmail en mode démon.

apt-get install fetchmail procmail

Sur une debian il suffit de d’éditer le fichier /etc/fetchmailrc
afin que les mails sont récupérer de manière automatique.

voici un exemple :

poll pop3.club-internet.fr protocol POP3 user monlogin password XXX is test@localhost

Les mails seront donc « poper » de chez club-internet et transmis à test@localhost. Ceci via postfix mais cela peut être fait directement ou avec un autre SMTP (exim par ex)

Regroupement des mails:

Les mails ainsi « poper » vont donc être délivré à l’utilisateur test@localhost mais il faut qu’ils soient stockés dans un répertoire particulier à savoir /home/test/Maildir (répertoire par défaut de courier-imap). Dans ce but nous allons utiliser procmail.
Poour cela il faut :
– créer le répertoire /home/test/Maildir à l’aide de la commande maildirmake /home/test/Maildir
– configurer postfix pour utiliser procmail en ajoutant la ligne
mailbox_command = procmail -a « $EXTENSION »
dans le fichier /etc/postfix/main.cf
– configurer procmail afin qu’il délivre les mails dans /home/test/Maildir à l’aide du fichier .procmailrc


MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$HOME/.from
LOCKFILE=$HOME/.lockmail

attention le / à la fin est important il stipule à procmail que la boite a lettre en question est de type ‘Maildir’ et non pas mbox comme par défaut.

Premier tests

il suffit d’envoyer un mail à l’utilisateur test@localhost via la commande « mail » afin de vérifier que le mail se trouve ensuite dans le fichier /home/test/Maildir/new/xxxxxxxxxxx.

Ensuite on teste en rajoutant le fetchmail. Une fois que cette partie la est opérationnel il suffit d’installer le serveur courier-imap-ssl (via le paquet officiel de votre distribution). Au moment de l’installation ce dernier devrait vous générer un certificat SSL et démarrer.

Lecteur de mails

Il ne reste plus qu’à configurer votre lecteur de mail afin qu’il connaisse ce nouveau compte mail. Quasiment tout les clients de mail permettent d’utiliser imap.
Pour mozilla il suffit de créer un compte mail, et type de serveur imap, login test, password le mdp de test ( surtout n’oublier pas de dire que la connection est sécurisé) et c’est fini 🙂

Astuces

Une astuce consiste aussi d’utiliser procmail pour trier les mails dans différente répertoires . Pour cela il suffit de créer ces répertoires via votre lecteur de mail et rajouter des rêgles dans le fichier .procmailrc comme par exemple


:0
* ^From.*@respyre.org
.respyre/

qui aura pour effet de stocker les mails venant de respyre.org dans le répertoire /home/test/Maildir/.respyre/new/
( Attention au .respyre en effet courier imap utilise les . comme séparateur de hierarchie, ainsi donc le répertoire News/BSD ce traduit par un répertoire en Maildir/.News.BSD/

Howto – Organisation Manif Octobre 2003

Ce qu’il faut faire :
Creer une liste de diffusion pour cette rencontre et accessoirement un site, ou une page d’annonce.
Definir la date ainsi que le nombre de jours de la manif.
Definir le type presentations (Atelier, table ronde, Conf…).
Definir les sujets abordés.
Trouver les intervenants.
Definir les sponsors.