Bureau David

De Diablotins.org.


Installer un système de bureau
Image:brush.png
Ayant récemment fait l'acquisition d'une carte mère “Gigabyte M61PME-S2P” et du processeur AMD Athlon(tm) 7750 Dual-Core associé, j'ai téléchargé puis gravé le disque d'installation pour AMD64 bootonly.


J'en profite pour écrire un petit article décrivant les différentes étapes de la construction de ce nouveau poste de travail,alors que patrick teste FreeBSD 8.

Moquez-vous, ce n'est pas ce que j'ai fait, mais ce que j'aurais du faire. Ayant une mémoire de poisson rouge, cette article m'est en premier lieu, destiné.



Sommaire

Installation

En amorçant sur le CD, j'ai, via sysinstall(8), installé rapidement FreeBSD pour AMD64.

Voyons, avec sysctl:

hw.model: AMD Athlon(tm) 7750 Dual-Core Processor
hw.ncpu: 2

Disques

Je dispose d'un disque dur SATA, sur le canal 2, reconnu comme périphérique /dev/ad4.

david# atacontrol list
ATA channel 0:
    Master: acd0 <PIONEER DVD-RW DVR-112D/1.21> ATA/ATAPI revision 7
    Slave:       no device present
ATA channel 1:
    Master:      no device present
    Slave:       no device present
ATA channel 2:
    Master:  ad4 <MAXTOR STM3250310AS/4.AAA> SATA revision 2.x
    Slave:       no device present
ATA channel 3:
    Master:      no device present
    Slave:       no device present

le fstab créé lors de l'installation donne:

>cat /etc/fstab 
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad4s1b             none            swap    sw              0       0
/dev/ad4s1a             /               ufs     rw              1       1
/dev/ad4s1e             /tmp            ufs     rw              2       2
/dev/ad4s1f             /usr            ufs     rw              2       2
/dev/ad4s1d             /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0

Je réserve 20G pour /temp et /var, parce que j'ai beaucoup de place.

> df -H
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad4s1a    520M    453M     25M    95%    /
devfs          1.0k    1.0k      0B   100%    /dev
/dev/ad4s1e     21G     25k     19G     0%    /tmp
/dev/ad4s1f    196G     13G    168G     7%    /usr
/dev/ad4s1d     21G    498M     19G     3%    /var

Réseau

La carte est reconnue comme interface nfe0, qui se configure via le serveur DHCP de ma neufbox.

> ifconfig -l
nfe0 plip0 lo0

Ma machine se nomme «david.marec» (mais où je suis allé chercher cela ?):

david:~>hostname
david.marec

Console

Afin de préparer une station francophone, définissons les terminaux, comme suit

  1. Clavier FR avec accents
  2. Polices ISO88519-15.
  3. Consoles cons25l1.

N'oubliez pas de configurer la souris, au passage.

configuration générée

Voici le résultat:

rc.conf
# -- sysinstall generated deltas -- # Wed Jul 29 17:13:56 2009
# Created: Wed Jul 29 17:13:56 2009
# Enable network daemons for user convenience.
# Please make all changes to this file, not to /etc/defaults/rc.conf.
# This file now contains just the overrides from /etc/defaults/rc.conf.
font8x14="iso15-8x14"
font8x16="iso15-8x16"
font8x8="iso15-8x8"
hostname="david.marec"
ifconfig_nfe0="DHCP"
keymap="fr.iso.acc"
moused_enable="YES"
scrnmap="NO"
ttys ( extrait )
ttyv0   "/usr/libexec/getty Pc"         cons25l1        on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         cons25l1        on  secure
ttyv2   "/usr/libexec/getty Pc"         cons25l1        on  secure
ttyv3   "/usr/libexec/getty Pc"         cons25l1        on  secure
ttyv4   "/usr/libexec/getty Pc"         cons25l1        on  secure
ttyv5   "/usr/libexec/getty Pc"         cons25l1        on  secure
ttyv6   "/usr/libexec/getty Pc"         cons25l1        on  secure
ttyv7   "/usr/libexec/getty Pc"         cons25l1        on  secure
ttyv8   "/usr/local/bin/xdm -nodaemon"  xterm   off secure

Logiciels

Installons toutes les sources, sauf xorg, pour éviter qu'il ne soit compilé avec hal, ce qui génère plus de problèmes que de confort, AMHA.

Configurer

Une fois lancé, n'oubliez pas de donner un mot de passe à root:

# passwd

Utilisateurs

Préparons nos utilisateurs en déclarant une classe «french» pour les francophones, dans /etc/login.conf.
Extrait:

 french|France users accounts:\
 :charset=ISO-8859-15:\
 :lang=fr_FR.ISO8859-15:\
 :tc=default:

Définssons ensuite la classe «french» par défaut dans /etc/adduser.conf

defaultclass=french 

Ainsi qu'un squelette de l'arborescence standard, pour les media amovibles:

cd /usr/share/skel
touch photo
touch cdrom


Dans le même esprit, afin d'obtenir un shell plus aisé à utiliser, ici csh/tcsh,
modifions comme suit son fichier de configuration par défaut, notamment l'invite:

david:~>cat /usr/share/skel/dot.cshrc
# $FreeBSD: src/share/skel/dot.cshrc,v 1.13 2001/01/10 17:35:28 archie Exp $
#
# .cshrc - csh resource script, read at beginning of execution by each shell
#
# see also csh(1), environ(7).
#

alias h         history 25
alias j         jobs -l
alias la        ls -a
alias lf        ls -FA
alias ll        ls -lA
alias ls        ls -G
# A righteous umask
umask 22

set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin $HOME/bin)

setenv  EDITOR  edit
setenv  PAGER   more
setenv  BLOCKSIZE       K

if ($?prompt) then
        # An interactive shell -- set some stuff up
        set prompt="%n:%c03%#"
        set filec
        set history = 100
        set savehist = 100
        set mail = (/var/mail/$USER)
        if ( $?tcsh ) then
               bindkey "^[[1~" beginning-of-line
               bindkey "^[[4~" end-of-line
               bindkey "^[[3~" delete-char
               bindkey "^?" delete-char
               bindkey "^W" backward-delete-word
               bindkey -k up history-search-backward
               bindkey -k down history-search-forward
        endif
endif

Créons david:

adduser david

qui donne:

Création de David:
adduser david
Username   : david
Password   : *****
Full Name  : David Marec
Uid        : 1002
Class      : french
Groups     : wheel operator
Home       : /home/david
Home Mode  : 
Shell      : /bin/tcsh
Locked     : no

David est aussi membre de “operator

Créons le groupe «Arcade» dédié aux joueurs.

pw groupadd Arcade -M david

Mise à jour

Afin de préparer le système pour les mises à jour, configurons csup.
Copions tous les fichiers de /usr/share/examples/cvsup dans /usr/local/etc/cvsup

david# mkdir -p /usr/local/etc/cvsup
david# cp -R /usr/share/examples/cvsup /usr/local/etc/
david# ls /usr/local/etc/cvsup/
ports-supfile           stable-supfile          standard-supfile          doc-supfile

Et choisissons un serveur français, pour ces fichiers, en définissant dans chaque variable “host” le serveur «cvsup.fr.FreeBSD.org».

*default host=cvsup.fr.FreeBSD.org
*default base=/var/db
*default prefix=/usr

directement, par exemple:

sed 's/CHANGE_THIS/cvsup.fr/' /usr/share/examples/cvsup/ports-supfile > /usr/local/etc/cvsup/ports-supfile


Puis, dans /etc/make.conf:

# added by use.perl 2009-07-29 17:54:50
PERL_VERSION=5.8.9

# CVSup update flags.  Edit SUPFILE settings to reflect whichever distribution
# file(s) you use on your site (see /usr/share/examples/cvsup/README for more
# information on CVSup and these files).  To use, do "make update" in /usr/src.
#
SUP_UPDATE=
#
SUP=            /usr/bin/csup
SUPFLAGS=       -g -L 2
SUPHOST=        cvsup.fr.FreeBSD.org
SUPFILE=        /usr/local/etc/cvsup/standard-supfile
PORTSSUPFILE=   /usr/local/etc/cvsup/ports-supfile
DOCSUPFILE=     /usr/local/etc/cvsup/doc-supfile

DOC_LANG=      en_US.ISO8859-1 fr_FR.ISO8859-1

Puis mettons tout à jour :

# cd /usr/src
# make update
# make -j4 buildworld && make kernel 
# reboot
# mount -a
# kbdmap -K
# cd /usr/src
# make installworld && mergemaster -U

nota: vous devez avoir installé une première fois les fichiers sources pour utiliser make update. Si vous les avez oubliés, récupérez les sources avec la commande :

# cd /usr/src
# csup -L 2 /usr/local/etc/cvsup/standard-supfile

Logiciels de base

Installez en priorité les outils suivants:

  • security/sudo

Configurez sudo pour qu'il accepte le groupe wheel:

david# grep wheel  /usr/local/etc/sudoers
# Uncomment to allow people in group wheel to run all commands
%wheel  ALL=(ALL) ALL
# %wheel        ALL=(ALL) NOPASSWD: ALL
  • misc/tmux
  • ports-mgmt/portmaster
  • ports-mgmt/portupgrade
  • x11/xorg, sans HAL !
  • x11-wm/fluxbox
  • www/links

interface graphique

Définissons “fluxbox“ dans .xinitrc de david

david# cat ~david/.xinitrc 
exec startfluxbox

Laissons xorg générer ses fichiers:

david# X -configure
david# cp /root/xorg.conf.new /etc/X11/xorg.conf

et configurons un clavier francophone:

Section "InputDevice"
       Identifier  "Keyboard0"
       Driver      "kbd"
       Option "XkbLayout"   "fr"
       Option "XkbVariant"  "latin9"
EndSection

Nous ne pouvont utiliser que les pilotes libres nv (peu performant, sans accélaration), ou nouveau ( en test) .
Actuellement, Nvidia ne dispose pas de support pour amd64;
il est en cours de test sous la branche 8, mais il est peu probable qu'il soit disponible un jour pour les versions précédentes.
Par contre, le port x11/nvidia-driver fonctionne parfaitement sur la plateforme x86, que vous pouvez utiliser plutôt que la version amd64 que j'ai choisie.

N'oubliez pas que HAL n'a pas été inclus lors de l'installation de Xorg, sinon...

Le reste

Nous pouvons maintenant compiler tout un tas de logiciels, dans des terminaux tmux, de préférence.
utilisez l'option

make config-recursive

avant d'installer les logiciels.

Linux

J'ai choisi la Compatiblité linux emulators/linux_base-f7:

kldload linux
sysctl compat.linux.osrelease=2.6.16
linux_base-f7

Ajoutez «linux_enable="YES"» dans /etc/rc.conf, et «compat.linux.osrelease=2.6.16» dans /etc/sysctl.conf.

Le confort

  • www/opera
  • www/firefox35
Ajoutons «sem_load=yes"» dans /etc/loader.conf pour ce dernier.
  • x11/kde3
  • french/kde3-i18n
Configurons Konsole.
  • graphics/ImageMagick
  • mplayer
  • editors/vim
  • emulators/sdlmame
  • audio/musicpd
  • audio/ncmpcpp
  • sysutils/cdrtools-devel

config avancée

Autorisons le montage par les utilisateurs, non root:

david# cat /etc/sysctl.conf 
# $FreeBSD: src/etc/sysctl.conf,v 1.8 2003/03/13 18:43:50 mux Exp $
#
#  This file is read when going to multi-user and its contents piped thru
#  ``sysctl'' to adjust kernel values.  ``man 5 sysctl.conf'' for details.
#

# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
vfs.usermount=1

Afin de pouvoir graver un disque à l'aide de cdrecord ou cdrdao,
qui utilisent le bus SCSI pour accéder aux périphériques ATAPI,
chargeons le module qui fait le lien entre ces deux bus:

david:~>cat /boot/loader.conf
atapicam_load="yes"

Vérifions:

david:~>camcontrol devlist
<PIONEER DVD-RW  DVR-112D 1.21>    at scbus0 target 0 lun 0 (cd0,pass0)

Puis, l'utilisation des périphériques par les utilisateurs du groupe operator:

david:~>cat /etc/devfs.conf
perm acd0 0660
perm cd0 0660
perm pass0 0660
perm xpt0 0660

Mettons nous à l'heure à chaque démarrage:

david:~>grep -i ntpdate /etc/rc.conf
ntpdate_enable="YES"
ntpdate_flags="europe.pool.ntp.org"

Matériel

Tous les périphériques ne sont pas reconnus automatiquement.

Carte son

Afin de faire fonctionner cette carte, il faut d'abord trouver le pilote idoine.
L'idéal serait d'en trouver la référence dans les spécifications de la carte mère, mais, on peut faire plus court.
Chargez tous les pilotes de carte son:

kldload snd_driver

Reportons nous sur la console pour déterminer quel pilote est attaché à la carte son.

hdac0: HDA Codec #0: Realtek ALC883
pcm0: <HDA Realtek ALC883 PCM #0 Analog> at cad 0 nid 1 on hdac0
pcm1: <HDA Realtek ALC883 PCM #1 Analog> at cad 0 nid 1 on hdac0
pcm2: <HDA Realtek ALC883 PCM #2 Digital> at cad 0 nid 1 on hdac0

HDA Codec: Recherchons le dans la liste:

david:~> grep -i HDA /boot/defaults/loader.conf
snd_hda_load="NO"               # Intel High Definition Audio (Controller)

Maintenant, il suffit de l'intégrer dans loader.conf:

david:~>grep -i hda /boot/loader.conf
snd_hda_load=yes

Plus!

Projets :