Administration Systeme UNIX
Installation d’une station de travail.
L’idee a l’origine de ce manuel est de fournir un guide a l’installation de stations de travail sous UNIX et a la con guration de certains services.
L’enchainement des chapitres de ce manuel est dicte par l’ordre des operations a e ectuer pour rendre la station operationnelle :
chapitre 2, page 25 : Demarrage d’UNIX (son bootstrap).
On y trouvera des indications sur ce qui est active au demarrage d’une station.
Dans la pratique, on utilisera ce chapitre une fois que la station aura boote pour le premiere fois et que l’on aura con gure les disques etc.
chapitre 3, page 39 : Con guration bas niveau de disques durs.
chapitre 4, page 59 : Con guration de lesystems classiques.
chapitre 7, page 89 : Con guration de la memoire virtuelle.
C’est lorsque la station vient d’arriver qu’il est le moins genant de con gurer ses disques car personne ne les utilise encore si bien qu’on peut s’essayer a toutes sortes de tests.
La configuration des disques comporte trois aspects :
- formattage physique et partitionnement ;
- installation de lesystems ;
- configuration de la memoire virtuelle.
chapitre 8, page 101 : Reseau Ethernet.
Ce chapitre decrit le minimum de theorie a conna^tre pour connecter physiquement une station a un reseau Ethernet.
Des aspects logiciels lies a Ethernet sont abordes.
chapitre 10, page 121 : Con guration d’Internet Protocol (IP).
Ce chapitre aborde les aspects logiciels de la mise en reseau d’une station de travail.
chapitre 11, page 145 : Con guration du Domain Name Service (DNS).
Ce chapitre continue le precedent en y decrivant le mecanisme logiciel permettant a une station de rentrer en connexion avec n’importe quelle autre station du monde.
chapitre 12, page 175 : Gestion du temps et des horloges.
Ce chapitre decrit comment on peut synchroniser l’horloge d’une station sur l’heure universelle, garantissant ainsi le bon fonctionnement des services qui auront besoin d’une horloge.
chapitre 13, page 187 : Con guration du Network Information Service (NIS).
Ce chapitre decrit le mecanisme permettant d’assurer une redistribution de certains contenus de chiers, comme les mots de passe.
chapitre 14, page 205 : Con guration du Network File System (NFS).
Ce chapitre decrit le mecanisme permettant d’utiliser le contenu d’un disque dur depuis une station autre que celle sur laquelle il est physiquement connecte.
chapitre 15, page 229 : Aspects de securite UNIX.
Une fois les principaux services d’une station con gures, quelques aspects de securite seront abordes.
chapitre 16, page 271 : Librairies dynamiques.
Ce chapitre aborde divers points (notamment de securite) concernant les librairies dynamiques que de plus en plus de systemes utilisent.
La suite du manuel decrit des services a ajouter pour rendre la station conviviale pour les utilisateurs :
chapitre 17, page 281 : Con guration du courrier electronique.
Description du systeme du courrier electronique, du point de vue de l’administrateur et du point de vue de l’utilisateur.
chapitre 18, page 305 : Con guration d’imprimantes. Description de la con guration d’imprimantes.
chapitre 19, page 317 : Reseaux Appletalk.
Ce chapitre prolonge le precedent en abordant l’interconnexion de reseaux AppleTalk
avec des reseaux TCP/IP a dominante UNIX.
chapitre 20, page 347 : Con guration de terminaux ASCII.
chapitre 21, page 361 : Con guration de X Display Manager (XDM).
chapitre 22, page : Con guration de Xkernel.
Ces trois chapitres decrivent la con guration des di erents types de terminaux que l’on peut trouver sur le marche actuellement, a savoir les classiques terminaux ASCII, les terminaux X et un type particulier de terminaux X que sont les vieilles stations de travail recyclees pour cet usage.
Voici quelques conseils sur la facon d’installer un systeme.
Ce manuel n’abordera pas le probleme de l’installation partant de rien d’une station UNIX, chaque constructeur proposant en e et sa propre methode d’installation de son systeme.
Si votre constructeur propose le systeme sur CDROM, envisagez, si ce n’est pas deja fait, l’achat d’un CDROM : le temps d’installation n’en sera que reduit et recommencer l’installation en cas de loupe ne necessite pas d’attendre qu’une bande magnetique se rembobine. D’autre part, le CDROM permet en general de booter dessus et de disposer ainsi d’un disque de depannage.
Pour installer N stations avec le m^eme systeme, envisagez soit un disque dur de reference qui sera duplique sur chaque nouvelle station par branchement direct dessus, soit un mecanisme de boot des nouvelles stations en diskless prolonge d’une recopie via le reseau d’un disque de reference. Cette derniere methode fait l’objet de plusieurs documents sur le rezo :
- mailing list auto-net-request@math.gatech.edu (adresse d’abonnement)
- article d’URL ftp://ftp.umbc.edu/pub/sgi/upgrade/lisa8.ps
Dernier conseil : ayez de preference deux stations du m^eme type sur votre reseau. D’une part, pour pouvoir booter l’une en diskless sur l’autre, d’autre part pour pouvoir consulter leschiers systeme ou les pages de manuel de l’une quand l’autre montre des problemes.
1 L’administrateur systeme dans son milieu naturel.
2 Demarrage d’UNIX (son bootstrap).
2.1 Principe du boot d’une station UNIX.
Entre la mise sous tension de votre station de travail et l’a chage du prompt Login: ou d’une quelconque mire xdm (cf chapitre 21 [Con guration de X Display Manager (XDM)], page 361), il s’est passe un certain nombre de choses dont principalement l’activation du systeme et le lancement des demons systeme.
Cet enchainement d’actions est loin d’^etre trivial et sa connaissance est indispensable pour diverses raisons :
- intervenir en cas de problemes ;
- ajouter des demons systeme.
2.1.1 Premiere etape : le chargeur primaire.
A la mise sous tension, aucun systeme n’est actif et la memoire de la station est vide. Le hardware ne peut donc que commander l’execution d’un programme residant en ROM ou en EPROM ; c’est ce programme que l’on appelle le chargeur primaire. Son r^ole est multiple :
- verifier la memoire, tout au moins partiellement ;
- verifier les diferents composants hardware de la station ;
- examiner les diferents bus pour y trouver les peripheriques rattaches ;
- determiner les disques bootables et s’il y en a plusieurs, laisser l’utilisateur en choisir un (en general cependant, une EEPROM se charge de memoriser le disque de boot et provoque
automatiquement le demarrage sur ce peripherique la fois d’apres) ;
- une fois un disque de boot determine, charger le secteur de boot qui contient en fait le chargeur secondaire.
Ce chargeur primaire est souvent appele le mode moniteur de la station. En general il s’agit d’un processus automatique qui, lorsqu’il est interrompu, donne la main a l’administrateur et lui propose une sorte de shell ; sous certaines stations de travail, le moniteur a une interface graphique (cf les stations de type INDIGO de Silicon Graphics).
Tout moniteur permet de choisir le dispositif de boot car si le dispositif normal a des problemes, il faut etre capable de booter sur un autre, pour pouvoir reparer le premier par exemple ou encore installer une nouvelle version de systeme. Le moniteur permet donc en general de preciser si l’on va utiliser un disque, un CDROM, un lecteur de bande ou encore un lecteur de disquettes. On peut d’habitude aussi preciser le mode de boot : boot en mode administration, boot en mode normal. . .
Dans la mesure ou le moniteur permet de determiner la facon dont la station va booter, son emploi est a restreindre a l’administrateur seul. Certains constructeurs proposent de proteger l’acces a ce mode. Nous ne donnerons ici que quelques idees sur la facon de faire, les di erentes methodes dependant enormement des modeles de machines et des versions de PROMs de ces modeles.
26 Guide d’administration systeme UNIX
Le mieux pouvant etre l’ennemi du bien, ces protections sont a utiliser avec precaution, notamment les methodes de protection avec mots de passe. Sur Sun, perdriez-vous le mot de passe de l’acces au moniteur que vous ne pourriez plus booter du tout, ce qui vous obligerait a un retour usine de la station !
Voici comment booter en mono-utilisateur selon le systeme :
2.1.2 Deuxieme etape : le chargeur secondaire { le noyau.
Le chargeur secondaire correspond au second programme active par la station. Il reside toujours a une adresse bien speci que sur le dispositif de boot, quel qu’il soit, a n que le chargeur primaire soit capable de le trouver.
Si le dispositif est un disque, le chargeur secondaire reside dans les secteurs de boot qui sont donc tres importants. En cas d’e acement de ces secteurs, il faut les reconstruire. Selon le systeme,
cette operation est executable sans autres modi cations au disque.
Le chargeur secondaire ne constitue en aucune facon le systeme qui tournera ensuite. Il en a cependant certaines connaissances, surtout la connaissance de la structure d’organisation du disque UNIX, ce qui lui permet de trouver sur le disque l’emplacement de certains chiers et plus particulierement du noyau UNIX. Ce noyau a divers noms selon les constructeurs (/vmunix pour la plupart des UNIX de la famille BSD, /unix pour ceux de la famille System-V mais avec quelques exceptions comme /hp-ux pour HP-UX 9.0x, /stand/vmunix pour HP-UX 10.01 par exemple).
On distingue deux philosophies concernant la construction du noyau :
l’approche minimaliste de System V
Un noyau tournant sur un systeme V ne connait que les peripheriques presents sur les bus au moment ou le noyau a ete genere. L’ajout d’un peripherique necessite donc la reconstruction d’un noyau pour voir le nouveau peripherique.
l’approche BSD
Le noyau par defaut est con gure pour des peripheriques qui ne sont peut-^etre pas disponibles sur la station ou le systeme tournera. L’ajout d’un peripherique a de bonnes chances de se faire sans necessiter de reconstruire le noyau.
La reconstruction d’un noyau est di erente selon le systeme. Cf son manuel constructeur pour ce point.
2.1.3 Troisieme etape : le chargement du noyau { init.
Le noyau a une pleine connaissance de l’organisation logique des disques et est donc capable d’y localiser des chiers et des applications. Une fois charge en memoire, il s’initialise puis commence la mise a feu du systeme UNIX en creant le procesus de numero 0 qui porte en general le nom de swapper. Ce processus en engendre alors un deuxieme qui est init quel que soit l’UNIX (pour une fois, ils sont d’accord sur cela), de numero 1.
Sur les systemes d’origine BSD, le processus 2 est special ; sa mission est d’assurer la gestion des pages memoire du mecanisme de memoire virtuelle.
Le processus init a un r^ole tres important : c’est lui qui va faire passer le systeme de l’etat de programme mono-utilisateur et mono-tache a l’etat multi-utilisateurs et multi-t^aches. Il determine aussi la duree de vie du systeme : si init se termine, il entra^ne UNIX avec lui dans sa chute.
Suivant la famille d’UNIX a laquelle appartient votre UNIX, le systeme peut presenter di erents niveaux de fonctionnement :
famille BSD
On a deux niveaux, le niveau single-user et le niveau multi-user (sans compter le niveau ou le materiel est eteint).
famille System-V
De nombreux niveaux existent, en general numerotes de 0 a 6, avec deux valeurs en plus (s et S) pour signaler le mode single-user. Par exemple, sous Solaris 2.x, on a :
SVR4 Run States
- Single-user (leaves lesystems mounted)
0Power o
1 Single-user/System-admin (leaves only / mounted) 2 Multi-user, network disabled
3Multi-user, network enabled
4(not used)
5PROM Monitor level
6Halt & reboot to default state
Ces niveaux ont en general une signi cation qui est de la responsabilite de l’adminis-trateur systeme bien que les signi cations des niveaux 0, 1, 2 6 et s sont souvent codees en dur dans le systeme.
C’est le processus init qui fait passer d’un niveau a un autre, la plupart du temps automatiquement. Dans le cas des UNIX System-V, le passage d’un run-level a un autre est contr^ole par le chier /etc/inittab au format suivant :
label : niveaux : action : commande
Comment s’interprete chacun de ces champs ?
label
C’est une simple simple cha^ne de caracteres servant en interne a init et qui permet de designer facilement la ligne.
niveaux
Ce champ designe les etats dans lesquels doit se trouver le systeme pour lancer la commande donnee par le champ 4, de la facon designee par le champ 3. Si le champ est vide, tous les niveaux possibles sont concernes par la commande.
commande
C’est une commande UNIX a executer, aussi bien un shell-script qu’un binaire.
Voici un exemple de chier inittab ; c’est celui d’un systeme HP-UX 9.0x :
thorgal:[43]:</etc>cat /etc/inittab
init:4:initdefault:
stty::sysinit:stty 9600 clocal icanon echo opost onlcr ienqak ixon icrnl ignpary brc1::bootwait:/etc/bcheckrc </dev/console >/dev/console 2>&1 slib::bootwait:/etc/recoversl </dev/console >/dev/console 2>&1 brc2::bootwait:/etc/brc >/dev/console 2>&1
link::wait:/bin/sh -c « rm -f /dev/syscon; ln /dev/systty /dev/syscon » >/dev/console 2>&1 rc ::wait:/etc/rc </dev/console >/dev/console 2>&1 powf::powerwait:/etc/powerfail >/dev/console 2>&1
lp ::off:nohup sleep 999999999 </dev/lp & stty 9600 </dev/lp halt:6:wait:/usr/lib/X11/ignition/shutdown.ksh cons:012456:respawn:/etc/getty -h console console vue :34:respawn:/etc/vuerc
Ce inittab permet de lancer le systeme de multifen^etrage proprietaire HP gr^ace a la ligne :
vue :34:respawn:/etc/vuerc # start VUE
parce que l’on peut entrer dans l’etat 4 puisque c’est le run-level par defaut comme precise par la ligne :
init:4:initdefault:
Par defaut, l’installation HP ne lance pas le systeme de multifen^etrage ; il su t pour cela de faire du run-level 3 ou 4 le run-level par defaut. Quand on installera une station HP, on prendra donc soin de passer de init:2:initdefault: a init:4:initdefault: (si bien s^ur, on souhaite disposer de leur chu systeme proprietaire de multi-fen^etrage)
2.1.4 Quatrieme etape : les scripts de demarrage.
Que cela soit pour BSD ou pour System-V, le travail d’init pourrait se resumer dans sa phase nale par le lancement d’un certain nombre de shell-scripts. La di erence a ce niveau entre les deux familles est la structuration de ces shell-scripts.
Dans l’environnement BSD, au moment de passer en mode multi-user, init execute le chier /etc/rc qui fait appel a un moment a /etc/rc.local. Ce dernier est cense contenir vos ajouts (lancement de nouveaux demons, nouvelles initialisations hardware. . .) mais il est rare que les constructeurs livrent un tel chier vide : a l’heure actuelle, il faut voir ce chier comme le moyen pour les constructeurs de regrouper l’ensemble des demons a lancer optionnellement selon la con – guration de la station. L’administrateur ajoutera classiquement ses extensions en n du chier
/etc/rc.local.
Dans l’environnement System V, tout au moins sur les System V purs et durs, lorsque le systeme entre dans le run-level hni, un shell-script de nom rchni (situe dans /etc ou /sbin selon les systemes) est execute :
- cat /etc/inittab […] is:3:initdefault:
ss:Ss:wait:/sbin/rc0 shutdown < /dev/console > /dev/console 2>&1 s0:0:wait:/sbin/rc0 off < /dev/console > /dev/console 2>&1 fs:23:wait:/sbin/bcheckrc < /dev/console > /dev/console 2>&1 update:23:wait:/sbin/update > /dev/console 2>&1 s2:23:wait:/sbin/rc2 < /dev/console > /dev/console 2>&1
s3:3:wait:/sbin/rc3 < /dev/console > /dev/console 2>&1 […]
Ce shell-script rchni se contente de provoquer le lancement successif des scripts ou applications se trouvant dans un directory de nom rchni.d (traditionnellement /etc/rchni.d ou /sbin/rchni.d). Ces scripts sont chacun, en general, responsables d’un certain aspect du systeme : gestion des imprimantes, de NFS, du courrier electronique. . .
Ces scripts portent des noms respectant une certain regle ; ils sont du genre Shnnifoo ou Khnnifoo comme par exemple /sbin/rc3.d/S57cron et /sbin/rc3.d/K57cron. La composante hnni assure l’encha^nement des scripts dans l’ordre croissant des valeurs. Quant a la premiere lettre, si elle vaut S alors le script est responsable du lancement d’un sous systeme de demons (S comme Start) ; dans ce cas, le script est lance avec l’argument start. Si la premiere lettre vaut K, le script est alors responsable de l’arr^et d’un sous systeme de demons (K comme Kill) ; le script est lance avec l’argument stop. Ce principe permet d’arr^eter les demons d’un run-level lorsque l’on passe a un
autre run-level puis de lancer les demons propres a ce run-level et cela, sans necessiter de conna^tre un quelconque ordre d’arr^et et de lancement des demons, comme le montre le script rc2 suivant :
- cat /sbin/rc2 […]
#
# Determine action from runlevel information
#
set `who -r`
if [ $9 = « S » ]; then
stty sane tab3 2>/dev/null
echo « The system is coming up. Please wait… » BOOT=yes
Chapitre 2: Demarrage d’UNIX (son bootstrap). 31
elif [ $7 = « 2 » ]; then
echo « Changing to system level 2. »
if [ -d /sbin/rc2.d ]; then
for f in /sbin/rc2.d/K*
do
if [ -s $f ]; then
/sbin/sh $f stop
fi
done
fi
fi
if [ -d /sbin/rc2.d ]; then
for f in /sbin/rc2.d/S*
do
if [ -s $f ]; then
/sbin/sh $f start
fi
done
fi
[…]
Pour simpli er les choses, les scripts Shnnifoo et Khnnifoo sont en general des liens symboliques vers un m^eme chier qui regroupe alors le lancement et l’arr^et du sous systeme de demons concerne. Le squelette d’un tel script est le suivant :
#!/sbin/sh
- OSF/1 Release 1.0
- Start the cron deamon
PATH=/sbin:/usr/sbin:/usr/bin
export PATH
case « $1 » in
‘start’)
set `who -r`
if [ $9 = « S » ]; then
rm -f /var/adm/cron/FIFO
if /usr/sbin/cron; then
echo « Cron service started »
else
echo « Unable to start cron service »
fi
fi
;;
‘stop’)
pid=`/bin/ps -e | grep cron | sed -e ‘s/^ *//’ -e ‘s/ .*//’ | head -1`
if [ « X$pid » != « X » ]
then
/bin/kill $pid
fi
;;
*)
echo « usage: $0 start|stop »
;;
esac
Non seulement, Shnnifoo et Khnnifoo sont-ils des liens symboliques sur un m^eme script en pratique, mais ces scripts sont identiques quel que soit l’etat et on trouve donc dans les directories rc0.d, rc1.d,rc2.d. . . des liens symboliques vers un directory regroupant les divers scripts.
Traditionnellement ce directory s’appelle init.d. Sous DEC OSF/1 version 2.0, on a ainsi :
Donc tout pointe vers /sbin/init.d/cron.
2.2 Panorama des chiers d’initialisation de quelques systemes.
Pour decouvrir ce qui se passe au boot, quels chiers sont impliques, il su t de trouver le point d’entree de la phase de boot. C’est ce que l’on se propose de faire ici.
AIX 3.2.3. Il s’agit d’un boot a la System-V a l’exception pres que l’on ne retrouve pas les scripts rc<n> ni les directories de scripts associes ; le programme init lance, via
/etc/inittab, des scripts ayant d’autres noms ou bien des executables :
- cat inittab […] init:2:initdefault:
brc::sysinit:/sbin/rc.boot 3 >/dev/console 2>&1 powerfail::powerfail:/etc/rc.powerfail >/dev/console 2>&1 rc:2:wait:/etc/rc > /dev/console 2>&1 fbcheck:2:wait:/usr/lib/dwm/fbcheck >/dev/console 2>&1 srcmstr:2:respawn:/etc/srcmstr rctcpip:2:wait:/etc/rc.tcpip > /dev/console 2>&1 rcnfs:2:wait:/etc/rc.nfs > /dev/console 2>&1 cons:0123456789:respawn:/etc/getty /dev/console piobe:2:wait:/bin/rm -f /usr/lpd/pio/flags/* cron:2:respawn:/etc/cron qdaemon:2:wait:/bin/startsrc -sqdaemon infod:2:once:startsrc -s infod
lpd:2:once:startsrc -s lpd
Pour ajouter ses propres extensions, on a deux solutions :
1. ajouter en n du dernier script lance (ici rc.nfs) des lignes du genre :
if [ -f /etc/rc.local ] ; then
/bin/sh /etc/rc.local
fi
2. proceder selon la regle System-V et ajouter en n de inittab une ligne du type :
local:2:wait:/etc/rc.custom > /dev/console 2>&1
AIX 4.1.x M^eme chose qu’en AIX 3.2.x.
A noter qu’il existe deux methodes d’initialisation sous AIX1 :
- une methode d’inspiration BSD ;
- une methode propre a AIX.
La methode activee par defaut est la methode propre a AIX. Lors de l’installation du systeme, on se voit propose le choix entre les deux methodes, apres avoir rem-pli a l’aide d’une interface graphique des renseignements a propos de la machine. Il
- Je ne m’en suis rendu compte qu’en AIX 4.1.4. Ces deux methodes doivent ^etre presentes dans
les versions precedentes, y compris en AIX 3.2.x.
Chapitre 2: Demarrage d’UNIX (son bootstrap).
faut savoir que, si l’on choisit l’initialisation a la BSD, il faut entrer a nouveau ces renseignements dans /etc/rc.bsdnet, pour la raison simple que les renseignements donnes via smit sont entres dans la base ODM, propre au systeme AIX et que cette base n’a aucune raison d’^etre consulte par les trucs BSD. Si vous ne modi ez pas /etc/rc.bsdnet, votre station s’appelerait ainsi aoot.austin.ibm.com, hostname par defaut dans /etc/rc.bsdnet.
La methode propre a AIX consulte le chier /etc/rc.net.
DEC OSF versions 1.x, 2.0 et 3.x.
Il s’agit d’une initialisation dans le plus pur style System-V.
Les chiers et directories impliques sont /etc/inittab, /sbin/rc[023], /sbin/rc[023].d et /sbin/init.d.
On retrouve le classique /etc/inittab qui active des scripts de nom /sbin/rchnni
lancant des demons dans /sbin/rchnni.d.
DEC ULTRIX 4.x.
Il s’agit d’une initialisation classique a la BSD.
On ajoutera ses extensions dans /etc/rc.local.
FreeBSD versions 2.0.5 et 2.1
Il s’agit d’une initialisation classique a la BSD.
Le programme init consulte /etc/rc.
On ajoutera ses extensions dans le chier /etc/rc.local.
HP-UX versions 8.07 et 9.0x.
Il s’agit d’une initialisation hybride comme celle d’AIX ou init se sert du chier /etc/inittab :
- cat /etc/inittab init:4:initdefault:
stty::sysinit:stty 9600 clocal icanon echo opost onlcr ienqak ixon icrnl ignpary brc1::bootwait:/etc/bcheckrc </dev/console >/dev/console 2>&1 slib::bootwait:/etc/recoversl </dev/console >/dev/console 2>&1 brc2::bootwait:/etc/brc >/dev/console 2>&1
rc ::wait:/etc/rc </dev/console >/dev/console 2>&1 powf::powerwait:/etc/powerfail >/dev/console 2>&1
lp ::off:nohup sleep 999999999 </dev/lp & stty 9600 </dev/lp halt:6:wait:/usr/lib/X11/ignition/shutdown.ksh cons:012456:respawn:/etc/getty -h console console
vue :34:respawn:/etc/vuerc
Pour ajouter ses propres extensions, on dispose de la fonction localrc() du chier /etc/rc. Il su t d’ajouter dans le corps de cette fonction ce que l’on souhaite lancer, comme par exemple :
localrc()
{
- This function is intended for adding local initialization
- functions to rc. This function is called after all other
- system initialization is completed.
##
- Automount.
- [Thierry Besancon, le 16 mars 1993]
if [ -x /etc/amd/amd-run ] ; then echo « automounter:\c » /etc/amd/amd-run
echo » amd started (sleeping for 10 seconds) » sleep 10
fi
}
34 Guide d’administration systeme UNIX
Une autre tactique permettant de ne plus editer /etc/rc et d’y faire une possible erreur est d’inserer quelque chose comme :
if [ -f /etc.local/rc ]; then
sh /etc.local/rc
fi
Le script /etc.local/rc sera celui ou vous ferez vos ajouts.
Deux modi cations sont a envisager dans les chiers d’initialisation de HP-UX :
- Par defaut, root n’a pas de umask positionne pendant le boot si bien que des chiers sont crees au boot avec un mode g^enant. Par exemple :
-rw-rw-rw- |
1 |
root |
root |
3790 |
Dec |
30 |
13:24 |
/etc/ptydaemonlog |
-rw-rw-rw- |
1 |
root |
root |
4 |
Dec |
30 |
13:24 |
/etc/syslog.pid |
On corrige cela en ajoutant ce qu’il faut dans la fonction initialize() du chier /etc/rc :
[…]
initialize()
{
- The following parameters may be modified for the specific
- needs of your local system.
##
- Sur les conseils de beig et de pda, je change le umask.
- [besancon@excalibur.ens.fr, le 9 mars 1994]
##—–
umask 022
[…]
- Quand on installe un systeme HP-UX ou quand on recupere un disque systeme precon gure, a la premiere mise sous tension, on se voit poser tout un tas de questions pour nir de con gurer la station.
Ainsi, on se voit demander un nom de hostname et de nodename. Pour une raison obscure, ces 2 quantites devraient etre^ egales ; le probleme est que le nodename doit ^etre limite a 8 caracteres. Or, en comptant le nom de domaine, cela fait tres souvent plus de 8 caracteres. On rentre donc a ce moment les 8 premiers caracteres du nom complet et une fois l’installation terminee, on installe le vrai nom de la station. Voici comment j’installe le vrai nom de la station (je prendrai l’exemple de la station caferoyal.ens.fr) :
-
- le script /etc/src.sh ressemble maintenant a :
- Configured using SAM by root on Tue Mar 16 16:51:22 1993 SHORT_SYSTEM_NAME=caferoya ; export SHORT_SYSTEM_NAME
Cette ligne est nouvelle et la variable SHORT_SYSTEM_NAME resservira dans /etc/rc.
SYSTEM_NAME=caferoyal.ens.fr ; export SYSTEM_NAME
Cette ligne contient maintenant le nom complet.
TZ=MET-1METDST; export TZ
2. la procedure initialize() de /etc/rc ressemble maintenant a :
initialize()
{
- The following parameters may be modified for the specific
- needs of your local system.
[…]
- Set the system’s network name:
- This is done automattically at the first bootup
- by the /etc/set_parms script. The system name is
- written to the /etc/src.sh file for subsequent bootups.
- The /etc/src.sh file is sourced by this script to set
- the SYSTEM_NAME variable.
SYSTEM_NAME=caferoyal.ens.fr
Chapitre 2: Demarrage d’UNIX (son bootstrap). 35
if [ « $SYSTEM_NAME » = « » ]
Au cas ou /etc/src.sh aurait provoque un probleme. . .
then
SHORT_SYSTEM_NAME=caferoya
Cette ligne est nouvelle et la variable SHORT_SYSTEM_NAME servira a nouveau plus loin.
Cette ligne contient maintenant le nom complet.
export SYSTEM_NAME
fi
[…]
}
[…]
if [ ! -f /etc/rcflag ] # Boot time invocation only
then
[…]
uname -S $SHORT_SYSTEM_NAME
Avant on avait uname -S $SYSTEM_NAME.
hostname $SYSTEM_NAME
[…]
Le nom sur 8 caracteres sert au niveau de la commande uname. Si l’on avait fait uname -S $SYSTEM_NAME avec SYSTEM_NAME contenant un nom de plus de 8 carac-teres, on aurait obtenu :
HP-UX unknown A.09.01 E 9000/735 2001083524 8-user license
alors qu’avec la methode decrite ci{dessus, on obtient :
HP-UX caferoya A.09.01 E 9000/735 2001083524 8-user license
Il faut egalement modi er le chier /usr/adm/inetd.sec qui contient le nom tron-que a 8 caracteres suite a l’installation.
HP-UX 10.01.
Il s’agit d’une initialisation dans un style tres System V.
Les chiers et directories impliques sont /etc/inittab, /sbin/rc, /sbin/rc[01234].d et /sbin/init.d.
On retrouve le classique /etc/inittab qui active le script de nom /sbin/rc lancant des demons dans /sbin/rchnni.d.
On ajoutera ses extensions en creant des scripts qui seront places dans /sbin/rchni.d, avec un nom du type Shnnnifoo ou alors en n de chier /etc/inittab comme men-tionne pour AIX.
IRIX 4.0.5 et 5.2.
Il s’agit d’un boot dans le plus pur style System-V.
Les chiers et directories impliques sont : /etc/inittab, /etc/rc[023] et /etc/rc[023].d/.
Pour ajouter ses propres extensions, on creera donc, dans le bon directory /etc/rchni.d, un script a uble d’un numero hNNi le lancant au bon moment dans la phase de boot.
Linux 1.2.x
Il s’agit d’une initialisation hybride comme celle d’AIX ou init consulte le chier /etc/inittab :
% cat /etc/inittab
- System initialization (runs when system boots). si:S:sysinit:/etc/rc.d/rc.S
- Script to run when going single user. su:S:wait:/etc/rc.d/rc.K
- Script to run when going multi user. rc:123456:wait:/etc/rc.d/rc.M
- What to do at the « Three Finger Salute ». ca::ctrlaltdel:/sbin/shutdown -t3 -rf now
[…]
- Runlevel 6 used to be for an X-window only system, until we discovered
- that it throws init into a loop that keeps your load avg at least 1 all
- the time. Thus, there is now one getty opened on tty6. Hopefully no one
- will notice.
- It might not be bad to have one text console anyway, in case something
- happens to X.
x1:6:wait:/etc/rc.d/rc.6
# End of /etc/inittab
Les scripts systeme d’initialisation impliques sont donc principalement dans /etc/rc.d.
On ajoutera ses extensions dans le chier /etc/rc.d/rc.local lance depuis /etc/rc.d/rc.M.
NetBSD 1.0
Il s’agit d’une initialisation classique a la BSD.
Le programme init consulte /etc/rc.
On ajoutera ses extensions dans le chier /etc/rc.local.
SunOS 4.1.x.
Il s’agit d’une initialisation classique a la BSD.
On ajoutera ses extensions dans le chier /etc/rc.local.
Solaris 2.x.
Il s’agit d’une initialisation classique a la System-V. On retrouve classiquement les chiers et directories /etc/inittab, /etc/rc[012356S] et /etc/rc[0123S].d.
2.3 Bibliographie.
Le lecteur pourra se reporter aux newsgroups consacres aux di erents systemes (cf [Generalites sur les systemes abordes], page 7).
Le lecteur pourra se reporter aux articles suivants :
[AF93] leen Frisch. In the Beginning. RS/Magazine, 1993.
3 Configuration bas niveau de disques durs.
Il existe plusieurs normes de disques durs : ESDI, ST504/412, SMD, IPI, SCSI, IDE. . . Quelques unes de ces normes fonctionnent sur stations de travail. Nous mettrons l’accent ici sur les disques SCSI dans la mesure ou ils constituent la norme de facto actuellement pour les stations de travail UNIX commerciales. Cependant, devant la montee des systemes domaine public sur plateforme hardware PC, nous parlerons aussi un peu des disques a la norme IDE. Il faut aussi signaler l’abandon progessif par les constructeurs de certaines des normes (IPI, SMD. . .), tout au moins en ce qui concerne les stations de travail.
Avertissement
Les commandes qui seront decrites ci-apres sont parmi les plus dangereuses que l’on peut trouver sur un systeme car elles peuvent conduire a des pertes irreparables de chiers sur les disques durs. Il est donc recommande de consulter les pages de manuel desdites commandes avant toute manipulation. De m^eme, proceder a des backups.
There are two types of computer users in the world. . .
those that have lost data, and those that are going to.
3.1 Formattage bas niveau des disques durs.
La plupart des disques durs SCSI sont dorenavant vendus pre-formattes si bien que l’on ne
devrait plus avoir maintenant a utiliser les commandes qui suivent et qui permettent de realiser un formattage bas niveau.
Passons en revue les di erents systemes utilisant de facto des disques SCSI.
AIX version 3.2.3 et 4.1.x
Passer par l’utilitaire smit de gestion du systeme.
DEC OSF1 3.0
La commande bas niveau a utiliser est /sbin/scu ; c’est un utilitaire au niveau SCSI qui envoie la commande SCSI de formattage au disque.
DEC Ultrix 4.x
La commande a utiliser est /bin/rzdisk.
La commande /usr/etc/scu est disponible dans les versions recentes d’Ultrix (au moins 4.4).
FreeBSD versions 2.0.5 et 2.1
On peut utiliser la commande scsiformat pour formatter un disque dur une fois que
le systeme est installe et que l’on installe des disques SCSI supplementaires. Celle-ci est en fait un shell script qui fait appel a la commande bas niveau de contr^ole du bus SCSI : /sbin/scsi.
HP-UX 9.0x
La commande bas niveau est /usr/bin/mediainit.
- mediainit -v /dev/rdsk/c201d4s0 mediainit: initialization process starting mediainit: locking SCSI device mediainit: initializing media mediainit: verifying media
HP-UX 10.01
La commande bas niveau est /usr/bin/mediainit.
Attention : sur le modele K200, le bus SCSI interne est de type SCSI 2 alors que le bus SCSI externe est de type SCSI Fast Wide.
IRIX version 4.0.5 et 5.2
La commande a utiliser est /usr/bin/fx -x. Elle procede par interrogation de la carte contr^oleur du disque pour determiner le modele du disque et en deduire la methode pour le formatter.
SunOS 4.1.x
La commande a utiliser est /usr/etc/format. Elle utilise le chier /etc/format.dat qui contient les descriptions des modeles de disques.
Un chier format.dat plus complet est poste regulierement dans les news ; un URL en est ftp://ra.mcs.anl.gov/sun-managers/format.dat.
L’utilisation intercative de format ne permet pas d’entrer des vitesses de rotation de 7200 RPM. Il faut ^etre en mode batch pour y arriver.
Solaris 2.x La commande est /usr/sbin/format.
En ce qui concerne les UNIX domaine public sur hardware PC (en l’occurence ici, FreeBSD versions 2.0.5 et 2.1, Linux 1.2.x, NetBSD 1.0) , voici quelques renseignements (de la part de Rene Cougnenc, rene@renux.freenix.fr) :
Le formattage du disque est une operation bas niveau (les disques SCSI serieux sont fournis tout formates et certi es). En general, il faut envoyer une commande de for-mattage au contr^oleur SCSI, qui s’occupe de tout. C’est ce qui se passe sur SunOS, la preuve en est que si l’on ne reconstruit pas un noyau ca se termine en time-out sur les gros disques, puisque SunOS n’avait pas prevu que ca puisse durer aussi longtemps (cf section 3.6.2 [Formattage de disques SCSI 9 Go sur SunOS], page 54).
Dans le monde du hardware PC, si dans le principe c’est la m^eme chose, je ne connais pas d’OS capables d’envoyer cet ordre au contr^oleur (mais c’est s^urement faisable ou ca existe peut-^etre), car ca se passe di eremment. . .
Le contr^oleur SCSI contient tout un « moniteur » en ROM, qui permet sa con guration ainsi que toutes sortes d’operations sur les disques : formattage, veri cation, tests, re-location des bad blocs, etc. Pour acceder a ce programme, bienvenue dans le monde du
PC : selon le constructeur la methode est di erente. En general cela consiste a appuyer sur une combinaison de touches magique, juste au moment du boot. Le systeme d’ex-ploitation n’est donc pas concerne, le moniteur du contr^oleur prend la main directement et o re en general un joli programme convivial.
Sur les cartes ADAPTEC recentes, il faut taper CTRL-A par exemple. Et sur les tres
recentes ils ont prevu le cas des claviers AZERTY qui ne sont pas encore pris en compte en tant que tels par le PC a ce moment, si bien que le clavier AZERTY est vu comme un clavier QWERTY ; c’est pourquoi CTRL-Q marche aussi. Sur les plus anciennes, il faut lancer le programme « a la main », depuis le debogueur DOS. . . Si si. A condition de retrouver l’adresse magique pour faire le JUMP. En general c’est dans la doc que l’on vient juste de perdre 🙂
Sur d’autres marques, ce moniteur en ROM n’existe pas forcement et il faut utiliser un programme externe fourni par le constructeur, la plupart du temps uniquement en binaire MS-DOS.
Ca parait complique, mais bon : on ne reformate jamais un disque SCSI quand on est utilisateur de PC. D’ailleurs ils croient que c’est ce qu’ils font quand ils mettent un le-system, la comande DOS equivalente a mkfs s’appelle. . . format :-))
Moralite : le formattage bas niveau de disques durs SCSI sur du hardware PC, passe rarement par une commande UNIX mais est speci que a la carte contr^oleur SCSI.
Bien sur, ce qui est valable pour le SCSI est aussi valable pour l’IDE. On passera par la carte contr^oleur IDE pour (re)formatter un disque.
On notera l’aspect non pratique de la chose, puisque conduisant a un passage ou on ne tourne aucun OS, rendant donc la machine indisponible pendant ce temps la.
3.2 Caracteristiques bas niveau d’un disque.
La plupart des operations sur un disque (partitionnement, dep^ot d’un lesystem) necessite d’avoir des informations sur les caracteristiques « physiques » du disque, m^eme si ces informations ne correspondent plus, avec les disques SCSI, a de vraies caracteristiques de construction, comme l’explique le passage suivant :
3.3 Determination des caracteristiques bas niveau d’un disque.
Vous avez plusieurs methodes pour determiner la geometrie d’un disque :
- On peut determiner la geometrie par la notice du constructeur livree avec le disque, si votre revendeur ne s’est pas chu de vous.
- On peut determiner la geometrie par le chier systeme de description des disques.
Systeme |
Fichier de description |
DEC OSF1 3.x |
/etc/disktab |
DEC ULTRIX 4.x |
/etc/disktab |
HP-UX 9.0x |
/etc/disktab |
HP-UX 10.01 |
/etc/disktab mais obsolete |
NetBSD 1.0 |
/etc/disktab |
SunOS 4.1.x |
/etc/format.dat |
Solaris 2.x |
/etc/format.dat |
M^eme si le chier ne correspond pas a votre version de systeme, les informations qu’on y trouve peuvent vous ^etre utiles. Le probleme ici est que l’on ne trouve dans ces chiers que les disques supportes par les constructeurs.
- Le chier constructeur de description de disques est rarement a jour. On trouve par contre sur le reseau plusieurs tables de description a jour.
Systeme |
Fichier de description |
DEC OSF1 3.x |
ftp://gatekeeper.dec.com/pub/DEC/ultrix-disktabs |
DEC ULTRIX 4.x |
ftp://gatekeeper.dec.com/pub/DEC/ultrix-disktabs |
HP-UX 9.0x |
http://siihp.epfl.ch/HPUX/tools/disktab.html |
SunOS 4.1.x |
ftp://ra.mcs.anl.gov/sun-managers/format.dat |
M^eme si le chier ne correspond pas a votre version de systeme, les informations qu’on y trouve peuvent vous ^etre utiles. Contrairement au cas precedent, ces chiers contiennent des informations sur des disques non necessairement supportes par les constructeurs.
- On peut demander la geometrie du disque a la personne qui la conna^t le mieux, a savoir le disque lui-m^eme !
Pour cela, il faut pouvoir parler SCSI dans le texte, la man uvre consistant a envoyer la commande SCSI de demande de description du disque (MODE SENSE de code 0x1a).
Parfois, certains utilitaires systeme font deja cela. Parfois il faut faire appel a un programme tierce.
DEC OSF1 3.x
Utiliser la commande /sbin/scu.
# /sbin/scu
scu> set nexus bus 0 target 2 lun 0
scu> show capacity
Disk Capacity Information:
Maximum Capacity: 8410200
Block Length: 512
scu> show edt bus 0 target 2 lun 0 full
CAM Equipment Device Table (EDT) Information:
Inquiry Information: |
|
SCSI Bus ID: |
0 |
SCSI Target ID: |
2 |
SCSI Target LUN: |
0 |
Peripheral Device Type: |
Direct Access |
Peripheral Qualifier: |
Peripheral Device Connected |
Device Type Qualifier: |
0 |
Removable Media: |
No |
ANSI Version: |
SCSI-2 Compliant |
ECMA Version: |
0 |
ISO Version: |
0 |
Response Data Format: |
ANSI SCSI-2 |
Terminate I/O Process: |
0 |
Asynchronous Notification: |
0 |
Additional Length: |
129 |
Soft Reset Support: |
0 |
Command Queuing Support: |
1 |
Linked Command Support: |
0 |
Synchronous Data Transfers: |
1 |
Support for 16 Bit Transfers: |
0 |
Support for 32 Bit Transfers: |
0 |
Relative Addressing Support: |
0 |
Vendor Identification: |
QUANTUM |
Product Identification: |
XP34301 |
Firmware Revision Level: |
1051 |
HP-UX 9.0x
La commande /etc/diskinfo permet de conna^tre des informations sur la geome-trie du disque :
- /etc/diskinfo -v /dev/rdsk/c201d1s0 SCSI describe of /dev/rdsk/c201d1s0:
vendor: HP
product id: C3725S type: direct access size: 2119418 Kbytes
bytes per sector: 512 rev level: 4299
blocks per disk: 4238836 ISO version: 0 ECMA version: 0 ANSI version: 2
removable media: no
response format: 2
HP-UX 10.01
La commande /etc/diskinfo permet de conna^tre des informations sur la geome-trie du disque :
# /etc/diskinfo -v /dev/rdsk/c0t6d0
44 Guide d’administration systeme UNIX
SCSI describe of /dev/rdsk/c0t6d0:
vendor: HP
product id: C2490WD
type: direct access
size: 2082636 Kbytes
bytes per sector: 512
rev level: 4250
blocks per disk: 4165272
ISO version: 0
ECMA version: 0
ANSI version: 2
removable media: no
response format: 2
IRIX version 4.0.5 et 5.2
La commande a utiliser est /usr/bin/fx -x. Elle procede par interrogation de la carte contr^oleur du disque pour determiner le modele du disque et en deduire la methode pour le formatter.
FreeBSD versions 2.0.5 et 2.1
La geometrie du disque dur est a chee au boot de la machine (tout au moins en ce qui concerne les disques IDE).
SunOS 4.1.x
Il existe deux utilitaires.
URL ftp://ftp.cdf.toronto.edu/pub/scsiping/scsiinfo-3.1.shar
scsiinfo est capable de generer automatiquement une entree format.dat d’un disque SCSI :
# ./scsiinfo -F /dev/rsd3c
./scsiinfo: Drive claims to have strange RPM value 19780, using 3600bps.
disk_type = « EMULEX MD21/S2 ESDI » \
- ctlr = SCSI : fmt_time = 2 \
- trks_zone = 1 : atrks = 0 : asect = 1 \
- ncyl = 1595 : acyl = 2 : pcyl = 1632 : nhead = 15 \
- nsect = 54 : rpm = 3600 : bpt = 31752
partition = « EMULEX MD21/S2
: disk = « EMULEX MD21/S2
: c = 0, 1291950
ESDI » \
ESDI » : ctlr = SCSI \
URL ftp://ftp.cdf.toronto.edu/pub/scsiping/scsiping-2.0.shar
3.4 Partitionnement des disques durs.
Un certain nombre de systemes permet de partitionner un disque dur, ce qui peut ^etre vu comme
le decoupage d’un disque physique en quelques disques durs virtuels independants.
Quel est l’inter^et d’avoir des partitions ? Il est clair que cela ne reside pas dans un avantage de
nature materielle : dans la mesure ou toutes les t^etes de lecteur/ecriture sont solidaires et qu’on ne peut donc pas en dedier a certaines partitions, l’avantage n’est pas la ; de m^eme, on ne peut pas contr^oler avec certitude l’emplacement des blocs a allouer a une partition et assurer ainsi une repartition geometrique astucieuse. Bref l’inter^et est ailleurs ; avoir des partitions permet ainsi de mieux contr^oler l’utilisation du disque a plusieurs niveaux :
- Le decoupage en partitions permet d’imposer des limitations de taille a chaque partition em-p^echant ainsi une partition utilisateurs d’annexer la totalite du disque.
- Ayant cree des partitions, on peut exporter des partitions a d’autres machines sans avoir a exporter la totalite du disque.
- On peut declarer une partition comme etant consultable en lecture uniquement alors qu’une autre partition peut ^etre declaree en lecture/ecriture.
Bien s^ur, on pestera toujours lorsqu’une partition dont on a besoin est pleine alors que les autres partitions sont partiellement vides. . .
La creation de partitions est en general assez simple et ne comporte qu’un piege a eviter : faire se recouvrir des partitions. Une partition est en e et determinee par un bloc de depart et un bloc d’arrivee, la partition etant alors l’ensemble des blocs que cela determine. Certains constructeurs permettent de creer des partitions qui se chevauchent sans demander con rmation a l’utilisateur. Il faut donc se me er avec ces utilitaires la ; heureusement ils tendent a dispara^tre au pro t de logiciels ne demandant que la taille des partitions et non plus aussi les adresses bloc de debut de la partition. En cas de recouvrement de deux partitions, de graves erreurs systeme surviennent t^ot ou tard et obligent a la reinstallation des partitions avec vraisemblablement perte des informations qui y auraient ete stockees (de toute maniere, un certain nombre d’informations sont detruites des l’instant ou les erreurs apparaissent).
Le partitionnement de disques etant tout ce qu’il y a de plus non standard, chaque constructeur a sa maniere d’operer. Tous, par contre, passent par une etape de marquage du disque dite « dep^ot d’un label ».
AIX versions 3.2.x et 4.1.x
Ces versions d’AIX utilisent LVM (Logical Volume Manager). On utilisera ce systeme tres souple pour creer des partitions.
DEC OSF1 3.0
On depose un label et on decoupe le disque en partitions avec l’utilitaire /sbin/disklabel. Il utilise le chier /etc/disktab qui contient les descriptions des modeles de disques ainsi que la facon de les partitionner.
D’apres de nombreuses sources :
Digital UNIX and ULTRIX V4.0 and later can get the geometry informa-tion directly from the disk, without the need for a disktab entry. The driver supplies a default partition table. For ULTRIX and disks larger than 2 GB, the partition table will need to be customized.
On Digital UNIX to take advantage of the feature:
disklabel -wr /dev/rrz#c some-name
DEC Ultrix 4.x
La commande est /etc/chpt qui permet de changer le partitionnement des disques. Elle utilise le chier /etc/disktab qui contient les descriptions des modeles de disques ainsi que la facon de les partitionner.
D’apres de nombreuses sources :
Digital UNIX and ULTRIX V4.0 and later can get the geometry informa-tion directly from the disk, without the need for a disktab entry. The driver supplies a default partition table. For ULTRIX and disks larger than 2 GB, the partition table will need to be customized.
On ULTRIX to take advantage of the feature:
newfs /dev/rrz#c some-name
or
newfs /dev/rrz#c /dev/rrz#c
HP-UX version 9.0x
Elle permet de creer UNE partition sur le disque entier. En fait, le systeme ne permet pas, o ciellement, de partitionner les disques. Une FAQ donne la methode suivante pour cependant y arriver :
Here is a sample le which lists the sdsadmin commands to partition a disk into 2 partitions. Note that this is speci c to the M2654SA disk; your mileage may vary. The mediainit is probably not required if the vendor has formatted/veri ed the disk. It is not « supported » to partition the boot disk, and you have to go through some contortions to do it.
- SDS configuration file for this node.
- To rebuild the /u1 and /news Fujitsu M2654SA disk partitions, do:
- mediainit -v /dev/rdsk/c201d5s0
- sdsadmin -m -C /usr/local/etc/sdsadmin.config.u1news /dev/dsk/c201d5s0
- newfs -L -n -v -m 2 -i 16384 /dev/rdsk/c201d5s1 HP_M2654Su1x1-2
- newfs -L -n -v -m 2 -i 2048 /dev/rdsk/c201d5s2 HP_M2654Su1x1-2
# |
|||||
# Disk partitions: |
|||||
# 1 |
/u1 |
145xxxx 1K |
blocks |
(/dev/dsk/c201d5s1, |
/dev/rdsk/c201d5s1) |
# 2 |
/news |
55xxxx 1K |
blocks |
(/dev/dsk/c201d5s2, |
/dev/rdsk/c201d5s2) |
# – |
—– |
——- |
- 2006016 1K blocks
type M2654Su1x1-2
label u1_news
partition |
1 |
|
size |
1450000K |
|
partition |
2 |
|
size |
max |
(Thanks to Mike Petersen)
Voici une session que j’ai realisee sur un disque de marque MICROPOLIS :
- /etc/diskinfo /dev/rdsk/c201d4s0
SCSI describe of /dev/rdsk/c201d4s0: vendor: MICROP
product id: 2217-15MQ1001901 type: direct access size: 1725451 Kbytes
bytes per sector: 512
- /etc/sdsadmin -m -C /etc/partitions /dev/dsk/c201d4s0 sdsadmin: default type of « 2217-15MQ1001901x1-2 » is too long
please specify a type in the configuration file
- cat /etc/partitions
type MICROP-2217×1-2
Ajout d’un type puisque le type par defaut (calcule visiblement d’apres le product id) est trop long (16 caracteres maximum).
label lmd1_lmd2
partition 1
size 862725K
Premiere partition de taille la moitie du disque.
partition 2
size max
Seconde partition de taille le reste du disque.
# /etc/sdsadmin -m -C /etc/partitions /dev/dsk/c201d4s0
sdsadmin: can’t find disktab entry for MICROP_2217-15MQ1001901_noreserve
- cat /etc/disktab […]
MICROP_2217-15MQ1001901_noreserve|MICROP_2217T_noswap:\
Ajout des param^etres du disque. On notera le nom de l’entree, une fois de plus calculee en fonction du product id du disque.
:No swap or boot:ns#95:nt#15:nc#2372:\
:s0#1723504:b0#8192:f0#1024:\
:se#512:rm#5400:
[…]
- /etc/sdsadmin -m -C /etc/partitions /dev/dsk/c201d4s0 sdsadmin: disktab name for « lmd1_lmd2 » is HP_MICROP-2217×1-2 sdsadmin: block device file for partition 1 is /dev/dsk/c201d4s1 sdsadmin: block device file for partition 2 is /dev/dsk/c201d4s2 sdsadmin: character device file for partition 1 is /dev/rdsk/c201d4s1 sdsadmin: character device file for partition 2 is /dev/rdsk/c201d4s2
Les character et block devices /dev/dsk/c201d4s1 et /dev/dsk/c201d4s2 sont crees automatiquement. sdsadmin: lead device of « lmd1_lmd2 » is /dev/dsk/c201d4s0
- tail /etc/disktab […]
HP_MICROP-2217×1-2|HP_MICROP-2217×1-2_noreserve|HP_MICROP-2217×1-2_noswap:\
Entree ajoutee par la commande sdsadmin et qui servira lors de la creation des lesystems par newfs.
:ns#95:nt#15:nc#2372:\
:s1#863232:b1#8192:f1#1024:\
:s2#861184:b2#8192:f2#1024:\
:se#512:rm#5400:
- /etc/newfs -L -n -v -m 2 /dev/rdsk/c201d4s1 HP_MICROP-2217×1-2 /etc/mkfs -L /dev/rdsk/c201d4s1 863232 95 15 8192 1024 16 2 90 2048 Warning: 318 sector(s) in last cylinder unallocated
/dev/rdsk/c201d4s1: |
863232 sectors in 606 cylinders of 15 tracks, 95 |
sectors |
|||||||||||
883.9Mb in 38 cyl groups |
(16 c/g, 23.35Mb/g, 2048 i/g) |
||||||||||||
super-block backups (for |
fsck -b#) at: |
||||||||||||
16, |
22912, |
45808, |
68704, |
91600, |
114496, |
137392, |
160288, |
183184, |
206080, |
||||
228976, |
251872, |
274768, |
297664, |
320560, |
343456, |
364816, |
387712, |
410608, |
433504, |
||||
456400, |
479296, |
502192, |
525088, |
547984, |
570880, |
593776, |
616672, |
639568, |
662464, |
||||
685360, |
708256, |
729616, |
752512, |
775408, |
798304, |
821200, |
844096, |
- mount /dev/dsk/c201d4s1 /lmd1
- mount /dev/dsk/c201d4s2 /lmd2
- bdf
Filesystem |
kbytes |
used |
avail capacity |
Mounted on |
|
/dev/dsk/c201d6s0 |
300672 |
262956 |
7648 |
97% |
/ |
/dev/dsk/c201d4s1 |
852879 |
9 |
835812 |
0% |
/lmd1 |
/dev/dsk/c201d4s2 |
850831 |
9 |
833805 |
0% |
/lmd2 |
# /etc/sdsadmin -d /dev/dsk/c201d4s0
sdsadmin: /dev/dsk/c201d4s0 is disk 1 of « lmd1_lmd2 »
Destroy SDS configuration data for /dev/dsk/c201d4s0 (y/n)? y
HP-UX 10.01
Cette version d’HP-UX utilise LVM (Logical Volume Manager).
IRIX versions 4.0.5 et 5.2
La commande /usr/bin/fx permet de partitionner un disque via son entree repartition menu.
Le hell script /usr/sbin/Add_disk donne des renseignements sur la facon dont on ajoute un disque.
La commande /usr/sbin/prtvtoc permet de conna^tre le partitionnement d’un disque:
# prtvtoc
Printing label for root disk
- /dev/rdsk/dks0d1s0 (bootfile « /unix »)
- 512 bytes/sector
- 69 sectors/track
- 14 tracks/cylinder
- 1356 cylinders
- 4 cylinders occupied by header
- 1352 accessible cylinders
* No space unallocated to partitions
Partition |
Type |
Fs |
Start: sec |
(cyl) |
Size: sec |
(cyl) |
Mount Directory |
||
0 |
efs |
yes |
3864 |
( |
4) |
31878 |
( |
33) |
/ |
1 |
raw |
35742 |
( |
37) |
81144 |
( |
84) |
||
6 |
efs |
yes |
116886 |
( 121) |
1193010 |
(1235) |
/usr |
||
7 |
efs |
3864 |
( |
4) |
1306032 |
(1352) |
|||
8 |
volhdr |
0 |
( |
0) |
3864 |
( |
4) |
||
10 |
volume |
0 |
( |
0) |
1309896 |
(1356) |
SunOS 4.1.x
La commande /usr/etc/format permet de partitionner un disque, entre autres choses.
Solaris 2.x La commande /usr/sbin/format permet de partitionner un disque, entre autres choses.
Nous n’avons pas donne les informations a propos des systemes FreeBSD, Linux, NetBSD pour la raison que ces systemes sou rent de l’heritage du PC, si bien que la situation est compliquee. Voici quelques renseignements (de la part de Rene Cougnenc, rene@renux.freenix.fr) :
Sur les disques « Winchester », il a ete prevu par convention que les tous premiers 512 octets du disque etaient reserves a :
- Une table de partitions, qui contient 4 structures identiques permettant d’allouer 4 partitions di erentes, pour partager le disque entre plusieurs systemes d’exploi-tation, ou pour o rir 4 zones de travail di erentes a un m^eme OS, au choix. De nos jours, l’une de ces entrees peut en fait contenir un pointeur vers une autre table de partitions, c’est ce qu’ils appellent « partition etendue ». Mais bon, n’entrons pas dans le detail.
- Un bout de code machine, situe juste avant cette table de partitions. La ROM BIOS, au boot de la machine, lit ce code et lui passe le contr^ole : c’est le char-geur primaire de tout systeme d’exploitation. C’est la que chaque OS se bat pour installer son bout de code a lui en ecrasant celui du copain 🙂
Ceux fournis avec les versions d’UNIX (m^eme SCO !) sont assez gentils pour pro-poser le choix du systeme a lancer. MS-DOS, non. Il ne conna^t que lui 🙂
Cette table de partition se cree, s’ecrit et se modi e par la commande :
- /sbin/fdisk sous Linux et beaucoup d’autres *nix pour Intel ;
- FDISK sous MS-DOS.
Chapitre 3: Configuration bas niveau de disques durs. 49
Exemple sous Linux :
[root] renux:/ # /sbin/fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 64 heads, 32 sectors, 1029 cylinders
Units = cylinders of 2048 * 512 bytes
Device Boot |
Begin |
Start |
End |
Blocks |
Id |
System |
|
/dev/sda1 |
1 |
1 |
231 |
236528 |
83 |
Linux |
extfs |
/dev/sda2 |
232 |
232 |
442 |
216064 |
83 |
Linux |
extfs |
/dev/sda3 |
443 |
443 |
1029 |
601088 |
83 |
Linux extfs |
Command (m for help):
Les OS comme DOS, Windaube, OS/2, ont absolument besoin qu’un disque soit par-titionne et qu’il y ait leur nombre magique dans une des tables de partition pour fonctionner.
Linux, c’est un UNIX, hein. Il est parfaitement legal de coller un gros disque sur le bus SCSI et de le considerer comme un tres gros chier et de mettre un tar dessus, hein 🙂
La commande fdisk de Linux (certaines versions en tout cas) emet ce type d’avertis-sement parfois :
[root] renux:/ # /sbin/fdisk /dev/sdb
The number of cylinders for this disk is set to 1042.
This is larger than 1024, and may cause problems with some software.
Alors :
- On s’en che.
- Sauf dans un cas.
Les tetes, les cylindres, tout ca, c’est bidon : un disque SCSI, il adresses des blocs, et il se debrouille. C’est beau, propre et moderne. Mais il fut un temps ou le PC, c’est lui qui faisait presque bouger les t^etes en avancant le moteur pas-a-pas et en comptant les plateaux 🙂
En souvenir de cette epoque, les programmes PC (a commencer par la ROM BIOS) ne connaissent que des t^etes et des cylindres. Alors il faut leur en donner en p^ature, et le contr^oleur leur en donne des bidons, pour que ces programmes sachent acceder au disque.
Or, pour amorcer un systeme d’exploitation, il faut aller chercher le programme (char-geur secondaire ou OS complet, peu importe), le code machine correspondant. Qui se trouve quelque part sur le disque, a partir en general du tout premier secteur de la partition concernee, dite « active » (un octet ayant 0xFF comme nombre magique dans la table de partitions).
Si cela correspond a un cylindre superieur a 1024 : c’est trop loin pour les dures limitations prehistoriques de l’IBM-PC, y’a pas assez de bits pour indiquer plus a ce moment-la de l’etape de boot 🙂
Il s’en suit que si cette partition doit ^etre « bootable », il est imperatif que le noyau se trouve dans une partition dont le debut est sur un cylindre < 1024. Sinon ca ne bootera pas, et il faudra se resigner a demarrer sur disquette.
C’est tout !
Pour tout le reste, on s’en tape, Linux est beaucoup plus intellignt que MS-DOS, on lui donne un disque, il tape dans le contr^oleur disque et il l’exploite le plus naturellement du monde. Il ne demande pas ce service au code prehistorique existant dans la ROM-BIOS de l’IBM PC.
En pratique :
FreeBSD 2.1
La commande /sbin/fdisk sert a partitionner un disque dur en partitions FreeBSD, DOS ou pour d’autres systemes.
La decoupe de la partition FreeBSD en partitions au sens UNIX, se fait par la com-mande /sbin/disklabel.
Linux 1.2.x
La commande /sbin/fdisk sert a partitionner un disque dur en partitions FreeBSD, DOS ou pour d’autres systemes.
# /sbin/fdisk -l
Disk /dev/hda: 64 heads, 63 sectors, 528 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot |
Begin |
Start |
End |
Blocks |
Id |
System |
||
/dev/hda1 |
* |
1 |
1 |
208 |
419296+ |
6 |
DOS 16-bit >=32M |
|
/dev/hda2 |
209 |
209 |
273 |
131040 |
82 |
Linux swap |
||
/dev/hda3 |
338 |
338 |
528 |
385056 |
83 |
Linux |
native |
|
/dev/hda4 |
274 |
274 |
337 |
129024 |
82 |
Linux |
swap |
Extrait de la page de manuel de fdisk :
NetBSD 1.0
La commande /sbin/fdisk sert a partitionner un disque dur en partitions FreeBSD, DOS ou pour d’autres systemes.
La decoupe de la partition FreeBSD en partitions au sens UNIX, se fait par la com-mande /sbin/disklabel.
3.5 Capacites de disques durs utilisables.
Alors que les capacites des disques durs augmentent, les systemes ne permettent pas toujours de bene cier de ces nouvelles capacites. On se heurte parfois a des limites qui font que le disque ne sera pas utilise au mieux ; par exemple, SunOS 4.1.x ne permet pas de creer des partitions de plus de 2 Go. Le tableau suivant donne la taille maximale d’une partition residant sur un disque dur, taille maximale obtenue sans utiliser d’arti ce logiciel comme un Logical Volume Manager ou d’arti ce hardware comme un contr^oleur RAID. Cela veut donc dire que l’on ne considere que le probleme de creer une partition aussi grande que possible sur un disque de 9 Go (capacite actuelle pas encore tres courante mais deja disponible malgre tout).
A noter que certains systemes ne permettent la creation de lesystems de certaines tailles qu’apres l’application de patches. C’est par exemple le cas de HP-UX version 9.01 qui ne peut pas depasser le cap des lesystems de 2 Go sans un patch. Sachant que la version courante de HP-UX est la version 9.07 (le 13 janvier 1996), il vaut mieux passer a cette version du systeme plut^ot que d’appliquer un patch. . .
Il y a aussi des systemes bien penses ou il est en theorie possible de creer des lesystems tres grands mais ou l’heritage genetique du hardware emp^eche de bene cier facilement de cela. Ainsi il est en pratique impossible de creer une vraie partition de 9 Go sur Linux parce que, dixit Remy Card ,(Remy.Card@ibp.fr) :
Il y a une limitation liee au format debile des entrees de la table des partitions, parce que le debut et la n de partition sont stockes sous forme d’un triplet (head, sector, cyl) et que ce sont des ridicules unsigned char, donc on ne peut pas mettre de grandes valeurs dedans (en n, si je me souviens bien, ces trois unsigned char sont decoupes par groupes de bits et c’est un vrai bordel), si on veut rester compatible avec le partitionnement standard PC. Si on veut utiliser tout le disque, on peut quand meme creer un systeme de chier sur l’ensemble (i.e. sur /dev/sda ou /dev/sdb) et l’utiliser sans partitions.
C’est comme ca qu’a ete cree le 1er FS Ext2 de 9Go sur une becane en Australie. Il est aussi possible de magouiller pour creer des partitions tres grandes en se basant sur le fait que Linux n’utilise que les champs (secteur de debut, nombre de secteurs) qui sont codes sur 32 bits, et en laissant 0 dans (head, sector, cyl) mais tous les fdisks du monde vont gueuler 🙂 «
Dans le m^eme genre de blague materielle que la precedente, les chi res donnes ici sont valables pour des disques de donnees. Il se peut en e et que cela ne soit pas valable pour des disques systeme de boot, pour diverses raisons, comme les suivantes pour HP-UX :
3.6 Tout ce dont je n’ai jamais ose parler a propos de SCSI.
3.6.1 Numerotage SCSI de SuOS.
3.6.2 Formattage de disques SCSI 9 Go sur SunOS.
SunOS utilise un timeout de deux heures lors d’un formatage disque. Or formatter un disque de 9 Go prend un peu plus de temps que les deux heures fatidiques. Pour arriver a formatter, il faut reconstruire un noyau en modi ant la constante SD_FMT_TIME de /sys/scsi/targets/sddef.h.
3.6.3 SCSI pass-through drivers.
Le logiciel est disponible pour AIX, IRIX 4 et 5, SunOS 4.1.x, Solaris 2.x.
URL ftp://ftp.fnal.gov/pub/juke/v4_1.
3.6.4 Rea ectation de bad blocks.
HP-UX 9.0On notera la mention au chier /etc/sbtab qui contient e ectivement le resultat des commandes newfs ou mkfs, a savoir les numeros de super blocks de secours, ce qui peut ^etre pratique en cas de perte du super block par defaut.
SunOS 4.1.x
La commande /usr/etc/format permet de rea ecter des bad blocks via repair.
Solarix 2.x
La commande /usr/etc/format permet de rea ecter des bad blocks via repair.
D’apres Casper.Dik@Holland.Sun.COM :
3.7 Bibliographie.
Le lecteur pourra se reporter aux newsgroups consacres aux di erents systemes (cf [Generalites sur les systemes abordes], page 7) ainsi qu’a comp.periphs.scsi.
Le lecteur peut se reporter aux articles suivants :
[Miq93] Robert Miquel. L’environnement SCSI { Principes du bus et application aux peripheriques.
Dunod Tech, 1993.
4 Con guration de lesystems classiques.
Nous ne parlerons ici que des lesystems deposables sur un disque dur. Les autres types dispo-nibles ne seront pas abordes car trop speci ques et trop peu utilises.
Une fois qu’un disque dur est formatte et partitionne si le systeme le supporte, il reste a depo-ser la couche logicielle logique permettant de manipuler les blocs d’un disque et d’y stocker une arborescence de chiers. La structure logicielle realisant cela est un lesystem.
A l’heure actuelle, de nombreux types de lesystems sont disponibles. Les constructeurs ont fait des e orts pour ameliorer les performances de leurs lesystems, tant au niveau rapidite des
entrees/sorties qu’au niveau confort d’utilisation (meilleure abilite en cas de crash, limite de taille des chiers repoussee beaucoup plus loin). Cela dit, ces lesystems n’en restent pas moins incompatibles les uns avec les autres et le jour ou un disque, formatte sur une machine, con gure avec un type de lesystem, marchera sur une autre machine avec un systeme di erent, ce jour n’est pas encore la.
4.1 Installation d’un lesystem.
La facon d’installer un lesystem est a peu pres standard : cela consiste en general en la com-mande newfs :
La commande newfs est en fait une interface pour une autre commande plus bas niveau : mkfs.
Par defaut, la commande newfs cree un lesystem ayant les caracteristiques suivantes (c’est a
peu pres la m^eme chose sur tous les systemes) :
- block size = 8192 bytes
- number of cylinders per cylinder group in a le system = 16
- fragment size = 1024
- density of inodes = 1 inode for 2048 bytes of data space
- percentage of space reserved from normal users = 10 %
- number of tracks per cylinders = 16
On notera l’existence du chier /etc/sbtab sur HP-UX 9.0x qui contient le resultat des com-mandes newfs ou mkfs, a savoir les numeros de super blocks de secours, ce qui peut ^etre pratique en cas de perte du super block par defaut.
D’une facon plus generale, pour les autres systemes, il est interessant de conserver une trace ecrite (par exemple scotchee sur le disque) de ces adresses de blocks de facon a les avoir sous la main en cas de besoin pour un fsck.