EEEPC
Un article de Diablotins.org.
|
Un EEEPC sous Freebsd, sans rien casser.
L'Eee PC est une machine intéressante car peu onéreuse imaginée par Asus, qui a lancé ainsi le marché des Netbooks.
De part sa configuration légère, cette machine est un sujet idéal pour fabriquer un terminal X, si vous possédez déjà un serveur sous FreeBSD.
Ce document peut servir de base pour vraiment installer FreeBSD sur la machine.
Sommaire |
Le serveur
Le serveur est un FreeBSD 7.1 ou supérieur, qui dispose du pilote de l'interface réseau des Eeepc:“if_ae”.
Il écoute le réseau local sur l'interface rl0, à l'adresse 192.168.0.1, domaine «.eeepc.local».
Dans cet exemple, j'utiliserai un EEEPC nommé nolwenn ( c'est le nom de la propriétaire actuelle de la machine ), qui recevra l'adresse IP “192.168.0.80“.
Ainsi, ajoutez l'entrée de ce nouveau nœud dans /etc/hosts:
192.168.0.80 nolwenn.eeepc.local nolwenn.eeepc nolwenn
Le serveur est connecté au vaste monde par un routeur en 192.168.1.1, mais attention, vu des EeePC le routeur, c'est le serveur, 192.168.0.1. N'oubliez pas de traduire les réseaux par votre pare-feu favori, ici Packet Filter:
nat on $ext_if from !($ext_if) to any -> ($ext_if)
et de déclarer votre serveur en «gateway» dans rc.conf:
gateway_enable=yes # sysctl net.inet.ip.forwarding=1
Vous devez aussi disposer d'un espace conséquent, ou d'un autre disque, pour contenir le monde et le noyau de vos terminaux, sous la racine. Dans cet exemple, je créé un répertoire “/diskless”, qui est lié à un autre disque.
Le client EeePC
Construisons nos terminaux, par exemple dans “/diskless/eeepc”.
makedir -p /diskless/eeepc
Noyau
Utilisez un noyau GENERIC pour fabriquer les noyaux des terminaux que je nommerai «EEEPC» et ajoutez les entrées suivantes:
options BOOTP # BOOTP va obtenir IP et nom options BOOTP_NFSROOT # NFS Monte «/» d'après «option root-path» options BOOTP_NFSV3 # Version de NFS options BOOTP_COMPAT # options BOOTP_WIRED_TO=ae0 # interface de connexion options NULLFS # Avec le bus Mii device ae # NIC Atheros L2.
Ajoutez dans loader.conf
#Gestion ACPI acpi_asus_load="yes" acpi_video_load="yes" #Sons snd_hda_load="yes" #Touchpad hw.psm.synaptics_support=1
Construction
Le monde de l'Eeepc est le mĂŞme que celui du serveur, mis Ă part certains fichiers de configuration.
Préservez les fichiers dans un répertoire, “/diskless/eeepc/Eeepc_etc”:
csh.cshrc login.conf profile fstab ttys hosts rc.conf
- rc.conf ne devra conserver que les entrées:
swapfile="/boot/swap/Pagefile.sys" local_startup="" keymap="fr.iso.acc" font8x14="iso15-8x14" font8x16="iso15-8x16" font8x8="iso15-8x8" moused_enable="yes" linux_enable="YES" sshd_enable="YES" sendmail_enable="NONE" cron_enable="NO" #Si vous lancez X sans XDMCP hald_enable="yes" dbus_enable="yes"
192.168.0.1:/diskless/eeepc / nfs rw 0 0 192.168.0.1:/usr /usr nfs rw 0 0 192.168.0.1:/usr/home /home nfs rw 0 0 proc /proc procfs rw 0 0
Ensuite utilisez le script “/diskless/eeepc/makediskless.sh” pour installer le noyau et le monde:
#!/bin/sh
# Destination
export DESTDIR=/diskless/eeepc
mkdir -p ${DESTDIR}
# monde
cd /usr/src; make world
# noyau
make kernel KERNCONF=EEEPC
# configuration générale
cd /usr/src/etc; make distribution
# configuration adaptée
cp /diskless/eeepc/Eeepc_etc/* /diskless/eeepc/etc/
#
cp /etc/master.passwd /diskless/eeepc/etc/
cd /diskless/eeepc
pwd_mkdb -d etc/ etc/master.passwd
pwd_mkdb -p -d etc/ etc/master.passwd
Astuce
Si par la suite vous ne modifiez que le noyau, contentez vous de lancer
cd /usr/src make kernel KERNCONF=EEEPC DESTDIR=/diskless/eeepc -DNO_MODULES
Le terminal EEEPC
Dans le BIOS, réglez l'EEEPC pour démarrer par PXE en premier.
- Appuyez sur F2
- Autoriser le boot sur réseau
- Redémarrer, appuyez sur F2
- Sélectionnez le démarrage par le réseau en premier choix.
Notez l'adresse MAC de la carte réseau. Et c'est parti.
L'hĂ´te
Pour répondre aux terminaux, vous aurez besoin d'installer le serveur DHCP, isc-dhcp30-server.
Autorisez son lancement au démarrage du serveur, dans /etc/rc.conf:
dhcpd_enable="YES" dhcpd_name="_dhcp" dhcpd_flags="" dhcpd_conf="/usr/local/etc/dhcpd.conf" dhcpd_ifaces="rl0"
Configurez le dans “/usr/local/etc/dhcpd.conf”:
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
# option definitions common to all supported networks...
option domain-name "dmarec.local";
# Serveur DNS
option domain-name-servers 192.168.1.1 ;
default-lease-time 600;
max-lease-time 7200;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;
# ad-hoc DNS update scheme - set to "none" to disable dynamic DNS updates.
ddns-update-style ad-hoc;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
subnet 192.168.0.0 netmask 255.255.255.0 {
use-host-decl-names on;
option subnet-mask 255.255.255.0;
range 192.168.0.100 192.168.0.200;
# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.
#range dynamic-bootp 192.168.0.2 192.168.0.99;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
host nolwenn {
hardware ethernet 00:xx:xx:xx:xx:xx;
filename "pxeboot";
fixed-address nolwenn.eeepc.local;
next-server 192.168.0.1;
option root-path "192.168.0.1:/diskless/eeepc";
}
}
Notez le «pxeboot» que vous retrouverez dans “/tftpboot”.
En effet, le noyau sera distribué au terminal par ce biais.
tftpboot
Ce service va fournir le noyau aux terminaux, il est invoqué par DHCP.
Autorisez ce démon dans /etc/services et n'oubliez pas d'activer inetd dans /etc/rc.conf.
Définissez le client dans “/tftpboot/cfg.192.168.0.80“:
rootfs 192.168.0.1:/diskless/eeepc hostname nolwenn.eeepc.local
NFS
NFS va distribuer le système de fichier, activez le dans rc.conf:
rpcbind_enable="YES" nfs_server_enable="YES" nfs_server_flags="-t -u -n 4" mountd_flags="-r -l"
Configuez le service, dans “/etc/exports” pour qu'il réponde aux EeePC:
/diskless/eeepc -maproot=0:0 nolwenn /usr -alldirs nolwenn
Interface graphique
Installez le port dédié aux «touchpad», «x11-drivers/xf86-input-synaptics», en effet, le support de synaptics pour les terminaux virtuels est incomplet.
Créez un fichier de configuration standard, par script.
N'utilisez pas HAL:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
Option "AutoAddDevices" "off"
Option "AllowEmptyInput" "off"
EndSection
Installez le pilote vidéo d'intel «x11-drivers/xf86-video-intel-xxxx».
Section "Device"
### Available Driver options are:-
### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
### [arg]: arg optional
#Option "ShadowFB" # [<bool>]
#Option "DefaultRefresh" # [<bool>]
#Option "ModeSetClearScreen" # [<bool>]
Identifier "Card0"
Driver "intel"
VendorName "Intel Corporation"
BoardName "Mobile 915GM/GMS/910GML Express Graphics Controller"
BusID "PCI:0:2:0"
EndSection
Déclarez le dispositif de pointage, le «touchpad»:
Section "Module" Load "record" Load "dbe" Load "extmod" Load "glx" Load "dri" Load "dri2" Load "synaptics" # celui lĂ en particulier EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "ato"
Option "Device" "/dev/sysmouse"
Option "ZAxisMapping" "4 5 6 7"
Option "Emulate3Buttons" "yes"
EndSection
Section "InputDevice"
Identifier "synaptics"
Driver "synaptics"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "LeftEdge" "1000"
Option "RightEdge" "5400"
Option "TopEdge" "1000"
Option "BottomEdge" "4900"
Option "PalmDetect" "0"
Option "SHMConfig" "true"
Option "SendCoreEvents" "yes"
Option "HorizScrollDelta" "0"
Option "RBCornerButton" "0"
Option "RTCornerButtom" "0"
Option "MaxSpeed" "0.1"
EndSection
Ensuite, un simple «startx» fera l'affaire.
Je n'ai pas résolu les problèmes d'affichage en XDMCP, pour en faire un vrai terminal X.
En savoir plus
Résultat:
