Table des matières

Configurer un client sans disque dur

Auteur : Olivier BOYER - oboyer () ajoute ! org

Mots clés

diskless, NetBSD, OpenBSD, netboot, pxe, pxeboot, tftp, dhcp, nfs, XFree86

Introduction

Ce document présente comment configurer un client NetBSD pourqu'il démarre et fonctionne sans disque dur (client diskless). L'idée finale est d'obtenir un lecteur MP3/DVD/DIVX réseau à partir d'un ancien ordinateur de type Pentium III.

Pourquoi retirer le disque dur ? Tout d'abord pour réduire le bruit de ce lecteur, et aussi pour simplifer son utilisation. La machine démarre en pressant le bouton de l'alimentation, et s'eteint de la même manière.

Présentation de la maquette

  • Un serveur central sous OpenBSD 3.9
  • Un client sans disque dur sous NetBSD 3.0.1
  • L'installation des fichiers du client sur le serveur s'effectue dans le répertoire /diskless
  • Le réppertoire /diskless est exporté par NFS. Pour que ce répertoire (et seulement ce répertoire) soit exporté par NFS, il doit être un point de montage d'une partition dédiée. Sinon, vous devrez exporter le point de montage de la partition contenant le répertoire /diskless.
  • Configuration du client :
    • nom : player.leaves.org
    • adresse IP : 192.168.1.89
    • interface réseau : em0
    • adresse Mac : 00:11:22:33:44:55
    • route par défaut : 192.168.1.1
    • adresse IP du serveur de noms : 192.168.1.1
  • Configuration du serveur :
    • nom : smoking.leaves.org
    • adresse IP : 192.168.1.1
    • interface réseau : xl0

Note

Toutes les commandes présentées ici, sont à exécuter, sauf mention contraire, en tant qu'administrateur de la machine.

Pré-requis

  • Le système serveur doit être installé et fonctionnel
  • Le BIOS et la carte réseau du client doivent supporter le démarrage via PXE
  • Le client sans disque et le serveur de démarrage doivent être sur le même réseau IP
  • La partition /diskless (qui contient l'installation du client) sur le serveur doit être d'au moins un giga octets.

Services à configurer sur le serveur

Voici les services mis en oeuvre :

  • dhcpd : attribue l'adresse IP aux clients, et, si besoin, l'adresse IP du serveur tftp ainsi que le chemin du fichier à télécharger par tftp.
  • tftpd : serveur pour le protocole ipv4 Trivial File Transfer Protocol. Ce protocole est utilisé pour lors du démarrage d'un client sans disque dur (diskless). Ce serveur est, en général démarré par le super serveur inetd.
  • nfsd : permet l'accès aux données par le réseau comme si elles étaient locales sur le client.

Télécharger les fichiers nécessaires

Procédez comme suit :

# cd /tmp
# ncftpget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.0.1/i386/binary/sets/base.tgz
# ncftpget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.0.1/i386/binary/sets/etc.tgz
# ncftpget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.0.1/i386/binary/sets/man.tgz
# ncftpget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.0.1/i386/binary/sets/x*.tgz
# ncftpget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.0.1/i386/binary/sets/kern-GENERIC.tgz

Configurer le serveur

Les configurations présentées dans ce paragraphe mettent en place les services nécessaires au support de démarrage d'un client sans disque dur.

Créer le répertoire racine du client

Pour créer le répertoire racine du client sans dique et monter la partition dédiée, exécutez les commandes suivantes :

# mkdir /diskless
# mount /dev/<partition_dédiée> /diskless

Modifiez ensuite le fichier /etc/fstab du serveur pourqu'au démarrage de celui-ci la partition /diskless soit automatiquement montée.

/dev/</partition_dédiée>   /diskless   ffs   rw,softdep   1 2

Modifier le fichier /etc/ethers

Le fichier /etc/ethers est utilisé par le service rarpd(8) pour attribuer l'adresse IP d'un client en fonction de son adresse physique ou adresse MAC.

Pour notre client, modifiez le fichier comme suit :

00:11:22:33:44:55        player.leaves.org

Modifier le fichier /etc/hosts ou la base DNS

Le fichier /etc/hosts sert à la résolution de noms en adresse IP.

Pour notre client, modifiez comme suit le fichier :

192.168.1.89        player.leaves.org        player

Configurer le serveur dhcpd

Modifier le fichier /etc/dhcpd.interfaces

Ajouter l'interface sur laquelle le serveur dhcp va écouter les requêtes. Dans notre cas, il s'agit de l'interface xl0.

Procédez comme suit :

# echo "xl0" >> /etc/dhcpd.interfaces

Modifier le fichier /etc/dhcpd.conf

Le fichier /etc/dhcpd.conf contient la configuration du serveur DHCP. La configuration doit être semblable à celle ci-dessous :

#/etc/dhcpd.conf

option perform-mask-discovery false;
option ip-forwarding off;

subnet 192.168.1.0 netmask 255.255.255.0 {
        # IP informations
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.1.255;
        option routers 192.168.1.1;
        # DNS informations
        option domain-name "leaves.org";
        option domain-name-servers 192.168.1.1;
}

group {
        # Lease informations
        default-lease-time 86400;               # 24hours
        max-lease-time 172800;                  # 48hours
        host player {
          # player's diskless workstation
          hardware ethernet 00:11:22:33:44:55;
          fixed-address player.leaves.org;
          filename "/player/pxeboot_ia32.bin";
          option swap-server 192.168.1.1;
          option root-path "/diskless/player/root";
       }
}

Activer le service TFTP

Pour activer le service tftp, décommentez la ligne suivante du fichier /etc/inetd.conf :

tftp  dgram  udp   wait  root  /usr/libexec/tftpd   tftpd -s /tftpboot

Créez le répertoire /tftpboot comme suit :

# mkdir -p /tftpboot/player
# chmod -R 711 /tftpboot/player

Modifier le fichier /etc/exports

Le fichier /etc/exports indique quelles arborescences du serveur NFS doivent être exportées vers quels clients NFS. Pour le client sans disque dur, vous devez créer un fichier semblable à celui ci-dessous :

# Diskless clients
/diskless -maproot=root -alldirs player.leaves.org

Une fois le serveur NFS démarré, vous pouvez consulter la liste des systèmes de fichiers exportés via la commande suivante :

# showmount -e

Lancer les services au démarrage du serveur

Ajoutez les lignes suivantes au fichier /etc/rc.conf.local :

# Start inetd super daemon
inetd=YES               # almost always needed

# Start daemons used to boot other hosts over a network.
dhcpd_flags=""         # for normal use: ""

# portmap is used to look up RPC-based svc.
nfs_server=YES
nfsd_flags="-tun 4"
lockd=YES

Démarrer les services

# pkill -HUP inetd
# dhcpd xl0
# portmap
# rpc.lockd
# mountd
# nfsd -tun 4

Installer le système du client

L'installation du système du client, ici NetBSD 3.0.1, est faite dans le répertoire /diskless/player/root du serveur.

Créer les répertoires de base

# mkdir -p /diskless/player/root/{usr,swap,dev}
# chmod 700 /diskless/player/root/swap

Installer les sets de base

# cd /diskless/player/root
# tar xzpf /tmp/base.tgz
# tar xzpf /tmp/etc.tgz
# tar xzpf /tmp/man.tgz
# tar xzpf /tmp/kern-GENERIC.tgz

Créer le fichier de console

# mknod /diskless/player/root/dev/console c 0 0

Créer le fichier de swap

# dd if=/dev/zero of=/diskless/player/swap bs=1024k count=128 seek=1
# chmod 600 swap
# ls -lh /diskless/player/swap
-rw-------  1 root  wheel   129M Apr 13 20:22 /diskless/player/swap

Copier le programme de boot

Copiez le fichier pxeboot_ia32.bin précédemment extrait du set d'installation base.tgz dans l'arborescence du serveur TFTP :

# cd /diskless/player/root
# cp usr/mdec/pxeboot_ia32.bin /tftpboot/player
# chmod 644 /tftpboot/player/pxeboot_ia32.bin

Configurer le client

etc/myname

Ce fichier contient le nom de la machine, pour le créer, exécutez la commande suivante :

# echo player.leaves.org > /diskless/player/root/etc/myname

etc/hosts

Créez le fichier /diskless/player/root/etc/hosts du client comme suit :

# /etc/hosts
127.0.0.1         localhost.leaves.org      localhost
192.168.1.89      player.leaves.org         player
192.168.1.1       smoking.leaves.org        smoking

etc/fstab

Editez comme suit le fichier /diskless/player/root/etc/fstab :

192.168.1.1:/diskless/player/root  /     nfs   rw   0 0
192.168.1.1:/diskless/player/swap  none  swap  sw,nfsmntpt=/swap

/dev/cd0a    /cdrom cd9660  noauto,ro,nodev,nosuid,noexec

Créez le répertoire de montage du cdrom :

# mkdir /diskless/player/root/cdrom

Configuration du réseau

L'adresse IP du client est inscrite en statique, sinon, des erreurs NFS apparaissent durant la phase d'initialisation du système (nfs send error 50 on server).

# cd /diskless/player/root/etc
# echo "inet 192.168.1.89 netmask 255.255.255.0 broadcast 192.168.1.255" > hostname.em0

Configurez la route par défaut du client :

# cd /diskless/player/root/etc
# echo "192.168.1.1" > mygate

Configurez le fichier de résolution de noms : nsswitch.conf

group:          files
hosts:          files dns
passwd:         files
shells:         files

Configurez le fichier de recherchde de serveur de noms : resolv.conf

# cd /diskless/player/root/etc
# echo "search leaves.org" > resolv.conf
# echo "nameserver 192.168.1.1" >> resolv.conf

Configurer l'heure

Pour configurer le fuseau horraire français, procédez comme suit :

# cd /diskless/player/root/etc
# rm localtime
# ln -s ../usr/share/zoneinfo/Europe/Paris localtime

Stoper certains services du client

Ajoutez les lignes suivantes au fichier /diskless/player/root/etc/rc.conf :

#/etc/rc.conf
sshd=NO
inetd=NO
sendmail=NO

nfs_client=YES
lockd=YES               lockd_flags=""
statd=YES               statd_flags=""

ccd=NO
cgd=NO
raidframe=NO
savecore=NO
update_motd=NO
quota=NO
syslogd=NO
cron=NO
#EOF

Configurer le clavier en Français

Exécutez la commande suivante :

# echo "encoding fr" >> /diskless/player/root/etc/wscons.conf

Démarrer le client

Toutes les commandes présentées dans cette section s'effectuent sur le client.

Premier démarrage

Au premier démarrage, le client indique :

/etc/rc.conf is not configured. Multiuser boot aborted.
Enter pathname of shell or RETURN fo /bin/sh :

Pour ouvrir une session, appuyez sur la touche <Entrée>.

Créer les fichiers de périphériques

# cd /dev
# /bin/sh MAKEDEV all

Changer le codage du clavier

# wsconsctl -k -w encoding=fr
encoding -> fr

Vérifier que la swap est bien reconnue

# swapctl -A
swapctl: adding 192.168.1.1:/diskless/player/root/swap as swap device at priority 0
#
# swapctl -l

Continuer le démarrage en mode multi-utilisateur

Configurez le terminal comme suit :

# export TERM=vt220

Editez le fichier /etc/rc.conf, et modifiez la ligne suivante :

rc_configured=NO

par la valeur :

rc_configured=YES

Sauvez et quittez l'édition.

Une fois revenu au prompt, délogez vous comme suit :

# exit

Le système continue alors son démarrage en mode multi-utilisateur.

A la fin de la séquence de démarrage, le prompt login: apparaît. Saisissez le login root, appuyez sur la touche <Entrée>. Vous êtes maintenant logé en tant qu'utilisateur root sur le client.

Affecter un mot de passe à l'utilisateur root

# passwd
New password:
Retype new password:

Créer l'utilisateur dédié au multimédia

# useradd -m -c "Player user" -d /home/player -g users player -s /bin/ksh
# passwd player
Changing local password for player.
New password:
Retype new password:
# exit

Installer X sur le client

Toutes les commandes présentées dans cette section s’effectuent sur le client. Le poste client doit donc être démarré, et vous devez être logé en tant qu’utilisateur root.

Installer les sets graphiques

Vous devez avoir transféré du serveur, vers le client, les sets d'installation des composants graphiques.

Sur le client, exécutez les commandes suivantes :

# cd /
# tar xzpf /tmp/xbase.tgz
# tar xzpf /tmp/xetc.tgz
# tar xzpf /tmp/xfont.tgz
# tar xzpf /tmp/xserver.tgz

Configurer le serveur X

Pour configurer le serveur X, exécutez la commande suivante :

# /usr/X11R6/bin/xf86cfg

Le serveur X se lance, et affiche un utilitaire graphique de configuration de XFree86.

Configurer la carte son du client

Toutes les commandes présentées dans cette section s'effectuent sur le client. Le poste client doit donc être démarré, et vous devez être logé en tant qu'utilisateur root.

Introduction

Les périphériques concernant l'audio sous NetBSD sont : /dev/audio, /dev/sound, /dev/audioctl et /dev/mixer. Pour une introduction au support audio, vous pouvez lire la page de manuel audio(4).

Tous les matériels audio supportés sont déjà inclus dans le noyau GENERIC (donc dans celui de notre client), il n'y a donc pas besoin de configuration supplémentaire ou d'installation de drivers. Pour trouver des informations spécifiques au contrôleur de votre carte son, vous devrez déterminer quel contrôleur vous possédez. Si vous avez déjà démarré le client, cherchez l'apparition d'un driver de carte son dans la sortie de la commande dmesg(1), et lisez le manuel du driver pour des informations plus spécifiques.

Voici un extrait d'un contrôleur audio, vu dans le dmesg :

auich0 at pci0 dev 31 function 5 "Intel 82801BA AC97" rev 0x04: irq 10, ICH2 AC97
ac97: codec id 0x41445360 (Analog Devices AD1885)
ac97: codec features headphone, Analog Devices Phat Stereo
audio0 at auich0

Configuration

Tout d'abord testez que votre carte fonctionne. Exécutez la commande suivante :

# ls -R / > /dev/audio

Si du bruit sort de vos haut-parleurs, c'est gagné, votre carte est reconnue et bien configurée.

Sinon, vérifiez la configuration du mixer. Procédez comme suit :

# mixerctl outputs.master.mute=off
# mixerctl outputs.headphones.mute=off

Répétez la même commande que précédement. Le bruit doit être maintenant audible.

Enregistrer la configuration

Pour ne pas avoir à saisir à chaque fois la configuration du mixer, créez comme suit le fichier /etc/mixerctl.conf :

#/etc/mixerctl.conf
# see mixerctl(1)

outputs.master=200,200
outputs.master.mute=off
outputs.headphones=160,160
outputs.headphones.mute=off

#EOF

Installer des applications tierces

Le client est maintenant fonctionnel : il démarre et monte ses systèmes de fichiers par le réseau, il accède au serveur DNS, il peut sortir du réseau local, le serveur X et la carte son sonts configurés.

Vous devez maintenant installer les applications nécessaire pour transformer ce client en un “Media Center”.

Toutes les commandes présentées dans cette section s’effectuent sur le client. Le poste client doit donc être démarré, et vous devez être logé en tant qu’utilisateur root.

Définir l'emplacement des packages binaires

# export PKG_PATH="ftp://ftp.netbsd.org/pub/NetBSD/packages/3.0/i386/All"

Installer les applications

# pkg_add oroborus
# pkg_add vlc

Configurations optionnelles du client

Toutes les commandes présentées dans cette section s’effectuent sur le client. Le poste client doit donc être démarré, et vous devez être logé en tant qu’utilisateur root.

Ouvrir automatiquement une session X au démarrage

Ce hack n'est pas très “propre”. Il existe des gestionnaires de session X (comme gdm ou kdm) qui permettent d'autologer un utilisateur. Mais ces outils exigent de nombreuses dépendances, et l'idée, ici, est de garder un système assez léger. Pour se passer des gestionnaires de session X, procédez comme suit.

Ajoutez les lignes ci-dessous au fichier /etc/rc.local :

# Start X session as user 'player'
if [ -x /usr/X11R6/bin/startx ]; then
     echo -n ' startx'
     /usr/bin/su -l player -c "/usr/X11R6/bin/startx" &
fi

echo '.'
#EOF

Désactiver le compte root du client

Exécutez la commande vipw et modifiez l'entrée correspondante à l'utilisateur root :

root:*lock*:0:0:daemon:0:0:Charlie &:/root:/sbin/nologin

Sauvez et quittez.

Puis, modifiez comme suit le fichier /etc/shells :

# echo /sbin/nologin >> /etc/shells

Liens

 
doc/netbsd/diskless.txt · Dernière modification: 2009/12/23 22:36 (édition externe)     Haut de page