__    __    ___    __    __    __    __
              |  |  |  |  |   \  |  |  |  |  |  |  |  |
              |  |  |  |  |    \ |  |  |  |  |   \/   |
              |  |  |  |  |     \|  |  |  |   \      /
              |  |__|  |  |  |\     |  |  |   /      \
              |        |  |  | \    |  |  |  |   /\   |
              |________|  |__|  \___|  |__|  |__|  |__|
              Installation Configuration Administration



                         unix.txt  09/04/2004
                            maregeneration



                         ####################
                         #    HISTORIQUE    #
                         ####################




PARTIE 1 - CONCEPTS FONDAMENTAUX D'UNIX
#######################################

Chapitre 1 - Principes d'Unix

1.1. Le systeme de fichiers Unix

NFS: Network File System noeud racine du systeme de fichiers "/". Les autres disques, partitions, cdrom, etc... se montent dans un point de montage quelque part dans la hierarchie des repertoires (sur le disque contenant la partition racine). On utilise mount. ex: mount /dev/fd0 -t auto -o default,user,noauto /mnt/floppy mount /dev/cdrom -t iso9660 -o defaults,ro,noauto /cdrom mount /dev/sr0 -t iso9660 /mnt/scsicd mount /dev/hda5 -t vfat -o w,user,noauto /mnt/hard_disk_master_part5 umount /dev/fd0 !!: le repertoire de montage doit exister (ex mkdir /mnt/scsicd)

Il est possible d'explorer different systemes de fichiers; les differences sont gerees en coulisse.

Le NFS possede 4 blocs:

  • Bloc amorce: petit programme (bootstrap) d'amorce du systeme de fichiers.
  • Super bloc: modifie en permanence il est stoquer en RAM et sauvegarder de temps en temps. En cas de bug il faut tenter de le restaurer (nbrx exemplaires)
    • Taille du systeme de fichier
    • Nombre de blocs libres
    • Index des blocs librs
    • Taille de la liste d'inodes
    • Nombre d'inodes libres
    • Index de la liste d'inodes
    • Champs verrous des listes de blocs et d'inodes libres
    • Indicateur de super-bloc modifié
  • Liste d'inode: permet l'acce a un espace disque, 1 fichier = 1 inode
  • Zone de donnees: divises en blocs logiques 4k ou 8ko

Chaque systeme de fichiers possede un inode racine qui correspond au point de montage du systeme de fichiers par rapport au systeme racine ( mount ). Un repertoire est une liste de noms associes a des numeros d'inodes. (ls -ai) inode:

  • 15 pointeurs sur blocs de donnees ou sur autre serie de pointeurs
  • Proprietaire
  • Groupe
  • Droits d'acces
  • Type
  • Taille
  • Nombre de liens
  • Cree le
  • Derniere modification
  • Dernier acces
  • Inode modifie le

1.2. Le noyau Unix (kernel)

Les pilotes permettent de rendre le noyau independant du materiel. Ils se trouvent dans /dev. Ils peuvent etre charges en permanance, ou lorsqu'ils sont utilises. Il existe 2 types de pilotes; bloc (hd) et caractere (reseaux modem). Avec ls -l /dev on voit brw- ... pour un pilote de type bloc. Les pilotes bloc utilisent un tampon memoire contrairement aux pilotes caractere. Avant la date, on voit 2 numeros qui correspondent au major(type) / minor(no) device number. les pilotes les plus utiles:

  • /dev/null: pilote factice
  • /dev/cua1: COM1
  • /dev/lp0: imprimante
  • /dev/fd0: floppy
  • /dev/hda1: hard disk a, partition 1
  • /dev/cdrom: cdrom
  • /dev/sda1... scsi hd a, 1
  • /dev/tty: clavier
  • /dev/tty1: console 1 (changer avec Ctrl-Alt+ F1 a F7)

Plusieur processus peuvent tourner simultanement, grace au noyau qui gere chacun d'entre eux. un processus parent peut lancer un processus fils avec fork(). avec ps -f on trouve le PID (Process ID) et PPID (Parent Process ID). 9 etats sont possibles pour un processus ( cf p49 ). Si un processus est en attente d'un signal, il peut etre transferer en swap(dd) pour gagner de la RAM. ps -t tty1 -f permet de killer un processus sur une autre console. top permet d'afficher l'activite du systeme (on quitte par q).

1.3. Gestion de la memoire virtuelle

Systeme de pagination: permet le transfert de pages de la RAM vers la swap, et donc, un processus peux utilise plus du memoire que la RAM. En effet, il n'est plus obligatoire de le charger entierement. Plusieur signauds peuvent etre interceptes par les processus. On peut les creer par la commande kill. On affiche les pid avec la commande ps .

  • SIGHUP: fin du processus. Les processus fils se terminent a la fin du parent
  • SIGTERM: termine normalement un processus kill pid
  • SIGKILL: fin du processus kill -9 pid (si ca ne marche pas, reboot).
  • SIGSEGV: Segmentation: tentative d'acceder a une zone memoire invalide
  • SIGBUS: tentative de detruire la pile par une zone invalide.
  • SIGPIPE: si le processus terminal d'un pipe a disparu. Appels systeme: mode utilisateur, noyau, pilotes, periph.

1.4 Les communications interprocessus (IPC)

Unix permet de construire des systemes et des applications a partir d'une serie de processus indépendants, tout en atteignand un haut niveau d'integration.

Methode d'un fichier de donnees: Un processus uucico cree un fichier verrou pour disposer d'un acces exclusif a un perpherique (modem). Le programme uucp (Unix To Unix Copy) cree des fichiers de donnees qui seront rapatries.

Methode du pipe: Un pipe est un connecteur permettant de reunir un flot de donnees en sortie, a un flot de donnees en entree d'un autre processus, selon un ordre FIFO ( first in, first out). ex: ls /usr/bin | more. Dans un programme c'est pipe() (cf p59). On peut egalement utiliser mknod().

Methode System V IPC: La commande msgget() permet de l'acces a une file d'attente de messages externe via une cle choisi au prealable. msgrcv() et msgsnd() permettent de recevoit et d'emettre ces messages. Les programmes peuvent ainsi recevoir des signaux directement, plutot que de scruter periodiquement une application. Si une appli connait l'identifiant de la file, msgctrl() permet l'acce et la modification de la file. ipcs permet de recuperer les infos sur plusieurs files en cours. Le system V IPC posse des problemes de securites car la cle peut etre devinee.

Methode de la memoire partagee: L'acce a une memoire partage externe se fait par shmat(), et shmget(). shmdt() detache le processus de la region memoire pour evite que cette memoire soit efface quand le processus s'arrete. Par effacer ce segemt il faut shmctl().

Les semaphores permettent d'arbitrer les processus qui partagent de la memoire. voir semop(), semget(), semctl()

1.5 La structure des repertoires

Pour naviguer entre les repertoires utilisez ls et cd (ex ls -al /) ls renvoit un masque d'informations au format octal sur chaque elements ex: drwxr-xr-x   4 fenix  fg      1024 Mar 22 15:36 f1 


première lettre (type):                  autres lettres (attributs)
- fichier ordinaire                      - non selectione
d dossier                                r lecture possible
l lien                                   w ecriture possible
c peripherique en mode caractère.        x execution possible pour fichiers
b peripherique en mode bloc.               acces interdit pour dossiers
p tube                                   s exec avec droit du proprietaire
f file                                   t code du prog en swap ex /tmp
                                           seul user peut supprimer

mode octal: r=4 w=2 (x,s,t)=1 ex: r-x=4+1=5 ex fichier -rwxrwxr-- -> (0774)o (octal utile pour la commande chmod) - rwx rwx r-- user(u) group(g) other(o) Ici tout acces est possible sauf pour les autres, qui n'on pas les droit d'ecriture et d'execution. Il existe 3 autres bits de poids fort set-uid(4), set-gdi(2), sticky bit(1) lorsque set-uid est actif, dans user le x actif devient un s, et S si inactif. lorsque set-gdi est actif, dans group le x actif devient un s, et S si inactif. lorsque sticky est actif, dans other le x actif devient un t, et T si inactif.

Le 4 corespond au nombre d'inode, fenix a l'user, fg au groupe de fenix, 1024 la taille, etc ... Les fichiers commencant par un . correspondent aux fichiers caches.

dans le système de fichier UNIX, tous les répertoires ont un rôle (cf chap5):

  • dev Contient tous les fichiers de périphériques.
  • root C'est le répertoire de travail du super-utilisateur.
  • var Fichier temporaires (valeurs système, courrier users,impressions)
  • bin Commandes système les plus importantes.
  • mnt Dossier utilise par convention comme point d'encrage des periphs.
  • sbin Commandes avancées pour l'admnistration système(reserves au root).
  • boot Noyau du système, et les fichiers de demarrage.
  • etc Fichiers de configuration système, et d'applications.
  • tmp Dossier temporaire effacer regulierement.
  • lib Librairies communes, de base du système.
  • proc Image des programmes en mémoire.
  • usr,opt Emplacement des exécutables, des applications, des docs, des libs.
  • home Comptes des utilisateurs.
  • kernel,lkm,modules,stand composants du noyau pour l'amorcage

Chapitre 2 - Les interpreteurs de commandes

2.1 Presentation des shells UNIX dans l'analyse de shell

sh: le Bourne shell existe depuis le debut d'Unix. Il n'a pas le controle de job, ni l'edition de commande, ni l'historique de commande. csh: c-shell. Historique, jobs, edition limitee. Les script proche du c ne sont pas tres portable. ksh: Korn shell. Il reunit le meilleure de sh et csh et il est compatible avec les script sh. Il possede les alias et la v1993 est tres puissante. bash: Bourne Again shell. pareil que ksh mais entierement libre. tcsh: pareil que csh mais supporte l'edition de commande. pdksh: mise en oeuvre du domaine public de ksh. zsc: inspire de Bourne et Korn.

sh: informations de configuration: /etc/profile, $HOME/.profile variables: HOME, PATH, PS1($), PS2(>), IFS(Internal File Separator) ex: PATH=/bin:/$HOME:.

ksh: informations de configuration: /etc/profile, $HOME/.profile, .kshrc (=$ENV) variables: sh +: ERRNO, LINENO (ligne du script en cours), OLDPWD (cd -), PWD, RANDOM (0->32767), HISTFILE, HISTSIZE (info historique commandes).

tcsh: informations de configuration: /etc/csh.cshrc, /etc/csh.login, /$HOME/.cshrc, $HOME/.login, $HOME/.logout variables: cwd, = pwd, home, HOME, ignore(Ctrl-D), noclobber(ne pas ecraser >) noglob(*), path(separ par, ), PATH

ligne de commandes: Il est possible de saisir plusieurs commandes a la foi par ";". ex: mv fic1 fic2 ; ls -l; cat fic1 fic2 | sort | uniq

script shell:


#!/bin/sh
#!/bin/sh sert a transformer le script en commande
# name: script1; ceci est un commentaire.
echo "script simple."

chmod a+x script1 ; #selectione le mode executable
./script1 #pour l'executer
. script1 equivaut a bash script1 mais avec l'interpreteur courant (bash ou sh).

Les parametres du script sont recuperees dans les variables 0 a 9 ex: ($1 .. $9) ainsi que $# (nb de params) et $* (chaine des params) (cf "structure while"). $0 est le nom de la commande. $$ affiche le pid de l'interpreteur en cour.

2.2 Fonctions pincipales d'un shell Unix

Peripheriques d'entree sortie:

Ce sont des fichiers, qui servent d'interface avec l'utilisateur.

  • stdin entree standard 0<, 0<< ou <, << ex: cat < fichier1
  • stdout sortie standard 1>, 1>> ou >, >> ex: echo "ex" > fichier1
  • stderr sortie d'erreur 2>, 2>> ex: ls fic 2> /dev/null

Liste des metacaracteres:


 * designe plusieurs caracteres inconnus
 ? designe un caractere inconnu
 \ desymbolisation, pour intraduire un caractere special
[] liste ex [1,3,5,a-c] designe un des 6 caracteres 1,3,5,a,b,c
 > <  sortie, entree vers un fichier ou un peripherique en mode overwrite
>> << sortie, entree vers un fichier ou un peripherique en mode append
 | voir fifo pipe
 & execution en tache de fond
 ; separateur de commandes
$? niveau d'erreur de la derniere commande 0 si ok, 1 si ko, et > 1 si erreur
 # commentaires
 ^ marqueur de debut de ligne, s'il est utilise en debut d'expression
 $ marqueur de fin de ligne, s'il est utilise en fin d'expression

Liste des racourcis clavier: (cf unixcom.txt; bg fg)

Alt Gr-Enter sauter une ligne dans l'interpreteur Ctrl-D fin de la saisie standard (ex cat) Ctrl-Z passer l'application en arriere plan (background, bg) fleche haut rappeler les commandes precedantes fleche bas rappeler les commandes suivantes

2.3 Petit tour d'horizon des commandes Unix

Il est recommander de travailler sous un compte utilisateur, et de se reloger en root (avec su) pour effectuer des taches administratives. La creation d'un utilisateur consiste a:

  • lui associer un mot de passe (entree dans /etc/passwd avec passwd)
  • definir a quel(s) groupe(s) il appartient (entree dans /etc/group)
  • lui creer un repertoire personnel (/home/nom_utilisateur avec mkdir et chown)
  • lui creer son fichier personnel du shell (avec touch .bashrc).

Une entree du fichier /etc/passwd: login:password:usernb:groupnb:user:home:shell


   ex:  user1:x:501:100:user1:/home/user1:/bin/bash
 

Une entree du fichier /etc/group: group:x:groupnb:user1, user2, ...


   ex:  users:x:100:
 

voir le fichier unixcom.txt

2.4 Syntaxe du shell

Il faut utiliser +caractere pour saisir un caractere reserve. caracteres reserve: ( ) [ ] / \ etc ... Alt Gras + Enter sert a sauter des lignes &2 sortie standard d'erreur | redirection d'entree sortie , pipe ou fifo

Operation Booleenes: && ET logique, || OU logique ex: ls fic1 2> /dev/null > /dev/null && echo "fic1 existe" || \ echo "fic1 creer" && touch fic1 "\" sert a continuer l'instruction sur une nouvelle ligne. || : La seconde instruction n'est traite que si la premiere est fausse && : La seconde instruction n'est traite que si la premiere est vrai ($?=0)

2.5 Programmation du shell

voir bash.txt voir exemple.sh

traitement des variables:

Les variables sont automatiquement supprimes a la fin du processus.

  • affectation : a="tete a toto" # sans espaces
  • lecture : echo "$a"
  • suppression : unset a
  • lecture seule: readonly a
  • declaration : declare -i iv
  • operations : iv="7 < (16/2)"; iv=2*5; iv="4 == (8/ $nb)";
  • operandes : + - * / % < > <= >= == ! = && || & | ^

La commande expr:

  • operandes : + - * / % :
  • operations : b=$(expr $a + 5); => a=a+5; b=a; b=$(expr "Toto" : "[To]*"); => b=3 (1T 2o) expr "$LOGNAME" : "(..)"; echo $?

La commande test:

  • liste des options:

    -e   si le fichier existe      test -e fname
    -f   si le fichier est normal  test -f "~/fname"
    -h   si le fichier est un lien test -h $0
    -d   si c'est un dossier       test -d "$HOME/d1"
    -c   si c'est un periph car    test -c /dev/tty
    -b   si c'est un perif bloc    test -b /dev/lp0
    -p   si c'est un tube (fifo)   test -p `echo toto | /dev/lp0`
    -r   droit de lecture          test -r f; if [ f -r ];
    -w   droit d'ecriture          test -w f
    -x   droit d'execution         test -x f
    -s   si le fichier est plein   test -s f
    -z   si chaine vide            test -z ""
    -n   si chaine pleine          test -n "toto"
    -eq  si int var egal           test 0 -eq $i
    -ne  si int var non egal       test 0 -ne 1
    -lt  less than                 test 0 -lt 1
    -gt  greater than              test 1 -gt 0
    -le  less or equal             test 1 -le 1
    -ge  greter or equal           test 0 -ge 0
    !    NON                       test ! -s "$a"
    -a   ET                        test -d f -a -x f
    -o   OU                        test \(-d f -a -x f\) -o \(-d f2\)

  • forme abregee de test: test = [ ]

    [ -r f ] && echo "Le fichier f est accessible en lecture"

Les commandes read et eval:

read stocke ce que rentre sur l'entree standard dans une ou des variables. ex: read v1 v2; more f | read line; Il est possible de lire sequentiellement les ligne d'un fichier: more f | \ #\ permet de sauter une ligne while read line do echo $line done eval 'echo operation terminee'

Les commandes internes:

getopts permet l'analyse de la ligne de commande. set -x; en debut de script permet d'afficher les commandes avant de les executes set -; permet de revenir en mode normal set "a b c"; affecte $1 $2 $n $# $* . $IPS contient la liste des séparateurs. unset nom_fonction; désaffecte la fonction pushd; empile le chemin courant popd; dépile et affiche le chemin courant dirs; affiche la pile de dossiers alias ls="ls --color" ualias

Les structures de controle


#
# Structure while
#

while getops cfh i                               while [ $# -gt 0 ]; do
do                                                     echo $1
      case "$i" in                                     shift
        c) echo "you set c option";;             done
        f) echo "you set f option";;             # shift efface le 1er arg
        h) echo "you set h option";;             # et decale les autres
      '?') echo "wrong arg see usage now";;
      esac
done


#
# Structure if
#

if [ $# =0 ]  #teste si des argument        if [ ! -eq /f1 ]; then
              #ont ete rentrer                    echo "f1" > /f1
then                                        elif [ ! -eq /f2 ]; then
      echo "No Args!" >&2                         echo "f2" > /f2
      exit 1                                fi
else
      echo "Args: $*"  # affiche tous
fi                     # les arguments


#
# Structure case
#

case accepte des caracteres speciaux:
 *          chaine quelconque       ex: y*
 ?          caractere quelconque    ex: y?s
 [...]      plage de caracteres     ex: [yY], [a-z,A-Z]
 [!...]     negation d'une plage    ex: [!nN]*
 |          OU logique              ex: y|Y

askyn()   # demande de confirmation
{
read ans < /dev/tty  # redirige l'
entree standard du clavier vers ans
case "$ans" in
      "Y"|"y")  echo "yes"
                return 1;;
            *)  echo "no"
                return 0;;
esac
}

case "$1" in
        *.Z) uncompress -c $1;;
esac

#
# Structure for
#

Pour envoyer un message a 3 utilisateurs:

for nom in serge annick marie
do
      mail $nom << Fin
Rendez-vous au restaurant ${1-"Mercredi"}
Fin

done
 

Un herescript est le script qui est introduit, et qui se termine par le mot Fin nimporte quel mot peut etre utilise, mais en reigle generale, on utilise EOT.

Pour traiter des fichiers recherches.


for f in *1?.c
do
      echo $f
done

for nom in $(who | cut -c1-10)
 

Chapitre 3 - Differents languages scripts

3.1 awk

Le nom awk vient des initiales des 3 concepteurs; Aho Weiberger Kernighan (C) . awk est un langage de recherche de motifs de type texte. Il est concu pour travailler sur fichiers texte dans lesquels chaque ligne de texte correspond a un enregistrement ou a une entree (ex /etc/passwd).


cat /etc/passwd | \
while read line
do
  if [ `echo $line | cut -f4 -d":"` = 100 ]; then
    echo "`echo $line | cut -f1 -d : `  `echo $line | cut -f5 -d : `"
  fi
done

awk -F: `$4 ~/100/ {print $1,$5}` /etc/passwd
 

Effectue une recherche de 100 sur la 4 eme colone, et affiche les colones 1 et 5 pour les lignes trouvees. Le cractere delimiteur est specifie par l'option -F .

3.2 perl

Perl (Practical Extraction and Report Language) execute ces scripts en 2 etapes. Il compile le script, puis l'execute (comme du java). Perl reunit les concepts d'awk, de sed, et de bash. Il existe de nombreux paquetages complementaires; creation de scripts CGI, gerer les formulaires web, verifier les liens html, automatiser l'envoi des mails et gerer les fonctions reseau. Perl existe aussi sous windows, il contient la plupart des fonctions des librairies standard du C. Perl est le plus populaire des langages script.

3.3 Tcl/TK

3.4 Python

Python est un langage interprete et oriente objets.

3.5 Java

PARTIE 2 - UNIX VU DE L'INTERIEUR
#################################

Chapitre 4 - Le noyau d'Unix

4.1. Optimisation du noyau (tuning)

Il est indispensable d'etudier la documentation technique de votre noyau Unix. Un module est un code qui peut etre charger dynamiquement dans le noyau. En reigle generale on prefere installer en interne tous les codes indispensable au lancement du systeme; et en modules tous ceux qui peuvent se charger plus tard. Le fichier de configuration du noyau contient tous les paramettres du noyau.

Note: Il est conseiller de sauvegarder l'ancien noyau, ainsi que ses modules.

Compilation du noyau sous linux:

les sources doivent se trouver dans /usr/linux ou dans /usr/src/kernel*. le noyau compile dans ./arch/i386/boot/bzImage le noyau du systeme dans /boot/vmlinuz le fichier de configuration dans ./.config les modules dans /bin/modules/kernel

Installation des sources:

  • sous debian, dselect kernel-source puis gzip -d *.gz;
  • sous mandrake rpm -i kernel-headers.rpm rpm -i kernel-source.rpm rpm -i dev86.rpm rpm -i bin86.rpm rpm -i /mnt/cdrom/Redhat/RPMS/modutils*.rpm Creation d'une disquette de demarrage: (cf mke2fs) Compilation: 1) make xconfig (xwindows avec startx&) ou make config ou make menuconfig 2) choisir un nom de version, en modifiant le Makefile 3) make dep clean; nohup make bzImage; 4) make modules modules_install 5) vi /etc/lilo.conf ou grub pour rajouter un deuxieme noyau Les modules seront stoques dans /lib/modules/version_noyau. Dans ce dossier, il est possible d'installer un module par insmod (cf lsmod rmmod insmod)

Compilation du noyau sous FreeBSD:

les sources doivent se trouver dans /usr/src/sys le noyau compile dans ./arch/i386/boot/bzImage le noyau du systeme dans /boot/vmlinuz le fichier de configuration dans ./i386/conf/GENERIC les modules dans /bin/modules/kernel

Installation des sources:

  • /stand/sysinstall; # -> Configure -> Distributions -> src -> sys
  • ligne de commande avec le CD officiel de FreeBSD

     mount /cdrom; mkdir -p /usr/src/sys;
     ln -s /usr/src/sys /sys
     cat /cdrom/sys/ssys.[a-d]* | tar -xzvf
     cd /usr/src/sys/i386/conf
     cp GENERIC MYKERNEL
 

Creation d'une disquette de demarrage: Compilation: 1) vi /usr/src/sys/i386/conf/MYKERNEL; # ou ee: editeur pour d 2) /usr/sbin/config MYKERNEL; cd ../../compile/MYKERNEL; 3) make depend; make; make install;

4.2. Processus de boot du systeme

Mise en route du systeme:

A la mise sous tension de la machine, le code BIOS (Basic Input Output System) est execute. Il recherche alors la memoire, la carte graphique, les controleurs de disque dur, le SCSI. Puis c' est le code POST ( Power On Self Test ) qui s'execute. Celui ci teste l'execution du BIOS, le controleur DMA (Direct Memory Access), l'IT (Interruption). Suivant l'ordre de recherche sur les lecteurs, le systeme essaye de lancer le secteur de boot, sur le premier secteur de donnees (MBR, Master Boot Record ou boot sector). Le MBR contient l'identifiant de la partition contenant le systeme d'exploitation, une table de partition, etc ... Lors du demarrage d'UNIX, une serie d'initialisations sont effectues avant le chargement du noyau, leur pid est 0. En suivant, le programme init se lance en pid 1. Il constitu la racine de tous les processus suivants ( cf pstree ). Tous les scripts de demarrage se trouvent dans le repertoire /etc/rc.d/init.d/ . Le niveau d'execution du systeme est specifie dans /etc/inittab (5 pour Mandrake et 2 pour debian). A chaque niveau (run-level) est associe un repertoire /etc/rcX.d ou 'X' est le run-level. Ces dossiers contiennent des liens vers des script de /etc/init.d . Chaque lien du dossier rcX.d sera executer. /etc/initscript est execute en priorite s'il existe. Tout les scripts S* sont lances par start, K* par kill, S* par stop. Au moment du boot il est possible de donner le parametre init=X, pour fixer le niveau d'execution. Le script d'amorcage monte les systemes de fichier contenus dans /etc/fstab , apres avoir charges les modules du noyau avec /sbin/depmod -a . Enfin il lance /sbin/init.d/boot.d .


ln -s /etc/init.d/hdparm /etc/rc2.d/S80hdparm

#!/bin/sh
# ex: fichier /etc/init.d/hdparm
# Activation du mode DMA sur /dev/hda
/sbin/hdparm /dev/hda -d 1
 

LILO de Linux

LILO (LInux LOader) permet de choisir un systeme de fichier a executer. C'est un petit programme qui se place dans le MBR. Pour l' installer il suffit de paramettrer /etc/lilo.conf et de lancer la commande lilo .


  # /etc/lilo.conf
  #
  # lba32:   suport haute capacite       delay:   delai d'attente
  # boot:    emplacement du MBR          vga:     mode d'affichage
  # root:    racine de linux                      (ask, normal, ext, 9)
  # install: secteur de boot             default: label par defaut
  # map:     fichier mapmap              image:   noyau linux
  # backup:  fichier de sauvegarde MBR

  lba32
  boot=/dev/hda
  backup=/boot/MBR.old
  root=/dev/hda7
  install=/boot/boot.b
  map=/boot/map
  delay=2
  vga=normal
  default=dos
  image=/vmlinuz.old
        label=Linux.OLD
        read-only
  image=/vmlinuz
        label=Linux
  other=/dev/hda1
        label=dos
        table=/dev/hda
  # si dos est sur la 1° partition du disque dur a (maitre)  
  #
  # fin de /etc/lilo.conf
 

Lors du demarrage, il faut appuyer plusieurs fois sur 'Shift' Droit pour faire apparaitre l'invite. Avec 'Tab' on peut afficher la liste de labels reconnus. Pour supprimer LILO du MBR: fdisk /MBR sous dos, et fdisk /NEWMBR sous OS/2 . Sous unix la restauration du MBR de sda (scsi drive a) peut se faire ainsi:


  dd if=/dev/sda of=/boot/boot.LILO size=512 count=1  # sauvegarde du MBR
  dd if=/boot/MBR.old of=/dev/sda size=512 count=1    # ecriture du MBR
  !!: si le MBR est mauvais, le disque dur ne pourras plus booter.
 

Chapitre 5 - Systeme de fichier

5.1. Partitionnement des disques durs

Pour chaque partition creee sur un disque dur, il faut creer un systeme de fichiers. Si vous disposez de plusieurs disques, il est possible de mettre en place un systeme RAID (Redundant Array of Inexpensive Disks), pour augmenter la fiabilite du systeme. Il est conseiller de creer une partition par dossiers critique. /, /var, /opt, /tmp, /usr, /home. Pour une station independante, une partition suffit car l'administration est simplifiee. Les repertoires /, /etc, /kernel, /lkm, /modules, /stand, /proc, /sbin, /bin, /boot et eventuellement /root doivent se trouver dans la partition racine. Pour un serveur il faut 200M car sinon, certaines applications refuseront de s'installer.

Le choix des partition est guidee par l'utilisation de la machine. Un dossier succeptible de devenir tres volumineux doit etre mi sur une partition separee pour eviter le debordement, et l'ecroulement du systeme.

  • / partition racine doit etre disponible lors de la phase de demarrage.
  • /tmp Si vous exploitez des services creant de nombreux fihiers temporaires. Il y a des failles de securite dans tmp car tous les utilisateurs y ont acce. ex: serveur POP de 10M pour 300 connectes -> 3G
  • /usr Si vous utilisez des applications qui generent beaucoup de donnees ex: SGBD de 500M a 90G
  • /var de 200M a 9G
  • /home Si il y a beaucoup d'utilisateur 10M a 100G

exemple de repartition et de choix de partitions pour un disque de 10 Go:



Partitions / /tmp /usr /var /home spool /data


Profil Developpement          0,5    2      3      1,5    3
Profil serveur de messagerie  0,5    1      2      2      3      1,5
Profil serveur Web            0,5    1      4      1,5                  3
Profil pour un SGBD Oracle    0,5    1,5    4      1                    3

5.2. Choix des parametres des partitions

La commande de création de systèmes de fichiers est newfs. Voici les options :


-N affiche les parametres du systeme de fichier sans le créer.
-T récupère les informations sur le fichier /etc/disktab
-a maxconfig contrôle le nombre de blocs adjacents pour les opération d'écriture
   différée
-b block-size contrôle la taille unitaire des blocks (puissance de 2).
-f frag-size contrôle la taille d'un fragment de block (puiss de 2 1024). Une
   taille de block égale à la taille du fragment gaspille l'espace disque.
-i bytes per inode contrôle la densité des inodes
-m free space % définit le pourcentage d'espace interdit à l'utilisation normale
   et réservé au super-utilisateur.
-o opt. Method "space" ou "time" :  demande au système de fichier de privilégier
   la vitesse d'affectation des block ou la réduction de la fragmentation.

Un disque dur est structuré en pistes, chaque piste contenant des secteurs. La taille habituelle d'un secteur est de 512 octets. Les systèmes de fichiers Unix autorisent des tailles de blocs variables.

25 millisecondes