existent. Voici un fichier de configuration de base : ;; ;; Fichier .emacs: initialisation d'emacs ;; Fichier de base : Guide du Rootard ;; (display-time) ;; Pour avoir l'heure dans la barre d'etat (setq display-time-24hr-format t) ;; Format 24 heures ;; Nouveaux modes (autoload 'c++-mode "cplus-md" "C++ Editing Mode" t) (autoload 'perl-mode "perl-mode" "Perl Editing Mode" t) (autoload 'c-mode "c-mode" "C Editing Mode" t) ; mieux vaudrait utiliser le "cc-mode" ;; Auto-Mode Settings : positionne le mode selon l'extension (setq auto-mode-alist (append '(("\.c$" . c-mode) ;; utilise le mode C++ meme pour C ("\.h$" . c-mode) ("\.C$" . c++-mode) ("\.H$" . c++-mode) ("\.cc$" . c++-mode) ("\.C$" . c++-mode) ("\.pl$" . perl-mode) ;; Perl ("/tmp/snd\.[0-9]*" . text-mode);; Text (pour le mail) ("[Rr][Ee][0-9]*" . text-mode) ("\.ada$" . ada-mode) ;; Ada ("\.spec$" . ada-mode) ("\.body$" . ada-mode)) auto-mode-alist)) # Remapes varies (global-set-key "\eg" 'goto-line) ;; ESC G = Goto line (global-set-key "\eo" 'overwrite-mode) (put 'eval-expression 'disabled nil) ;; Accents... (standard-display-european 1) (load-library "iso-syntax") ;; Sous X-Window, textes en couleurs (C/C++/Shell/Makefile,etc) (cond (window-system (setq hilit-mode-enable-list '(not text-mode) hilit-background-mode 'light hilit-inhibit-hooks nil hilit-inhibit-rebinding nil) (require 'hilit19) )) (if (not (equal window-system "")) (global-set-key "\C-?" 'delete-char)) )) ;; mieux vaudrait employer font-lock Ce fichier peut �tre largement am�lior�. Pour en savoir plus, consulter la documentation d'Emacs (appuyer sur control-H puis i), qui est bien faite mais un peu grosse. Remarque : il est possible d'ajouter les lignes suivantes pour pouvoir se servir des accents lors de l'�dition de fichiers en mode texte : (set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0) 1#16#6.#.1#12#2.#. V#Ve#er#rr#ro#ou#ui#il#ll#la#ag#ge#e d#de#es#s p#po#or#rt#ts#s s#s�#�r#ri#ie#e L'utilisation des ports s�rie pose un probl�me de verrouillage : il ne faut pas que deux processus concurrents acc�dent � un port s�rie donn� en m�me temps. Mais d'autre part, si on a un port s�rie sur lequel tourne un getty pour traiter des appels entrants, on voudrait bien quand m�me pouvoir utiliser le port s�rie pour passer des appels sortants. Pour r�soudre ce probl�me, il y a deux approches. La premi�re, c'est le verrouillage par le noyau. Elle utilise deux p�riph�riques diff�rents pour acc�der � un port s�rie : /dev/ttySn pour les appels entrants (via getty), et /dev/cuan pour les appels sortants. Quand getty tente d'ouvrir /dev/ttySn, il est bloqu� jusqu'� ce qu'un appel entrant soit re�u et que le modem le signale par la ligne DCD du port s�rie. Tant que getty est bloqu� dans l'appel syst�me open, on peut encore utiliser le p�riph�rique /dev/cuan pour les appels sortants (�videmment, getty reste bloqu� lorque DCD est activ�e pour l'appel sortant...) D'autre part, une fois que /dev/cuan est ouvert, un processus d'une autre session ne peut pas l'ouvrir (si le syst�me est correctement configur� -- voir l'option session_lockout de setserial(8).) Cela �vite que deux processus tentant ind�pendamment de passer un appel sortant se trouvent � �crire simultan�ment sur le port s�rie. La seconde technique est celle des "lock-files" (fichiers-verrous). Elle consiste, pour chaque processus qui utilise un port s�rie, � �crire son PID dans un fichier sp�cial. De cette fa�on, quand un autre process veut utiliser le m�me port s�rie, il v�rifie la pr�sence de ce fichier, le trouve, lit le PID qui y est �crit, v�rifie que le processus correspondant existe, et sait donc que le port s�rie est occup� et qu'il ne peut pas l'utiliser. Dans ce cas, on n'utilise que les /dev/cuan. Chacune des deux approches a ses avantages et ses inconv�nients. La m�thode de verrouillage par le noyau n�cessite d'employer un modem en mode auto-r�ponse, et autorise l'ouverture du port s�rie par un processus qui veut passer un appel sortant entre le moment o� le t�l�phone sonne et le moment o� les modems ont fini de n�gocier (ce qui peut prendre une dizaine de secondes.) La m�thode des lock-files n�cessite une configuration homog�ne des logiciels utilis�s (tous les logiciels doivent chercher et mettre le lock-file au m�me endroit, s'entendre sur le format du PID qui y est inscrit...) Elle n�cessite aussi que getty v�rifie p�riodiquement l'existence du lock-file, et il peut donc "rater" un appel entrant entre le moment o� un processus lib�re le port s�rie et celui o� il v�rifie � nouveau la pr�sence du lock-file. Il est aussi possible qu'un processus sortant arrive � cr�er le lock-file entre le moment o� getty d�tecte un appel et celui o� il cr�e le lock-file pour cet appel. Le choix d'une m�thode est, finalement, une d�cision individuelle de chaque administrateur, sachant que l'approche "lock-file" est plus souple, mais moins �l�gante et plus d�licate � mettre en oeuvre que le verrouillage par le noyau. 1#16#6.#.1#13#3.#. M#Mi#in#ni#it#te#el#l Il est fort agr�able de pouvoir se connecter sur le Minitel. R�cup�rez le programme xtel de Pierre Ficheux. Il s'agit d'un �mulateur Minitel achtement cool � utiliser. Vous pouvez le trouver sur ftp.lip6.fr dans le r�pertoire /pub/X11/videotext/xtel. 1#16#6.#.1#14#4.#. F#Fa#ax#x Envoyer des documents par FAX est tout � fait possible. Pour cela, utilisez par exemple _#H_#y_#l_#a_#f_#a_#x. Il se trouve sur le site ftp.funet.fi dans le r�pertoire /pub/mirrors/sgi.com/sgi/fax/source. 1#16#6.#.1#15#5.#. M#Mo#od#du#ul#le#es#s C#Ch#ha#ar#rg#ge#ea#ab#bl#le#es#s Cette partie s'inspire all�grement de l'article que j'ai �crit dans le journal "Les �chos de Linux", au mois de Juillet 96. 1#16#6.#.1#15#5.#.1#1.#. S#St#tr#ru#uc#ct#tu#ur#re#e d#du#u n#no#oy#ya#au#u Le noyau d'un syst�me Unix peut �tre repr�sent� sous la forme d'un objet monolithique. Toutefois, un tel objet poss�de l'inconv�nient d'�tre gros et statique. A chaque fois que l'on d�sire rajouter un nouveau p�riph�rique, il est n�cessaire de recompiler le noyau. De plus, si l'on n'utilise certains gestionnaires particuliers que rarement, on est oblig� de l'avoir dans le noyau, ce qui a tendance � consommer de la m�moire. 1#16#6.#.1#15#5.#.2#2.#. Q#Qu#u'#'e#es#st#t-#-c#ce#e q#qu#u'#'u#un#n m#mo#od#du#ul#le#e c#ch#ha#ar#rg#ge#ea#ab#bl#le#e ?#? Les modules chargeables permettent de joindre l'utile � l'agr�able en ayant un noyau le plus petit que possible, chargeant � la demande ce dont il a besoin, soit d'une mani�re manuelle par le super utilisateur de la machine, soit d'une mani�re automatique. De cette mani�re, le gain de ressources est non n�gligeable. La premi�re question que l'on peut se poser, c'est : " Pourquoi deux techniques de chargement ?" La premi�re technique est manuelle : il faut charger ou d�charger les modules � la main. La deuxi�me est automatique, gr�ce � l'utilisation d'un d�mon sp�cialis� qui est l'esclave du noyau et qui charge et d�charge les modules pour lui. En fait, la version 1.2 de Linux n'offrait que la possibilit� d'un chargement manuel qui est limit� au super-utilisateur de la machine et qui est assez lourd � manipuler. Au fil du d�veloppement de la version 2.0, un nouveau syst�me impl�ment� par Bjorn Ekwall permit d'effectuer un chargement dynamique et automatique des modules. 1#16#6.#.1#15#5.#.3#3.#. C#Co#om#mp#pi#il#la#at#ti#io#on#n d#du#u n#no#oy#ya#au#u Lors de la compilation du noyau, il est n�cessaire de sp�cifier des options particuli�res pour activer l'utilisation des modules chargeables : ______________________________________________________________________ gandalf# make config * * Loadable module support * Enable loadable module support (CONFIG_MODULES) [Y/n/?] Set version information on all symbols for modules (CONFIG_MODVERSIONS) [N/y/?] Kernel daemon support (e.g. autoload of modules) (CONFIG_KERNELD) [Y/n/?] ______________________________________________________________________ Voici le d�tail de ces trois options : � CONFIG_MODULES : active le m�canisme de modules chargeab les. Sans cette option, ils ne fonctionneront pas sur votre syst�me. � CONFIG_MODVERSIONS : si vous laissez cette option � N (par d�faut), vous devrez recompiler les modules � chaque mise � jour du noyau de la machine. Cela signifie que des modules compil�s pour un noyau 2.0.n ne fonctionneront pas avec un module compil� pour 2.0.n+1. Si vous activez cette option, les modules pourront �tre lanc�s... Cette option est particuli�rement int�ressante dans le cas de modules externes au noyau livr�s sous forme binaire (ils sont accompagn�s d'un patch � appliquer sur les sources du noyau). Il est fortement d�conseill� de l'utiliser dans le cadre de modules int�gr�s au noyau (il est plus simple de les recompiler et de les installer que d'aller regarder si les anciens modules sont compatibles avec les nouveaux). � CONFIG_KERNELD : cette option active le chargement automatique des modules. Vous devez �galement activer les IPC Syst�me V car le noyau et le d�mon communiquent via des files de messages. Une fois configur�, il vous suffit de lancer la compilation ainsi que l'installation : ______________________________________________________________________ gandalf# make dep ; make clean gandalf# make zImage gandalf# make modules ; make modules_install ______________________________________________________________________ Une fois ces op�rations effectu�es, les modules se trouvent alors dans le r�pertoire /lib/modules/x.y.z o� x.y.z correspond au num�ro de version du noyau. Il ne nous reste plus qu'� voir le chargement. Note importante : tous les outils de manipulation des modules se trouvent dans modules-2.0.0.tar.gz situ� dans le r�pertoire v2.0. Ils sont install�s par d�faut avec les distributions standards, mais il est important d'utiliser la bonne version. 1#16#6.#.1#15#5.#.4#4.#. C#Ch#ha#ar#rg#ge#em#me#en#nt#t :#: m#m�#�t#th#ho#od#de#e m#ma#an#nu#ue#el#ll#le#e Le chargement manuel est bas� sur trois commandes : � insmod : ins�re un module dans le noyau ; � rmmod : d�charge un module, si plus aucun processus ne l'utilise ; � lsmod : affiche la liste des modules charg�s. Leur utilisation oblige d'�tre en super-utilisateur. Voici un exemple d'utilisation : ______________________________________________________________________ gandalf# insmod nfs.o gandalf# lsmod Module: #pages: Used by: nfs 12 4 gandalf# mount -t nfs /truc /mnt gandalf# lsmod Module: #pages: Used by: nfs 12 5 gandalf# cd /mnt ... gandalf# cd / gandalf# umount /mnt Module: #pages: Used by: nfs 12 4 gandalf# ps axu | grep nfs root 5535 0.0 0.0 0 0 q2 SW 17:15 0:00 (nfsiod) root 5536 0.0 0.0 0 0 q2 SW 17:15 0:00 (nfsiod) root 5537 0.0 0.0 0 0 q2 SW 17:15 0:00 (nfsiod) root 5538 0.0 0.0 0 0 q2 SW 17:15 0:00 (nfsiod) root 5557 0.0 0.4 864 300 q2 S 17:16 0:00 grep nfs gandalf# kill -9 5535 5536 5537 5538 gandalf# lsmod gandalf# rmmod nfs.o ______________________________________________________________________ Il est n�cessaire de "tuer" les 4 d�mons nfsiod car ils sont lanc�s d�s que NFS est activ�. Comme vous pouvez le voir, ces op�rations deviennent relativement p�nibles. C'est pour cette raison que le syst�me de chargement automatique a �t� cr��. 1#16#6.#.1#15#5.#.5#5.#. C#Ch#ha#ar#rg#ge#em#me#en#nt#t a#au#ut#to#om#ma#at#ti#iq#qu#ue#e :#: k#ke#er#rn#ne#el#ld#d 1#16#6.#.1#15#5.#.5#5.#.1#1.#. A#Av#ve#er#rt#ti#is#ss#se#em#me#en#nt#t La gestion des modules a �t� modifi�e dans la s�rie 2.1.x et kerneld a �t� supprim�. Ceci n'est donc valable que pour les noyaux 2.0.x. 1#16#6.#.1#15#5.#.5#5.#.2#2.#. I#In#nt#tr#ro#od#du#uc#ct#ti#io#on#n Le syst�me de chargement automatique de modules permet de r�duire au minimum la taille de son noyau. Le principe de fonctionnement est particuli�rement simple : un d�mon en mode utilisateur est � l'�coute des ordres du noyau (via une file de messages de type IPC Syst�me V). Lorsque un processus essaye d'acc�der � une ressource syst�me (via un appel syst�me open, etc...), le noyau envoie l'ordre de chargement du module � kerneld. Une fois le message re�u, kerneld ex�cute modprobe pour charger les modules n�cessaires. 1#16#6.#.1#15#5.#.5#5.#.3#3.#. C#Co#on#ns#se#ei#il#ls#s p#po#ou#ur#r l#la#a c#co#om#mp#pi#il#la#at#ti#io#on#n d#du#u n#no#oy#ya#au#u Par contre, lors de la compilation du noyau, il est n�cessaire d'y mettre au moins le support pour permettre l'amor�age de la machine et le montage de la racine de votre syst�me de fichiers (par exemple, support IDE + ext2fs). Vous pouvez y mettre tout le reste en module (carte son, syst�mes de fichiers, carte SCSI, etc). 1#16#6.#.1#15#5.#.5#5.#.4#4.#. M#Mi#is#se#e e#en#n p#pl#la#ac#ce#e C#Ce#et#tt#te#e p#pa#ar#rt#ti#ie#e d#de#e m#mo#od#di#if#fi#ic#ca#at#ti#io#on#n n#n'#'e#es#st#t v#va#al#la#ab#bl#le#e q#qu#ue#e s#si#i l#la#a m#ma#ac#ch#hi#in#ne#e n#n'#'�#�t#ta#ai#it#t p#pa#as#s p#po#ou#ur#rv#vu#ue#e d#de#e kerneld. Les nouvelles distributions effectuent une installation tout � fait correcte. Pour r�aliser la mise en place du syst�me de chargement de modules, il est n�cessaire d'effectuer certaines modifications au niveau de votre configuration. En effet, il est n�cessaire lors de l'amor�age de la machine de lancer le d�mon kerneld et de r�aliser une esp�ce de liste des d�pendances des modules : certains modules ne peuvent �tre lanc�s avant que d'autres ne le soient. Dans un premier temps, il faut cr�er le fichier /etc/rc.d/rc.modules dans lequel, il faut mettre : ______________________________________________________________________ # Modules # # Creation d'un lien logique pour le noyau courant # # /bin/rm -f /lib/modules/current ln -sf /lib/modules/`uname -r` /lib/modules/current # # Creation des dependances if [ ! -r /lib/modules/current/modules.dep ] then echo "Creating module dependencies" /sbin/depmod -a fi # # Chargement des modules d'amor�age... # if [ -x /sbin/kerneld ] then if find /lib/modules/boot -type f -o type l > /dev/null 2>&1 then echo "Loading boot-time modules" /sbin/modprobe -a -t boot \* fi else echo "Loading modules" /sbin/modprobe -a \* fi # # Si vous poss�dez d'autres types de d�mons kerneld � lancer... # if [ -x /sbin/kdsound ] then echo "Starting sound daemon" /sbin/kdsound & fi ______________________________________________________________________ Cela permet de g�n�rer la d�pendance de vos modules � chaque fois que vous amorcez votre machine. Ensuite, dans le fichier /etc/rd.d/rc.S (peut d�pendre de la distribution...), il convient d'ajouter : ______________________________________________________________________ # Start update. /sbin/update & # *** A AJOUTER *** # Lancement de kerneld le plus t�t possible, de telle mani�re # que les modules de syst�mes de fichiers puissent �tre charg�s if [ -x /sbin/kerneld ] then echo "kerneld running" /sbin/kerneld fi ... # Un peu de m�nage cat /dev/null > /var/adm/utmp # Lancement du script des modules if [ -f /etc/rc.d/rc.modules ]; then /etc/rc.d/rc.modules fi ______________________________________________________________________ Une fois ces modifications effectu�es et la machine r�amorc�e, tout doit �tre en place. Si kerneld permet de charger automatiquement les modules, il permet �galement de les d�charger au bout d'un certain temps de non utilisation. Par d�faut, si aucun processus n'acc�de au module pendant plus de 60 secondes, il est automatiquement d�charg�. Il est possible de modifier cette valeur en rajoutant le param�tre delay=Nb_Secondes � kerneld o� Nb_Secondes est le d�lai en nombre de secondes. 1#16#6.#.1#15#5.#.5#5.#.5#5.#. L#Le#e f#fi#ic#ch#hi#ie#er#r /#/e#et#tc#c/#/c#co#on#nf#f.#.m#mo#od#du#ul#le#es#s Il peut arriver qu'il soit n�cessaire de configurer un dernier fichier : le fichier /etc/conf.modules. Ce fichier contient les chemins o� se trouvent les modules devant �tre charg�s et ensuite des alias pour les modules. Si vous n'avez pas ce fichier, vous pouvez le cr�er avec : ______________________________________________________________________ gandalf# /sbin/modprobe -c | grep -v '^path' >/etc/conf.modules ______________________________________________________________________ Il peut arriver que lors du premier amor�age vous obteniez ce message : Cannot locate module for net-pf-3 Cannot locate module for net-pf-4 Cannot locate module for net-pf-5 Pas de panique ! Ce message n'est pas m�chant et pour ne plus l'avoir, ajouter les lignes suivantes dans le fichier /etc/conf.modules : ______________________________________________________________________ alias net-pf-3 off alias net-pf-4 off alias net-pf-5 off ______________________________________________________________________ Il peut arriver que certains p�riph�riques aient besoin de certains param�tres particulier. Consultez le document Kernel HowTo. 1#16#6.#.1#15#5.#.5#5.#.6#6.#. Q#Qu#ue#el#lq#qu#ue#es#s r#r�#�f#f�#�r#re#en#nc#ce#es#s Vous pouvez consulter ces r�f�rences pour plus d'information : �