il est maintenu
de temps en temps par adjonction de diverses notes personnelles
dernière mise.à.Jour
22 Mai 2000
---
Maurice Libes
Centre d'Océanologie de Marseille - FR6106 CNRS
[ ] accès depuis le 25/02/2001
Ce document contient les notes personnelles que j'ai prises pour installer
et paramétrer mon système Linux quand j'ai commencé avec la RedHat v4.0
(dite " Colgate ") en 1997... J'étais pas deja pionnier
.
Depuis je suis passé par les versions RH4.2 (dite "Biltmore"), puis
Redhat 5.0 (08/98) , et la Redhat (5.1) (11/98)....et 5.2 (01/99)...la 6.0 en
Décembre 99, et puis hop je me suis fait une Mandrake 7.0 pour essayer...(Avril
2000)...
Ce document n'a aucun caractère d'exhaustivité, il permet d'aborder quelques
éléments essentiels ....
Dans la majeure partie des cas, le paramétrage du systèmes lors de la post-installation
correspond au cas d'un PC utilisé à des fins " personnelles ", intégré
à un réseau de station de travail Unix. Le PC sera " client " de la
majorité des autres services Unix (dns, nis, sendmail, ftp...) préexistants
sur d'autres stations Unix de mon laboratoire.
nota: cette collection de notes n'engage que son auteur
(c'est a dire moi ) et le lecteur
peut me signaler toute erreur ou imprécision facheuse afin de faire évoluer
cette documentation.
Bien sûr il aura fallu lire auparavant le désormais célèbre Guide
du Rootard et s'être documenté à partir des différents sites
Linux sur l'Internet : Selection
de mes pointeurs Linux
Après plusieurs PC installés sous Linux, je n'ai eu que peu de problèmes de reconnaissance et fonctionnement du matériel. A mon avis le point le plus sensible dans l'installation de Linux est la reconnaissance de la carte graphique vidéo et le paramétrage du serveur vidéo (appelé serveur X).
Avant d'acheter UN PC dont on sait pertinemment qu'il va fonntionner sour Linux, il est bon de connaitre la liste des matériels compatibles et supportés par Linux! On est en droit d'etre exigent et d'aller dans un magasin (petit ou gros) où on demande, voire exige, telle ou telle marque de cartes et disque SCSI ou de carte video....
A part quelques cartes vidéo, un CD bizarre, une carte éthernet zarbi, la plupart des matériels courants du marché que j'ai essayé ont été reconnu et ont été géré par Linux sans aucun probléme:
D :\dosutils\autoboot
E:\>cd images E:\IMAGES>dir Le volume dans le lecteur E est LDR_1296_1 Le numéro de série du volume est CB71-BD2D Répertoire de E:\IMAGES . <REP> 03/12/96 10:00 . .. <REP> 06/12/96 9:12 .. BOOT IMG 1 474 560 02/12/96 16:21 BOOT.IMG SUPP IMG 1 474 560 02/12/96 16:21 SUPP.IMG TRANS TBL 92 06/12/96 9:16 TRANS.TBL 3 fichier(s) 2 949 212 octets 2 répertoire(s) 0 octets libres E:\IMAGES>rawrite Enter disk image source file name: boot.img Enter target diskette drive: a: Please insert a formatted diskette into drive A: and press -ENTER- :
Lors
de la première installation : Au boot, le noyau linux
reconnait automatiquement les périphériques (disques, cdrom,
zip) présents sur les interfaces IDE.
La séquence de boot propose de repartitionner
le disque depuis Linux par la commande fdisk (ou disk druid à partir
de la version Redhat 5.0).
Il s'agit de créer la (ou les) partition(s) disque(s) nécessaire(s) à Linux par la commande fdisk de Linux (pas la commande fdisk de DOS).
La nomenclature des disques sous Linux est différente de celle de DOS :
Le disque "maitre" sur la premiere interface IDE sera | /dev/hda |
Le disque "esclave" sur la premiere interface IDE sera | /dev/hdb |
Le disque "maitre" sur la deuxième interface IDE sera | /dev/hdc |
Le disque "esclave" sur la deuxième interface IDE sera | /dev/hdd |
Device Boot Begin
Start End Blocks
Id System
/dev/hda1 *
5 5
430 858816 6
DOS 16-bit >=32M
/dev/hda2
431 431
447 34272 82 Linux swap
/dev/hda3
448 448
788 687456 83 Linux native
L'install formate automatiquement la partition de swap /dev/hda2 , puis la partition /dev/hda3 avant d'installer touts les programmes systèmes proprement dits!
Imaginons qu'on veuille installer Linux sur la 3ème partition (E:) et en créer une nouvelle pour le swap. Il faut alors avec fdisk:
Je
veux booter ...mais....je n'y arrive pas! ca merde et je m'angoisse
on s'en tirera dans 95% des cas en mettant l'option "linear"
dans le fichier de conf de lilo: /etc/lilo.conf
cette option permet de s'affranchir de la géométrie du disque (CHS) (cylinder/head/sector)
en faisant un adressage linéaire du disque...
Quelques
messages d'erreur au boot
can t find module net-pf-4
- Si au demarrage de linux on a les messages d'erreur suivant:
can t find module net-pf-5Ces messages surviennent lorsqu'on a désactivé (pas compilé) les modules correspondant à la gestion du protocole IPX et Appletalk. Pour indiquer au noyau de ne pas prendre en compte ces modules il faut les désactiver dans le fichier /etc/conf.modules
alias net-pf-4 off
alias net-pf-5 off
Booter
Linux avec Windows NT déjà installé
C'est expliqué dans le Howto http://www.freenix.org/unix/linux/HOWTO/mini/Linux+NT-Loader.html
Je résume en 2 mots
pour les très grands feignants...Attention Windows NT possède son propre
loader qu'il écrit aussi sur le MBR... Donc si on installe Linux après Windows
, au moment du choix de l'emplacement de l'écriture de LILO il ne faut pas
choisir d'installer LILO sur le MBR... sinon on va écraser le loader de
NT et on sera bien embété et très malheureux après! rapport qu'on pourra
plus beaucoup booter sur NT
eton va dire beaucoup de mal!
Donc au moment de l'écriture
de LILO dans l'installation, il est préférable voire indispensable
d'écrire LILO sur la partition racine de Linux /
(qui correspond par exemple a /dev/hda6)
LILO étant écrit au début de cette partition racine de Linux , on va user d'un subterfuge pour le faire lancer par le loader de NT
On va copier une image de ce qu'a écrit LILO sur la partition racine "/", dans un fichier que je vais appeler parexemple "secteurdeboot.linux"
et on rebroute sur WindaubeNT... là on édite le fichier C:\boot.ini
(après avoir enlevé ces protection en lecture seule )
et on écrit une ligne supplémentaire dans le fichier boot.ini
Déplacer
Linux sur un second disque (sans réinstaller)
Je veux rajouter un second disque IDE sur la seconde interface IDE du PC sur lequel je veux faire une copie conforme du système linux présent sur le premier disque
En sortant de fdisk ne pas oublier de faire "w" pour ecrire
la table de partitionnement sur le disque...
$ mke2fs /dev/hdc2
$ mkswap /dev/hdc1
$ swapon -a(mais cette dernière commande n'est pas obligatoire, elle est en fait lancée automatiquement au boot de la machine par /etc/rc.d/rc.sysinit
Ces 2 fichiers sont nécessaires et suffisants : /etc/lilo.conf et /etc/fstab
#rajout pour nouveau noyau du second disque dans /etc/lilo.conf
$ /sbin/liloOn a lors un nouveau noyau sur un nouveau disque, sur lequel on peut booter en tapant le label "linux2" au prompt de Lilo .
Il peut etre nécessaire de recompiler le noyau linux pour diverses raisons...une
des raisons essentielles peut etre de :
- personnaliser son "noyau" pour faire prendre en compte un nouveau
matériel disponible sur son PC (par exemple j'ai du rajouter la prise en compte
des pilotes scsi pour un lecteur Zip/Iomega) , ou a contrario ne pas
faire prendre en compte par le noyau des matériels non disponibles (dans mon
cas j'ai par exemple enleveé les pilotes pour disques raid): inutile
La documentation de base pour cette opération est dans le Kernel-HOWTO
les étapes essentielles pour recompiler le noyau est d'aller dans /usr/src/linux
vérifier que les sources du système sont bien présente!!! (sinon c'est
qu'on a oublié d'installer les sources du noyau à l'installation de la machine!!)...
il est nécessaire d'aller dans le répertoire /usr/src et d'y
trouver un répertoire linux qui pointe eventuellement vers un répertoire qui
a pour nom le numéro de versin du système
ex:
-Si les "sources" du système sont absents, il faut :
ftp://ftp.jussieu.fr/pub/linux/kernel/sources/v2.2/(par exemple)
-sinon 2ème solution d'installation, avec le cdrom de la RedHat , installer les rpm des sources du kernel qui doivent se trouver dans le repertoire SRPMS/kernel* du cd
Le désarchivage du .tar.gz ou bien l'instalaltion des fichiers rpm devrait produire un répertoire dans /usr/src ayant pour nom le numéro du système(ex: /usr/src/linux-2.0.36)
le message d'erreur est : " Internal compilation error".
Ce problèmes est décrit et commenté sur
http://www.linux-france.org/article/fcol-faq/
Sur ma machine qui a un processeur Cyrix, il semble que
le problème provienne du processeur Cyrix , ca vient de là. Il suffit
juste de mettre à jour le compilateur cc version 2.7.2-9
pour régler le problème!
par exemple..........
Après avoir déplacé /usr/src/linux/System.map vers /boot/System.map, la liste des fonctions définies pour les modules est donc adaptée au nouveau noyau mais les modules trouvables dans /lib/modules/2.0.30/sont les anciens correspondant au noyau précédent! Ils risquent d'etre trop nombreux par rapport à la version précédente, si lors de la recompilation du nouveau noyau, on a demandé moins de modules que le nombre pre-installe).
On
peut alors déplacer /lib/modules/2.0.30 en /lib/modules/2.0.30.old (par
exemple) et refaire un 'make modules; make modules_install'. On
aura un nouveau /lib/modules/2.0.30/ avec les seuls modules déclarés
pour le nouveau noyau,
donc dans le System.map, et lors du test des dépendances
de modules au boot, le noyau ne trouvera plus de fichiers .o sous modules/2.0.30/
avec des fonctions non déclarées.
J'ai acheté une carte Adaptec AVA1505 (parfois appelée Zip Zoom card) juste pour connecter un lecteur Zip Iomega...
En 2 mots : il faut faire prendre en compte le support SCSI dans le noyau Linux. Lors de la génération des Makefile (make Xconfig)
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
J'ai installé 2 cartes son est une DCS S611/S611L Sound Card, 100% compatible
Sound Blaster , et une SoundBlaster AWS64...
De toute facon avant d'achter une carte Son, il est préférable de s'assurer
si la carte son est supportée par le noyau Linux, dans
/usr/src/linux-2.0.30/drivers/sound/Readme.card ou bien sur le
Sound-HowTo
Bien relever les caractéristiques physiques de la carte SON sur la doc (au besoin les vérifier sous DOS ou Windows), notamment:
Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-401
Card config:
Sound Blaster at 0x220 irq 5 drq 1,5
(SB MPU-401 irq 1 drq 0)
OPL-2/OPL-3 FM at 0x388 drq 0
Je vais pas tout réécrire ;-) le mieux est de lire cela : http://www.freenix.fr/unix/linux/Guide/Guide_Rootard-7.html#ss7.13
que l'on peut lancer par le systeme de script dedémarrage
du système
Pour que votre PC soit client d'un service de temps,
il faut paramétrer le fichier /etc/ntp.conf
Je prend le cas simple dans lequel il existe un serveur
de temps sur votre réseau local éthernet., et que ce serveur diffuse
son heure par broadcast sur le réseau éthernet
Dans ce cas le fichier ntp.conf du PC client contiendra
simplement
L'emplacement par défaut du serveur X est /etc/X11. On voit qu'apres l'instalataion il pointe sur /usr/X11R6/bin/XF86_SVGA
- Il peut arriver que le serveur X fonctionne lorsque'on est root, et pas lorsqu'on est un utilisateur "lamda". Pour cela, vérifier que le serveur X peut etre lancé par n'importe quel utilisateur. Le programme X devrait avoir le suid root. Pour le mettre :
.
/usr/sbin/loadkeys /usr/lib/kbd/keytables/fr-latin1.mapcette commande est lancée au boot dans /etc/rc.d/rc3.d/S75keytable
Pour obtenir les lettres accentuées de l'aphabet iso-8859-1
set convert-meta off set output-meta on set meta-flag on set show-all-if-ambiguous
Pour cette partie Xkb, certains préfèrent :
XkbKeymap "xfree86(fr)"
XkbKeycodes "xfree86"
XkbSymbols
"en_US(pc101)+french"
XkbGeometry "pc(pc101)"
##PRINTTOOL1## REMOTE
lp1|deskjet:\
<== nom local de l'imprimante (coté linux)
:sd=/var/spool/lpd/lp1:\
<== zone de spool local pour cette imprimante
:mx#0:\
<== maximum file size [0=illimité]
:rm=lpserv.com.univ-plm.fr:\
<== remote machine qui gère l'imprimante
:rp=deskjet:
<== nom de l'imprimante Unix sur la machine distante
##PRINTTOOL1## REMOTE
lp|laser4m:\
:sd=/var/spool/lpd/lp:\
:mx#0:\
:rm=lpserv.com.univ-plm.fr:\
:rp=laser4m:
Dans ce cas, nul besoin de filtre de conversion de données en postscript, et pas de besoin de passer par une machine serveur d'imprimante: l'imprimante gère seule le spool des données qu'on lui envoie a imprimer. Dans ce cas avec l'utilitaire "printtool" choisir "File Unix Distante (lpd)"
Si le nom réseau IP de l'imprimante est "imprr5".univ-mrs.fr, alors le paramétrage de /etc/printcap serait:
lp|laserlum5eme:\
:lp=/dev/null:sh:\
<=== nom du device d'impression local (/dev/lp normalement)
:sd=/var/spool/lpd/lp:\
<=== zone de spool locale pour cette imprimante
:mx#0:\
:rm=imprr5.univ-mrs.fr:
rp=imprr5.univ-mrs.fr::
<== nom reseau IP de la machine distante gérant son spool
:if=/var/spool/lpd/lp/filter:
<=== filtre éventuel de conversion des données
En revanche lorsqu'on veut imprimer du postscript ou à partir d'application comme lyx, Applix ou netscape, les petites imprimantes du commerce n'ont pas d'interpreteur postscript. Il faut alors passer par des filtres d'impressions qui seront mentionnés dans la ligne "if" du fichier /etc/printcap
exemple: :if=/var/spool/lpd/lp/canon-filter.pl: <=== filtre éventuel de conversion des données
La plupart
du temps ces filtres utilisent l'interpréteur de postscript "ghostscript"
(commande gs) qui possède lui meme des pilotes d'impression propres à
certaines imprimantes!
on peut tester simplement une impression d'un fichier
postscript sur une imprimante non postscript par
$cat monfichier.ps | gs -sDEVICE=bjc600
-q -dSAFER -dNOPAUSE -sOutputFile=- - > /dev/lp1
Pour ma
Canon bjc240 j'ai utilisé une petite application qui fonctionne bien http://patriot.net/~butera/xbubblejet.html
Un cdrom ATAPI/IDE branché en esclave sur la premiere interface IDE aura comme nom de device Linux /dev/hdb Un cdrom ATAPI/IDE branché en esclave sur la deuxieme interface IDE aura comme nom de device Linux /dev/hdd
- primary master /dev/hda ,
- slave master /dev/hdb,
- secondary master /dev/hdc,
- secondary slave /dev/hdd)
J'ai eu un cas de figure où le CDROM n'était pas reconnu au boot. Dans ce cas, il est nécessaire de forcer la reconnaissance du lecteur de CD en indiquant au noyau en paramétre de lancement l'interface sur laquelle se trouve le lecteur...comme suit
Bien sur on peut utiliser sans problème les utilitaire RedHat de configuration
du réseau comme
/usr/bin/netcfg ... mais on sait pas trop ce que ca fait
et ou ca le fait ?...et puis netcfg fonctionne sous Xwindows... alors que
faire si on doit configurer les paramètres réseau sur un Linux Redhat sur
une console alphanumérique? Ah! hein?
une fois ces fichiers configurés, on peut lancer le script "ifup"
installation
ou changement de carte éthernet (3c509, 3C590 XL PCI)
Ma carte éthernet a rendu
l'ame... je dois la changer à chaud! qu'est ce que je fais-je?
voir si la nouvelle carte éthernet en question possède un driver sous
Linux en lisant soit le Ethernet-Howto,
soit en allant chercher dans /lib/modules/2.0.30/net/ si il y a un
module objet .o correspondant à la carte à installer.... exemple 3c59x.o
Les sources peuvent etre trouvés dans /usr/src/linux/drivers/net
...on peut recompiler le module à partir de là aussi...
Enfin, la bonne page pour ce thème est là !!! :
Lire le NFS HowtTO http://www.freenix.fr/unix/linux/HOWTO/NFS-HOWTO.html
ainsi que quelques pages de manuel concvernant les principales
commandes de NFS : portmap, mountd, nfsd et exports.
En 2 mots:
1. sur les machines hôtes (celles qui ont le disque à monter) , il faut autoriser les machines extérieures (les clients Linux par exemple) à monter une partition disque du serveur NFS
2. sur la machine cliente (pc linux) il faut dire quelles sont les partitions que l'on veut monter.
## autorise le client compc21 à monter le cdrom
du serveur
/mnt/cdrom
compc21.com.univ-mrs.fr(ro)
En gros
cela signifie que si le super utilisateur "root" d'une station
A monte un disque d'une station B , il peut se retrouver "root"
sur le disque montéde cette station. Cela peut etre dangereux et
à éviter dans certainess circonstances. Pour invalider ce comprtement,
on peut se servir de l'option "no_root_squash."
L'option "no_root_squash." permet d'indiquer
au serveur NFS que
exemple:
le PC compc58 pourra monter la ressources disque /sav/kickstart. Mais
si l'utilisateur qui le monte est "root", cet utilisateur
"root" du PC client compc58 ne sera pas "root" sur
le disque monté!
##
/sav/kickstart compc58.com.univ-mrs.fr(rw,no_root_squash)
0. Lire le NIS(YP) HowTo....
$ cat /etc/yp.conf ypserver <adresse_IP_du_serveur_NIS_pour_le_domaine_considere> (dans ce cas on force l'adresse du serveur)
$ cat /etc/yp.conf domain <nom_du_domaine_NIS> server <adresse_IP_du_serveur_NIS >ou
$ cat /etc/yp.conf domain <nom_du_domaine_NIS> broadcast
+ :* :0 :0 : : : si on veut récuperer toutes les entrées du fichier passwd central
à la fin
du fichier passwd ... pour indiquer que les noms de login doivent être
obtenus depuis la map "passwd" du serveur NIS. Pour vérifier
l'accès et la récupération de la map passwd du serveur NIS , lancer
+libes:
: : :moi sur mon pc linux:/home/libes:/bin/bash
On souhaite
définit le nom de domaine réseau qui " masquera " la machine depuis laquelle on écrit un mail.
exemple : si mon domaine est com.univ-mrs.fr et que j'écrit de la machine
m1.com.univ-mrs.fr, a l'émission le champ From : du mail sera labellé avec com.univ-mrs.fr au lieu de m1. m1.com.univ-mrs.fr
DH com.univ-mrs.fr
définit le nom IP du serveur de messagerie pour le
domaine en question... ainsi un mail adressé à compc32.com.univ-mrs.fr
aboutira sur le serveur de messagerie du domaine "com.univ-mrs.fr",
c'est à dire sur la machine "M" pointée par le MX record du
DNS du domaine "com.univ-mrs.fr"
Pour éviter ce blocage, il faut dire a linux qu'il va obtenir l'adresse IP de la machine, d'abord dans un fichier (/etc/hosts) et ensuite par le système DNS (bind)
Pour cela :
- editer le fichier /etc/hosts.conf et inscrire les lignes (dans le fichier /etc/hosts.conf)
Le fichier /etc/crontab est responsable du lancement des
fichiers qui setrouvent dans : /etc/cron.daily
/etc/cron.hourly /etc/cron.monthly /etc/cron.weekly
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Il est Inutile de relancer le daemon cron si on a changé un
fichier de paramètre (/var/spool/cron ou /etc/cron) car la daemon vérifie
dynamiquement si quelques chose a changé dans les répertoires concernés
### Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#id:3:initdefault: <-- 3
Pour un niveau
de démarrage donné, afin de lancer ou ne pas lancer certains daemons au démarrage
il suffit de mettre ou d'enlever les scripts se trouvant dans le répertoire
de lancement du niveau choisi.
exemple : pour ne pas démarrer en niveau 3 le serveur NIS , il suffit d'invalider le script /etc/rc3.d/S65ypserv , simplement en renommant S65ypserv en K65ypserv
Dans mon cas personnel à moi ;-)) mon , ayant choisi que mon
PC soit esclave de la plupart des services internet existant dans mon labo,
j'ai choisi de "ne pas" lancer les daemons suivants
(vous n'etes pas obligés de fairepareil) :
Ceci n'est peut être pas suffisant...il arrive que " root " ne puisse pas se rloguer ou faire des remote commande (comme rsh) depuis une autre machine. Ceci peut etre dû au système de sécurité de /etc/securetty visant à n'autoriser des connexions que depuis un terminal " sûr ". On veut parfois sécuriser les accès depuis une console authentifiée.
Cette action est gérée par les programmes pam (Pluggable Authentification Module) dont les fichier s de configuration se trouvent dans /etc/pam.d . On trouve des modules PAM pour différents types d'actions
Pour invalider
cette sécurité de tty sécurisé, et s'appuyer sur la présence de ~/.rhosts
, il faut commenter la ligne suivante dans le fichier /etc/pam.d/rlogin
$ more /etc/pam.d/rloginLa commande /sbin/pamconfig permet de paramétrer ce fichier. (moi je préfére aller voir ce qui se passe dans les fihciers concernés).
auth required /lib/security/pam_securetty.so
auth sufficient /lib/security/pam_rhosts_auth.so
On peut aussi mettre IPIP en module, mais dans ce cas il ne faudra ps oublier de charger le module dans le noyau par
pruning on