EEEPC

Un article de Diablotins.org.


Image:brush.png

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"
  • fstab dĂ©finira le système de fichier distribuĂ© par NFS:
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.

  1. Appuyez sur F2
  2. Autoriser le boot sur réseau
  3. Redémarrer, appuyez sur F2
  4. 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:

Récupérée de « http://diablotins.org/index.php/EEEPC »
Projets :
Boîte à outils