DNS. Principe, mise en oeuvre sous Mac OS X

,
! Billet en cours de rédaction !

Version 0.1

Dans cet billet, nous abordons le principe de fonctionnement du système de noms de domaines mis en oeuvre par Internet. Les exemples s'appuient sur la version 9 de BIND dans un environnement Mac OS X.

Définition

Le DNS ou Domain Name System gère la traduction noms de machines connectées à l'Internet <-> adresses IP. Plus généralement, le DNS associe des noms facilement mémorisables à des ressources physiques ou à d'autres noms.
  • Adresses IP
  • Serveurs de courrier
  • Serveurs DNS locaux
Par exemple, le DNS établit le lien entre le site web www.wikipedia.fr et l'adresse IP 78.109.84.60, facilitant la navigation sur ce site.

Bref historique

A l'origine, le NIC (Network Information Center) administrait une simple table de correspondance contenue dans un fichier textuel HOSTS.TXT. Les administrateurs réseaux communiquaient les modifications locales par courrier électronique et récupéraient régulièrement une copie à jour du fichier par FTP. Cette méthode présentait deux inconvénients majeurs. D'une part, la charge imposée au serveur FTP augmentait avec le nombre de machines interconnectées. D'autre part, rien ne garantissait la cohérence de données dupliquées en de multiples points du réseau.

Configuration minute

Dans le cas d'un réseau de quelques postes, il est possible de déclarer les noms des machines dans le fichier de configuration /etc/hosts. Prenons l'exemple d'un réseau personnel altair.local composé d'un routeur ADSL, un NAS, un diffuseur audio et de deux netbooks.
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##

127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost

##
# Réseau local (Altaïr)
##

192.168.0.1 bellerophon bellerophon.altair.local # Routeur
192.168.0.2 tannhauser tannhauser.altair.local # NAS
192.168.0.3 box box.altair.local # SqueezeBox
192.168.0.4 mobilis mobilis.altair.local # EeePC
192.168.0.5 mini mini.altair.local # Dell Mini
Le réseau privé de classe C altair.net exploite les adresses IP réservées 192.168.0.0 à 192.168.0.255. L'interface «loopback» d'adresse 127.0.0.1 simule une liaison en boucle sur chaque hôte. Elle autorise le test et l'exploitation autonome des protocoles de classe IP.

La table de correspondance est opérationnelle de suite sous Mac OS X Leopard. Dans les versions antérieures, il faut mettre à jour la base NetInfo. La commande niload prend en charge cette opération.
sudo niload -v -m hosts . < /etc/hosts
Les demandes de traduction ne pouvant être résolues à partir des données du fichier hosts sont relayées par un routeur ADSL. Son adresse est déclarée dans le fichier /etc/resolv.conf.
nameserver 192.168.0.1
Elles sont traitées au final par les serveurs d'un FAI.

Domaines

Les «domaines» sont des regroupements logiques de machines. Ils composent un arbre.
Fraction de l'espace des domaines

Sous la racine notée ., nous trouvons les domaines de premier niveau (Top Level Domains) étiquetés arpa, com, edu, gov, int, mil, net... et des codes d'états ou de pays normalisés sur 2 lettres. Des sous-domaines sont ensuite rattachés aux feuilles de l'arbre. Deux noeuds issus d'un même père ne peuvent porter la même étiquette. Le nom complet d'un domaine («Fully Qualified Domain Name») est la concaténation des étiquettes rencontrées sur le plus court chemin menant du noeud considéré à la racine. Par exemple, linuxmag-france.org est un domaine dÈrivant de org. Finalement, les machines sont nommées relativement au domaine auxquelles elles appartiennent. Ainsi, smtp.google.org désigne le serveur de courrier du géant Google.

Zones

Un domaine X englobe l'arbre dont la racine porte cette étiquette. Un domaine X peut être découpé en zones.
Découpage de l'espace des domaines en zones

Chaque zone constitue un espace connexe.

Un système distribué

Les serveurs de noms forment une base de données distribuée. Ils disposent d'enregistrements de ressources («ressource records») précisant les correspondances noms <-> adresses des machines rattachées aux zones qu'ils servent et díautres pointant vers les zones qu'ils n'administrent pas directement.

Recherche de noms

Dans le pire des cas, une requête de recherche de nom («name lookup») est adressée à un serveur situé à la racine puis propagée en cascade vers un serveur de premier niveau, de deuxième niveau... jusqu'à atteindre un serveur stockant dans ses tables la ou les correspondances recherchées. Ce principe de délégation règle les problèmes exposés en début d'article. La charge est répartie sur de multiples serveurs. Chaque serveur a autorité sur un nombre limité d'informations, ce qui en améliore la cohérence.

Recherche inverse

La recherche inverse («reverse lookup») remonte d'une adresse IP au ou aux noms de la machine associée. Cette procédure sert par exemple à restreindre l'accès à des services Internet. Par exemple, certains sites FTP interdisent le chargement du logiciel de cryptographie PGP depuis des domaines rattachés à des pays interdisant l'importation de
ce type de technologie. Les networks américains limitent la diffusion de séries tv au continent américain. La recherche inverse reprend les mécanismes employés lors de recherches directes. On adjoint à une adresse a.b.c.d un suffixe in-addr.arpa sous cette forme : d.c.b.a.in-addr.arpa. Par exemple, 212.198.253.142 devient 142.253.198.212.in-addr.arpa. On procède ensuite à une résolution classique.

Modes itératif, récursif

Il existe deux modes d'interrogation des serveurs. En mode récursif, le serveur interrogé prend en charge les appels à d'autres serveurs nécessaires pour résoudre la recherche. En mode itératif, il fournit l'information la plus détaillée dont il dispose, le programme client prenant en charge l'appel à d'autres serveurs. Un serveur de noms peut refuser d'honorer les requêtes récursives. C'est le cas des serveurs de premier niveau très sollicités.

Cache

Les enregistrements consultés sont stockés dans un cache volatile afin d'améliorer les temps de réponse. Les recherches en profondeur depuis la racine sont généralement évitées.

Utilitaire dig

Nous supposerons que vous disposez d'un accès Internet convenablement configuré. L'utilitaire dig (domain information groper) est un outil d'interrogation des serveurs de noms (1). A titre d'exemple, recherchons l'adresse IP d'un des serveurs SMTP Gmail. Nous obtenons díun serveur de noms mis à disposition par un fournisseur d'accès Internet la liste des serveurs à la racine puis cheminons de serveur en serveur jusqu'à obtention de la réponse.
$dig +nocmd +noquestion +nostats com
$dig @a.gtld-servers.net +nocmd +noquestion +noadditional +nostats gmail.com
$dig @ns1.google.com +nocmd +noquestion +noadditional +nostats smtp.gmail.com
$dig @a.l.google.com +nocmd +noquestion +noadditional +nostats gmail-smtp-msa.l.google.com

Autorité

Les réponses se distinguent par leur source. Un serveur maître fait autorité sur les données d'un nombre limité de zones («authoritative answers»). Un serveur secondaire offre une copie de sécurité des données d'un serveur maître. Chaque serveur cache des données obtenues d'autres serveurs («non authoritative answers»).

Cache Mac OS X

Mac OS X intègre un mécanisme de cache des requêtes DNS.  La commande dscacheutil produit des statistiques sur ces requêtes (OS X >= 10.5.2).
$dscacheutil -statistics
Overall Statistics:
Average Call Time - 0.529297
Cache Hits - 2018
Cache Misses - 2701
Total External Calls - 2855

Statistics by procedure:

Procedure Cache Hits Cache Misses External Calls
------------------ ---------- ------------ --------------
getpwnam 64 10 74
getpwuid 595 22 617
getgrnam 25 6 31
getgrgid 1 1 2
getfsent 0 0 6
getnetbyaddr 0 2 2
getaddrinfo 0 0 1967
getnameinfo 42 94 136
gethostbyname 1222 762 18
gethostbyaddr 0 2 2
Les réponses en cache sont retournées directement («cache hits»). Les autres sont obtenues de la hiérarchie de serveurs DNS («cache misses»).

Configurer BIND

BIND (Berkeley Internet Domain Name Distribution) est une suite d'utilitaires dédiés à la gestion de domaines Internet (2). L' activation du service repose sur le démon launchd. Editez le fichier /System/Library/LaunchDaemons.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/
PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<true/>
<key>Label</key>
<string>org.isc.named</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
...
</dict>
Changez la propriété <Disabled> de <false/> à <true/>. Le service sera exécuté automatiquement à chaque démarrage du système. Editez le fichier général de configuration du démon named, /private/etc/named.conf.
//
// Include keys file
//
// include "/etc/rndc.key";

// Declares control channels to be used by the rndc utility.
//
// It is recommended that 127.0.0.1 be the only address used.
// This also allows non-privileged users on the local host to manage
// your name server.

//
// Default controls
//
controls {
inet 127.0.0.1 port 54 allow {any;}
/* keys { "rndc-key"; } */ ;
};
...
Commentez les sections marquées en vert. Testons maintenant le service.
$launchctl load org.isc.named.plist
$launchctl start org.isc.named
Le listage des processus doit confirmer l'activité du démon named.
$ps ax | grep "/\named"
15 ?? Ss 0:00.75 /usr/sbin/named -f

Fichier named.conf

Le fichier /private/etc/named.conf indique la localisation des fichiers de configuration associés aux zones sur lesquelles nous fournissons de l'information.
...
options {
directory "/var/named";
};

// a caching only nameserver config

zone "." IN {
type hint;
file "named.ca";
};

zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};

logging {
category default {
_default_log;
};

channel _default_log {
file "/Library/Logs/named.log";
severity info;
print-time yes;
};
};
Détaillons la configuration. Comme vous le constatez, les informations sont présentées à la C.

Options

Les chemins des fichiers de configuration secondaires sont définis relativement au répertoire /var/named.

Journal

Le journal /Library/Logs/named.log enregistre l'activité du démon named.

Zone .

La zone . correspond à la racine de l'espace des domaines. Le fichier cache named.ca contient une liste initiale de serveurs ayant autorité sur les domaines de premier niveau (edu, com...). Une liste à jour sera obtenue d'un des serveurs valides lors du lancement du démon. Extrait du fichier named.ca.

; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
;
; formerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201
;
; formerly C.PSI.NET
;
...
Un domaine noté x. est pleinement qualifié. Dans un contexte définissant un domaine par défaut y, x qualifie le domaine x.y.. Le DNS compte actuellement 13 serveurs à la racine. Vous devriez en charger une copie à jour régulièrement. Cependant, tout fonctionnera correctement avec un fichier relativement ancien. En effet, lors de l'initialisation, une copie à jour est obtenue dynamiquement d'un des serveurs de premier niveau valides. Le mot-clef hint identifie cet
enregistrement spécial.

Obtention d'une copie à jour

L'utilitaire dig va nous permettre de récupérer une copie à jour du fichier d'initialisation du cache.
$ su root
# cp /private/var/named/named.ca /private/var/named/named.ca.sav
# dig @a.root-servers.net . ns > /private/var/named/named.ca

Zone 0.0.127.in-addr.arpa

La zone 0.0.127.in-addr.arpa associe nom de la machine locale et adresse de l'interface loopback. L'information est ici stockée dans le fichier named.local dont voici le contenu.


@ IN SOA localhost. root.localhost. (
1997022700 ; Serial ; Numéro de série
28800 ; Refresh ; Rafraîchissement (8 h)
14400 ; Retry ; Nouvelle tentative (4 h)
3600000 ; Expire (41 j)
86400 ) ; Minimum ; Durée de vie (1 j)
IN NS localhost.

1 IN PTR localhost.

Ressources

IN identifie les enregistrements de type Internet. SOA est l'acronyme de «Start Of Authority». Ici, nous précisions que la machine locale dispose des informations les plus fiables sur le domaine 0.0.127.in-addr.arpa. root@localhost est l'adresse de courrier électronique du responsable technique à contacter en cas de dysfonctionnement. Les durées en secondes servent à la synchronisation des serveurs esclaves et à définir la durée de vie («Time To Live») des données dans le cache des clients. Une valeur faible favorise une propagation rapide des modifications, ce au prix d'une charge système plus importante. A l'inverse, une valeur élevée implique une propagation plus lente. NS indique les serveurs de noms de cette zone. L'enregistrement PTR la correspondance machine 1 du réseau 127.0.0 <-> localhost.

Notez la présence du . terminal.

Premiers tests

La consultation du journal confirme la bonne exécution du démon named.

$ more /Library/Logs/named.log
25-Mar-2009 21:21:29.970 zone 0.0.127.in-addr.arpa/IN: loaded serial 1997022700
25-Mar-2009 21:21:29.972 zone localhost/IN: loaded serial 42
25-Mar-2009 21:21:29.973 running

Le démon est actif, la zone localhost chargée. Interrogeons localement notre nouveau serveur DNS.

dig @127.0.0.1 +nocmd +noquestion +noadditional 0.0.127.in-addr.arpa
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59219 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; AUTHORITY SECTION: 0.0.127.in-addr.arpa. 86400 IN SOA localhost. root.localhost. 1997022700 28800 14400 3600000 86400 ;; Query time: 17 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Apr 6 11:04:10 2009 ;; MSG SIZE rcvd: 88

Gérer un petit domaine

Architecture

Nous allons enrichir la configuration de base en gérant le petit domaine privé de classe C altair.local. Les machines suivantes sont disponibles :

NomAdresseDescription
bellerophon 192.168.0.1 Routeur ADSL Netgear
tannhauser192.168.0.2NAS Synology
box192.168.0.3Platine audio Logitech
delly192.168.0.4Netbook Dell
Tiny192.168.0.5Netbook Asus


Notre domaine n'est pas rattaché à l'espace général des noms de domaines. Dans le cas contraire, nous aurions du le déclarer et obtenir son rattachement à un domaine de niveau supérieur. Nous introduisons deux zones supplémentaires :

zone "altair.local" in {
type master;
file "altair.local";
};

zone "0.168.192.in-addr.arpa" in {
type master;
file "192.168.0";
};

Zone altair.local

Cette zone décrit les correspondances noms -> adresses.


altair.net. IN SOA bellerophon.altair.net. root.altair.net. (
1 ; NumÈro de sÈrie
3600 ; Rafraîchissement (1h)
600 ; Nouvelle tentative (10 mn)
604800 ; Expiration (7j)
86400 ) ; Durée de vie (1j)

IN NS bellerophon.altair.net.

bellerophon IN A 192.168.0.1
robby IN A 192.168.0.2
krell IN A 192.168.0.3

localhost IN A 127.0.0.1

La ressource A précise une adresse.

Zone 0.168.192.in-addr.arpa



Cette zone décrit les correspondances adresses -> noms.

0.168.192.in-addr.arpa. IN SOA bellerophon.altair.net.
root.altair.net.
1 ; NumÈro de sÈrie
3600 ; RafraÓchissement (1h)
600 ; Nouvelle tentative (10mn)
604800 ; Expiration (7j)
86400 ) ; DurÈe de vie (1j)

IN NS bellerophon.altair.net.

1 IN PTR bellerophon.altair.net.
2 IN PTR robby.altair.net.
3 IN PTR krell.altair.net.

Ajout d'alias

Les alias facilitent l'affectation de plusieurs noms à une même machine. Tannhauser héberge des serveurs FTP, web et de courrier. Nous définissons les alias suivants dans la zone
altair.local.


; Alias

mail CNAME tannhauser
ftp CNAME tannhauser
www CNAME tannhauser

Lors d'une résolution portant sur un alias, le terme droit est substitué au terme gauche et une nouvelle résolution relancée.

Passerelle de courrier

Les informations du DNS ne se limitent pas à la traduction. La ressource MX («Mail eXchanger») indique le nom et la priorité du serveur de courrier affecté à une une zone. Tannhauser est notre passerelle.

; Passerelle courrier

altair.net. IN MX 10 tannhauser



Soon...

Enjoy !

X Lossless Decoder - Convertisseur audio lossless (Mac OS X)

,
Version 1.0

X Lossless Decoder (XLD) est un convertisseur audio combinant un utilitaire en ligne de commande (xld) et un frontal graphique. Basé sur la bibliothèque C libsndfile,  XLD supporte les formats audio non compressés suivants :
  • AIFF (Audio Interchange File Format)
  • Apple Lossless
  • FLAC (Free Lossless Audio Codec)
  • Monkey's audio
  • PCM (Pulse Code Modulation)
  • WAV/PCM (WAVform audio format)
  • TTA (True Audio Codec)
  • WavPack
XCD sait également encoder dans les formats compressés suivants :
  • MP3 (encodeur LAME)
  • Ogg Vorbis (encodeur aoTuV)
Doté d'un module d'extraction des pistes audio de CD («ripper»), XCD s'acquitte parfaitement des tâches quotidiennes de l'amateur de musique : la numérisation de CD et la conversion de contenus audio échangés en ligne.

XLD - Conversion FLAC  > MP3 à la volée

Petite histoire de Linux

,
Rédigez des programmes qui remplissent correctement une tâche simple. Rédigez des programmes qui collaborent. Rédigez des programmes qui gèrent des flots de texte, car ce type d'interface est universel.
Douglas McIlroy à propos d'UNIX
Ce billet retrace le chemin qui a conduit des premières briques posées par Linus Benedict Torvalds à un système d'exploitation robuste et polyvalent placé au cœur d’équipements informatiques variés, du système embarqué au supercalculateur scientifique.

Genèse de Linux

Voici la traduction d'un message adressé par un jeune étudiant en informatique de l'Université d'Helsinki aux lecteurs du forum de discussion comp.os.minix.
Bonjour à tous les utilisateurs de MINIX. Je réalise un système d'exploitation (libre) pour les clones AT à base de processeurs 386 et 486 (un simple loisir, il n'aura ni la dimension ni le côté professionnel de GNU). L'idée mijote depuis avril et commence à prendre forme. J'aimerais vos impressions quant aux aspects positifs et négatifs de MINIX, car mon OS s’en inspire (même organisation physique du système de fichiers par exemple. J'ai déjà porté bash (1.08) et gcc (1.40). Le tout semble fonctionner. J’aurai quelque chose d'exploitable d'ici à quelques mois et j'aimerais donc connaître les fonctionnalités succeptibles d'intéresser le plus grand nombre. Toutes les suggestions sont bienvenues, mais je ne promets pas que je les programmerai :-)

Linus (torvalds@kruuna.helsinki.fi)
C’est Linus Benedict Torvalds qui s’exprimait ainsi, ce soir du 25 août 1991. MINIX est un clone d'UNIX, développé par le Professeur Andy Tanenbaum, dans le cadre de cours universitaires. MINIX fonctionne essentiellement sur ordinateurs compatibles PC. Ses besoins en mémoire sont raisonnables et il s’accomode de matériels obsolètes. MINIX est sans conteste un excellent projet pédagogique, très bien documenté, mais il reste cantonné à ce domaine. Les périphériques pris en charge sont trop peu nombreux pour lui ouvrir les portes du monde professionnel (1).

De MINIX à Linux

MINIX allait servir de plate-forme de développement initiale pour Linux. Le code source de la version 0.01 de Linux était compilé sous MINIX, au moyen d'un compilateur C libre. Linux s'appuyait alors sur le système de fichiers de MINIX. La version 0.11 sortira en décembre 1991. Elle est dès lors indépendante de MINIX, un utilitaire prenant en charge le formatage des disques. Une version 1.0 plus aboutie verra le jour en 1993.

L'essor des distributions

Une distribution regroupe un noyau (kernel) et un ensemble cohérent d'utilitaires nécessaires à l'exploitation effective de Linux. Il s'agit principalement d'outils conçus dans le cadre du projet GNU (GNU is Not UNIX) coordonné par la FSF (Free Software Foundation). Un assistant d'installation assure le formatage des disques, la création d'un système de fichiers et la copie des programmes nécessaires au démarrage des sessions et au travail quotidien des utilisateurs. La simplification du processus d'installation contribue à la popularité de Linux auprès d'un public néophyte. Notez qu'en toute rigueur, «Linux» devrait être son asseption devrait être nommé «ensemble GNU/Linux».

Patrick Volkerding fut l'un des premiers à proposer une distribution nommée Slackware Linux, et ce dès 1993. Slackware Linux bénéficie d'une conception modulaire, les logiciels étant regroupés par thèmes dans des archives compressées. Slackware Linux connaît toujours de nombreux adeptes, en dépit de l'explosion de l'offre.

Une grande diversité

Il existe aujourd'hui une myriade de distributions de GNU/Linux couvrant l'essentiel des architectures matérielles du marché (2). Dérivées des distributions historiques du marché (Debian, Slackware, Suse, Red Hat), elles se distinguent par leur assistant d'installation, le format des paquets logiciels (principalement deb et rpm) ou une orientation particulière (éducation, multimédia,  sécurité, routage...).

Timeline distributions Linux

Ces distributions peuvent être téléchargées gratuitement sous forme d'images ISO puis gravées ou copiées sur un support de mémoire flash pour installation ou exécution directe dans le cas des «live CD» (3).

Intégration graphique avec X Window

La variante XFree86 du système X Window développé par le MIT (Massachusets Institute of Technology), apporte les primitives nécessaires à une utilisation graphique de Linux en mode client/serveur. Divers gestionnaires de fenêtres s'appuient sur XFree86. Les bureaux GNOME (GNU Network Object Model Environment) et KDE (K Desktop Environment) regroupent des outils bureautiques et d'administration partageant une apparence et des modes d'action communs. Ils évitent dans un premier temps le recours à un mode console riche mais complexe.

Les clés d'un succès

Au-delà même de la qualité des fondations posées par Linus Torvalds, la réussite de Linux repose sur plusieurs points clés.

  • Internet a favorisé la diffusion rapide du code et de la documentation. Loin d'un modèle de développement centralisé, Linux est le fruit de la collaboration de nombreux programmeurs à travers le monde. Le développement s'organise spontanément en sous-ensembles logiciels répondant aux besoins particuliers de leurs initiateurs.

  • L'adoption de la licence GNU GPL (GNU General Public Licence) garantit la libre diffusion du code et de ses évolutions. Celui-ci ne saurait être capté dans une logique propriétaire. Eric S. Raymond confronte, dans un texte intitulé «La cathédrale et le bazar», le modèle de développement centralisé de l'industrie informatique et celui, ouvert, qui a inspiré Linux (4).

  • Les outils de l'environnement GNU autorisent le développement rapide d'applications relativement portables. Ils incluent entre autres des compilateurs C et C++ et un utilitaire facilitant la compilation de projets de grande ampleur.

  • N'oublions pas finalement l'abondance de la documentation créée par les passionnés de Linux et des logiciels libres. La communauté Linux concentre de nombreux utilisateurs avertis, aptes à vous assister lors de vos premiers pas. L'offre des sociétés de conseil s'étoffe également à destination des entreprises.

Les racines UNIX

UNIX et ses clones combinent des caractéristiques originales qui ont inspiré la conception d'autres systèmes d'exploitation. L'objectif premier d'UNIX était le partage de ressources informatiques onéreuses. En 1970, un mini-ordinateur PDP-11 fabriqué par Digital Equipment était commercialisé plusieurs dizaines de milliers de dollars US. Le temps processeur devait donc être partagé entre plusieurs projets. La solution fondée sur le traitement par lots de cartes perforées manquait cruellement de souplesse. Le projet Multics (Multiplexed Information and Computing Service) lancé en 1965 par le MIT, les laboratoires Bell et General Electrics n’aboutira pas à un système d’exploitation économiquement viable.

Naissance d'UNIX

Thomson et Ritchie portant UNIX sur PDP-11

Ken Thompson, Dennis M. Ritchie et des transfuges du projet Multics décident de s’impliquer dans un projet alternatif au sein des laboratoires Bell. Une ébauche d’UNIX écrite en assembleur pour ordinateurs PDP-7 voit le jour en 1970, le portage sur PDP-11 a lieu l’année suivante. Elle sera réécrite dans un langage portable dès 1973 : le langage C. Les fondations étaient posées (5).

Des caractéristiques originales

«The UNIX Time-Sharing System», rapport rédigé par Ken Thompson et Dennis Ritchie, décrit les caractéristiques originales d'UNIX (6).

  • UNIX bénéficie d'un système de fichiers structuré par le biais de répertoires, et intégrant de manière transparente des dispositifs de stockage variés, du disque dur à la sauvegarde sur bandes.

  • UNIX est par essence un système d’exploitation multi-utilisateurs. Un numéro unique identifie chaque utilisateur et détermine en conséquence ses droits d'accès aux ressources du système. L'administrateur bénéficie d’un accès privilégié à l’ensemble de ces ressources.

  • UNIX est également un système multitâche, articulé autour d'un noyau qui réglemente l'exécution des programmes et l’accès aux ressources du système. Les tâches s'exécutent concurremment dans des espaces mémoire cloisonnés. Le mode protégé garantit qu'un programme défaillant ne compromettra pas l'ensemble du système.

  • Une bibliothèque système et une myriade d'utilitaires gravitent autour du noyau. Ils autorisent le développement de programmes C, l'administration du système ou l'utilisation quotidienne en mode graphique. Cette modularité exemplaire constitue un des paradigmes essentiels d'UNIX.

Timeline UNIX

Et la lumière fût

UNIX a évolué au fil des décennies vers une architecture fortement orientée réseau. La baisse des coûts des matériels aidant, il devenait intéressant de partager des informations techniques entres laboratoires convenablement équipés. Un modèle client/serveur fondé sur des normes ouvertes s'imposera progressivement. Le protocole TCP/IP, brique fondamentale de l'Internet moderne, intègre les distributions UNIX BSD (Berkeley Software Distribution) dès 1977. Linux se place dans la lignée de ces systèmes historiques.

Windows ou Linux ?

Un discours sectaire laisse parfois entendre que Linux serait le passage obligé de tout utilisateur de micro-ordinateur averti. La réalité est plus nuancée. Windows s'acquitte des tâches bureautiques ordinaires, et constitue une plate-forme de jeu convaincante. En revanche, si vous travaillez sur des données professionnelles, si vous vous connectez fréquemment au Net, ou si vous souhaitez administrer un serveur Internet ou Intranet, envisagez sérieusement le choix de Linux, un environnement robuste riche d'une panoplie très complète d'outils réseau.

Notes

1) Minix 3 est plus particulièrement destiné aux systèmes embarqués.
3) Linux Live CD recense les distributions amorçables sans formatage de l'ordinateur.
4) Manifeste «La cathédrale et le bazar».
5) Les laboratoires Bell consacrent un dossier à l'histoire d'UNIX.

NAS Synology. Mac OS X entre dans la danse.

,
Version 1.0

L'émergence du marché des netbooks montre l'intérêt du public pour des portables de puissance moyenne mais néanmoins aptes à accomplir les tâches quotidiennes telles le surf ou la bureautique. La capacité de stockage des netbooks varie le plus souvent de 8 Go (disques flash SSD) à 160 Go (disques dur 2.5 pouces). Une solution élégante pour contourner cette limitation est de leur adjoindre un NAS (Network Attached Storage). Abandonner le paradigme de la machine universelle coûteuse et promise à une obsolescence rapide en faveur de celui d'une galaxie de machines spécialisées de coût moindre.

Samba

Les NAS Synology supportent plusieurs protocoles de partage de fichiers chapeautant la suite de protocoles TCP/IP :
  • AFP (Apple Filesharing Protocol)
  • NFS (Network File System)
  • CIFS (Common Internet File System)
CIFS est le protocole de partage de ressources réseau de Microsoft dérivé du protocole SMB développé par IBM. Il est géré par Mac OS X et plus généralement par les divers environnements Unix par le biais du logiciel libre Samba. Les NAS Synology proposent un mécanisme de corbeille en conjonction avec le protocole CIFS.  

Activation du service

Accédez au module d'administration web de votre NAS Synology à l'adresse http://:5000 hôte est le nom qualifié où l'adresse IP du NAS (une redirection sécurisée sur le port 5001 aura lieu si vous avez activé cette option). Connectez-vous à votre compte admin.



Rendez-vous en section Services réseau > Win/Mac OS


Choisissez un nom de Groupe de travail. Cochez la case Activer la corbeille CIFS.

Corbeille CIFS

La corbeille CIFS fonctionne très simplement. Les fichiers placés dans la corbeille sont déplacés dans un sous-dossier #recycle créé au point de suppression. Les fichiers sont effectivement supprimés  du disque lors de la suppression du dossier #recycle ou de son contenu. Alternativement, cliquer le bouton Vider la corbeille CIFS vide globalement la corbeille.

Montage de volumes SMB au boot

Les NAS Synology exécutent un démon SMB smbd  en charge du partage des données hébergées. La configuration est lue dans un fichier /usr/syno/etc/smb.conf dont voici un extrait :

[global]
socket options=TCP_NODELAY
workgroup=OHM
realm=*
printing=lprng
winbind enum groups=yes
passdb backend=smbpasswd
idmap gid=96000-196000
security=user
idmap uid=10000-110000
printcap name=/usr/syno/etc/printcap
load printers=yes
winbind enum users=yes
[home.meo]
invalid users=nobody,nobody
valid users=nobody,meo,admin,nobody
comment="Mes documents"
path=/volume1/home.meo
guest ok=yes
browseable=yes
ftp write only=no
read list=nobody,nobody
write list=nobody,admin,meo,nobody
writeable=yes
[video]
invalid users=nobody,nobody
valid users=nobody,meo,admin,@members,nobody
comment="Mes vidéos"
path=/volume1/video
guest ok=yes
browseable=yes
ftp write only=no
read list=nobody,@members,meo,nobody
write list=nobody,admin,nobody
writeable=yes
A chaque dossier partagé créé à l'aide du gestionnaire Synology correspond une section [dossier] du fichier de configuration qui reprend les privilèges des différents utilisateurs. Considérons deux dossiers types :
  • home.meo : bureau déporté d'un netbook équipé d'un disque SSD
  • video : diverses vidéos DIvX
L'utilisateur admin dispose de droits d'accès en lecture et écriture sur ces deux dossiers. Nous souhaitons qu'ils soient montés à l'ouverture de session de l'utilisateur principal de Mac OS X.

Montage de volumes SMB à l'ouverture de session

Nous souhaitons monter automatiquement les volumes home.meo et video à chaque ouverture de session. Pour ce faire, nous ouvrons la boîte de dialogue Aller > Connexion au serveur du Finder.


Nous renseignons l'Adresse du serveur SMB smb:// puis cliquons sur le bouton Connecter. Le NAS requiert une authentification. 


Nous optons pour le compte admin lequel dispose de droits d'accès en lecture et écriture sur les dossiers à partager. Nous cochons la case Garder ce mot de passe dans mon trousseau de sorte que le mot de passe soit mémorisé de façon sécurisée dans le trousseau d'accès. La liste des dossiers partagés du NAS s'affiche.


Nous choisissons les volumes à monter. Ils apparaissent sur le bureau. Ouvrons finalement la section Comptes du panneau de Préférences système. Déclinons notre mot de passe (clic sur l'icône verrou). Sélectionnons l'onglet Démarrage puis faisons-y glisser les icônes des volumes réseau.


Les volumes seront montés automatiquement à chaque ouverture de session.

Méthode alternative

La méthode précédente présente quelques limitations. Une fenêtre de finder s'ouvre pour chaque montage. Un message d'erreur apparaît si le NAS n'est pas accessible lors de l'ouverture de session. Un script AppleScript mount_nas.scpt règle ces deux problèmes. 
# mount_nas v1.0
#
# Monte une liste de volumes réseau SMB

set SMB_SERVER to "192.168.0.2" -- IP ou nom qualifié NAS
set SMB_USER to "admin" -- Login NAS
set SMB_PASSWORD to "******" -- Mot de passe NAS
set SMB_VOLUMES to {"home.meo", "video"} -- Liste des volumes
set SMB_TIMEOUT to 30 -- Délai expiration ping

# Teste si le serveur est accessible

set ping to false
set t to 1
repeat until ping or t > SMB_TIMEOUT
set r to (do shell script "ping -c 1 -t 1 " & SMB_SERVER & " | grep transmitted")
if word 4 of r is "1" then
set ping to true
else
set t to t + 1
end if
end repeat

# Montage des volumes

if ping then
repeat with vol in SMB_VOLUMES
mount volume "smb://" & SMB_USER & ":" & SMB_PASSWORD & "@" & SMB_SERVER & "/" & vol
end repeat
end if
Le script vérifie la présence du NAS sur le réseau (commande shell ping) puis monte les volumes. Une temporisation prend en compte le délai d'établissement de la connexion réseau. 
Adaptez la valeur des paramètres SMB_* puis compilez le script au format application.



Placez-le dans les éléments lancés au démarrage.

Accès aux vidéos partagées depuis Front Row

Front Row ne permet pas de configurer la source des vidéos qui sont systématiquement recherchées dans le dossier Movies de l'utilisateur. Y créer un alias du volume video établit l'accès aux vidéos stockées sur le NAS.


Enjoy !

Libérer de l'espace disque sur netbook (Mac OS X)

,
Version 1.0

Ce billet intéressera au premier chef les utilisateurs de hackintoshs équipés de disques SSD de faible capacité (8 ou 16 Go). Leopard occupe 6 à 7 Go par défaut. Ce qui laisse peu de place pour les applications complémentaires et les données de l'utilisateur. Quelques manipulations simples permettent de libérer 1 à 2 Go d'espace disque. Il reste évidemment possible d'étendre cette capacité via une carte SD ou en configurant un accès à un NAS (Network Access Storage).

Obtenir l'espace disque disponible sur le disque de démarrage

Cliquez sur l'icône du disque de démarrage située sur le bureau. Pressez la combinaison de touche Pomme + I.


Une fenêtre présente capacité formatée du disque (ici 7.5 Go) et espace libre (1.1 Go).

Suppression de fichiers de ressource

L'utilitaire open source Monolingual supprime des ressources systèmes facultatives de votre système.
  • Fichiers de localisation
  • Méthodes de saisie clavier
  • Code exécutable
La fenêtre principale de Monolingual comporte trois onglets. L'onglet Languages permet de supprimer les ressources associées aux diverses langues gérées par les applications multilingues. Elles sont typiquement regroupées dans des dossiers d'extension lproj inclus dans les paquets des applications.


Monolingual conserve par défaut les langues sélectionnées dans la rubrique International du panneau de Préférences système. Supprimez cet ensemble hors le français et l'anglais. Il est important de conserver l'anglais, certaines applications n'étant pas traduites dans la langue de Molière. L'onglet Input menu permet de supprimer les méthodes de saisie de caractères requises pour certaines langues non latines.


Conservez l'ensemble AppleKeyboardsLayout. Apple a introduit un format d'application "universel" combinant code exécutable pour plate-formes PowerPC et Intel. L'onglet Architectures permet de supprimer le code étranger au processeur embarqué.

L'architecture active est conservée par défaut.

Suppression d'applications et de widgets

Supprimez les applications (dossier /Applications) et les widgets (dossier /Library/Widgets) dont vous n'avez pas l'usage.


Enjoy !