Je soutiens

Activités récentes sur le site

Bidouillage‎ > ‎

Installation et Configuration de FreeBSD comme poste de travail

Table des matières

  1. 1 Objectifs
    1. 1.1 Recensement de mes besoins
    2. 1.2 Sources d'information
  2. 2 Installation
    1. 2.1 Récupération du fichier ISO/IMG
    2. 2.2 FreeBSD Installer
  3. 3 Configuration du système de base
    1. 3.1 Comment sont organisés les fichiers ?
    2. 3.2 Le Shell
    3. 3.3 Diminuer le timeout du menu du boot loader
    4. 3.4 Augmenter la résolution de la console
    5. 3.5 Les Drivers
      1. 3.5.1 Chargement du drivers du lecteur de carte SD
      2. 3.5.2 Audio
      3. 3.5.3 SMBus
      4. 3.5.4 ACPI spécifiques constructeurs
    6. 3.6 Webcam
    7. 3.7 Configuration du Wifi
    8. 3.8 Usage de label à la place de nom de disque
    9. 3.9 Configuration du système en français
    10. 3.10 Configuration du clavier Bépo
    11. 3.11 Permettre à l'utilisateur d'utiliser les périphériques USB, graveur CD/DVD
    12. 3.12 Optimisations
      1. 3.12.1 Configurer le scheduler pour un usage «desktop»
      2. 3.12.2 Réparation fsck automatique et background fsck
      3. 3.12.3 Désactivation de l'access time sur votre partition /
      4. 3.12.4 Pourcentage réservé du disque
      5. 3.12.5 Éviter la création de fichier .core
    13. 3.13 Installation des Mise à jour de FreeBSD
  4. 4 Installation des logiciels
    1. 4.1 9.0 ou inférieur
    2. 4.2 9.1 ou supérieur
    3. 4.3 Repos WITH_NEW_ORG (uniquement si version inférieur à la 11.0)
    4. 4.4 Utilisation de pkg
  5. 5 Environement graphique X11
    1. 5.1 HAL
      1. 5.1.1 Configuration de la langue du clavier sans HAL
      2. 5.1.2 Configuration de la langue du clavier avec HAL
      3. 5.1.3 Vitesse de la souris
      4. 5.1.4 Permettre à l'utilisateur d'éteindre/redémarrer/monter des disques avec HAL
    2. 5.2 SLIM
      1. 5.2.1 Installation
      2. 5.2.2 Thème FreeBSD
    3. 5.3 Gnome
      1. 5.3.1 Le fichier /boot/loader.conf
      2. 5.3.2 Comportement de Nautilus (le navigateur de fichier)
      3. 5.3.3 Montage de GROS disque amovible fat32 avec support des accents
      4. 5.3.4 Permettre la gravure de CD par Nautilus
    4. 5.4 Police de caractères
  6. 6 Les applications
    1. 6.1 Firefox
      1. 6.1.1 Plugin Flash
    2. 6.2 Lecteur multimédia Totem
    3. 6.3 Java
    4. 6.4 LibreOffice
    5. 6.5 Montage automatique des disques amovibles (sans HAL)
    6. 6.6 VirtualBox-OSE
    7. 6.7 GNS3
    8. 6.8 CUPS
  7. 7 Trucs & astuces
    1. 7.1 L'écran de démarrage (splash screen)
    2. 7.2 Configurations particulières
      1. 7.2.1 Gérer la présence d'un proxy HTTP/HTTPS
      2. 7.2.2 Serveur TFTP
      3. 7.2.3 Émulateur de terminal série (équivalent de l'hyperterminal ou teraterm)
    3. 7.3 Collecte d'information
      1. 7.3.1 Inventaire matériel
      2. 7.3.2 Charge système par des graphiques: systat
      3. 7.3.3 Charge système en mode compact: vmstat
    4. 7.4 Usage de ntfs-3g dans le fstab
    5. 7.5 Résolution de problème
      1. 7.5.1 Problème de bibliothèque manquante
      2. 7.5.2 umount failed: Device busy

Objectifs

Ce document inclus l'ensemble des étapes réalisées pour obtenir FreeBSD 10.0 installé pour une utilisation optimisée «poste de travail» (Gnome, LibreOffice, multimedia, etc..) sur un PC portable.
Il est beaucoup plus simple d'utiliser une version déjà prête pour une utilisation «poste de travail» en utilisant PC-BSD, mais je préfère avoir un «vrai» FreeBSD, entièrement recompilé et installé à la main :-) 
Pour ceux qui souhaitent découvrir FreeBSD sans rien toucher à leur système, il existe aussi VirtualBSD sous forme d'image VMware player.

Recensement de mes besoins

Utilisateur de Linux Ubuntu, je souhaiterai faire exactement la même chose sous FreeBSD, c'est à dire avoir le support matériel complet de mon PC portable (Dell Latitude E5420): LAN, Wifi, Bluetooth et une gestion de l'énergie minimale.
De plus, comme c'est sur le PC portable du bureau que je vais l'installer, il va me falloir obligatoirement les logiciels suivants:
  • Un émulateur/virtualizateur: Virtualbox ou un truc permettant d'utiliser MS Office et Visio;
  • LibreOffice;
  • Truecrypt, car il s'agit de le la seul solution mutliplateforme de chiffrement que je connaisse;
  • GNS3, superbe environnement graphique pour monter des maquettes d'émulation Cisco/Juniper/BSD Router Project (Note: de l'autopub se cache dans cette ligne);
  • Aircrack-ng (avec airerplay de fonctionnel pour de l'injection de paquet);
  • Wireshark;
  • Chromium et/ou Firefox avec si possible le support de cette grosse merde d'Adobe flash propriétaire;
  • Un émulateur de terminal VT100 sur port série (intégré: «cu» ou «tip»)

Sources d'information

Voici les principales sources d'informations utilisées:

Installation

Le PC portable utilisant un processeur Intel Core2, je vais lui installer un FreeBSD amd64.
Si vous souhaitez chiffrer vos partitions, suivre ce guide d'installation: Installation de FreeBSD (9.1) sur partition chiffrée.

Récupération du fichier ISO/IMG

Les miroirs de free sont en général très rapide (pour les freenautes) et à jour:

ftp://ftp.free.fr/.mirrors1/ftp.freebsd.org/releases/amd64/amd64/ISO-IMAGES/

Concernant l'image disque USB (memstick.img): La transfèrer à coup de "dd bs=64k", ou pour les Windowsiens d'Image writer.


FreeBSD Installer

L'installateur est en mode texte, mais très simple: Il suffit de sélectionner «Install» sur le premier écran, puis de suivre les conseils:
  1. Cela commence par la sélection du type de clavier et le hostname: Ça c'est votre problème
  2. Concernant les distributions à installer: Décocher le port-tree s'il est coché, et garder les lib32 ! (obligatoire pour virtualbox)
  3. Partitionnement: Le mode «Guided» va vous simplifier la vie, mais si vous souhaitez le faire manuellement:
    • Créer une première partition swap de la taille de votre RAM (histoire d'avoir assez de place pour récupérer un éventuel crash dump). Labellisez-là "swap" par exemple.
    • Puis créer une seconde partition avec tout le reste pour la partition root / (pour un poste de travail, ne faites pas ça sur un serveur!). Labellisez-là "rootfs" par exemple.
  4. Puis sélectionner le disque et «Entire Disk»:  je ne suis pas fan de la coopération avec d'autre systèmes :-)
  5. Partiton Editor: Si vous êtes en mode «Guided» contentez-vous de faire «Exit» et «Save»
  6. Attendre environ 2 minutes pour l'installation
  7. Puis viennent quelques questions trivialles: mot de passe de l'utilisateur root, configuration du réseau (incluant le Wifi) et la timezone
  8. Concernant les services à démarrer automatiquement: Désactiver sshd (rien à faire sur un desktop) et activez ntpd et powerd
  9. Créer votre utilisateur
    1. À la question «Invite USER into other groups?», répondre, avec un simple espace entre les noms: wheel operator dialer
      •  «wheel», permet de passer root par la commande su
      • «operator», obligatoire pour utiliser la commande su et éteindre le PC)
      • «dialer», permet d'utiliser les ports séries (par «cu» et «tip»)
    2. Login class, laissez «default» (on la changera plustard)
    3. Shell: tcsh
    4. Home directory: Par défaut
    5. Puis choisissez un mot de passe et confirmer la création
  10. De retour sur le «Final Configuration», sélectionner «Exit», puis «Reboot»
Attention au vocabulaire utilisé par FreeBSD:
  • Un «slice» est une partition MBR, elles portent comme nom: Le nom du disque suivis des lettres s1, s2, s3, etc...
  • Une «partition» est une sous-partition MBR, elles portent comme nom: Le nom du disque, éventuellement le nom du slice, puis une lettre (a pour l'ensemble, b pour la swap, etc...)
Les allergiques à l'installateur en mode texte peuvent installer PC-BSD mais sélectionner «FreeBSD» lors de l'installation.

Configuration du système de base

Comment sont organisés les fichiers ?

Première question, et première démonstration de force de FreeBSD, la réponse est incluse par la man page de hier:
man hier

Le Shell

Le shell bash n'est pas inclus par défaut dans FreeBSD: C'est tcsh que l'on va utiliser.
Il est déconseillé d'utiliser un shell installé depuis les ports (bash par exemple) pour votre utilisateur root, car il risque de ne plus fonctionner en cas de problème (bibliothèque manquante par exemple ou pas d'accès à /usr/local).
Si vous souhaitez utiliser un autre shell pour le compte root: Modifiez plutôt le shell du compte toor (ce compte administrateur sert à ça).
Par défaut le tcsh ne propose pas de couleur et fait biper le PC on va donc le configurer en éditant le fichier /etc/csh.cshrc communs à tous les utilisateurs:

# Add color to CLI
setenv  CLICOLOR        true
# Disable system beep
set nobeep

Diminuer le timeout du menu du boot loader

Le menu du boot loader possède un timeout de 10 secondes, ce qui est trop long.
Voici comment le réduire à 2 secondes:
echo 'autoboot_delay="2"' >> /boot/loader.conf

Augmenter la résolution de la console

La résolution de la console VGA est très basse par défaut, voici comment la passer à 1024x768x8bits:
echo 'allscreens_flags="MODE_261"' >> /etc/rc.conf
vidcontrol MODE_261

Les Drivers

FreeBSD ne charge pas par défaut tous les drivers possible, on dois lui indiquer de charger les drivers spécifiques à votre matériel.
Pour obtenir la liste des drivers non chargés, on peut par exemple utiliser la commande suivante:

[root@laptop]~#dmesg | grep "no driver attached"
pci12: <network> at device 0.0 (no driver attached)
pci0: <multimedia, HDA> at device 27.0 (no driver attached)
pci0: <serial bus, SMBus> at device 31.3 (no driver attached)
pci9: <base peripheral, SD host controller> at device 0.1 (no driver attached)
pci9: <mass storage> at device 0.2 (no driver attached)

 Ici on remarque: une puce  audio (multimedia, HDA), une carte réseau, le wifi dans mon cas (network), un chipset SMBus (serial bus, SMBus) et un lecteur de carte SD.

Chargement du drivers du lecteur de carte SD


Commencer par charger manuellement les drivers pour tester qu'ils correspondent bien:
kldload mmc
kldload mmcsd
kldload sdhci

Puis vérifier:
[root@laptop]~#dmesg | grep sdhci
sdhci0: <Generic SD HCI> mem 0xe5220000-0xe52201ff irq 18 at device 0.1 on pci9
sdhci0: 1 slot(s) allocated

On ajoute le nom de ces modules à la liste des modules à charger automatiquement (variable kld_list) du fichier /etc/rc.conf.
Si vous n'avez pas encors déclaré cette variable dans votre /etc/rc.conf, il est possible d'utiliser directement cette ligne:
echo "kld_list='mmc mmcsd sdhci'" >> /etc/rc.conf

Audio

Les drivers audio les plus courant sont activé par défaut depuis la 9.0, mais si les votres ne le sont pas, charger un «méta» drivers qui va charger tous les drivers audio, puis regarder celui qui est accepté:

[root@laptop]~#kldload snd_driver
[root@laptop]~#cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2007061600/amd64)
Installed devices:
pcm0: <Intel 82801H High Definition Audio Controller> at memory 0xf6dfc000 irq 21 kld snd_hda [20080420_0052] [MPSAFE] (1p:1v/1r:1v channels duplex default)

Dans ce cas présent, c'est le drivers snd_hda qui correspond. Ce driver est déjà inclus par défaut dans le noyau générique depuis la 9.0, mais pour une version plus ancienne on devra déclarer son chargement par la vieille méthode suivante:
[root@laptop]~#echo 'snd_hda_load="YES"' >> /boot/loader.conf
Ou, depuis la 9.0, en ajoutant son nom dans la variable kld_list du fichier /etc/rc.conf.

SMBus

(ce truc la ne sert pas à grand chose)

Charger et vérifier la bonne prise en compte du driver:

[root@laptop]~#kldload ichsmb
[root@laptop]~#dmesg | grep smbus
smbus0: <System Management Bus> on ichsmb0

Puis ajouter ce module à la liste de module à charger automatiquement (kld_load).

ACPI spécifiques constructeurs

Très utile sur les PC portables, il y a les modules ACPI spécifiques aux constructeurs.

Voici la liste des modules dispos sous FreeBSD 9.1:

 Nom du module
 Description
 acpi_asus.ko  Asus Laptop Extras
 acpi_dock.koLaptop Docking Station device driver
 acpi_fujitsu.koFujitsu Laptop Extras
 acpi_hp.koACPI extras driver for HP laptops
 acpi_ibm.koACPI extras driver for IBM laptops
 acpi_panasonic.koACPI hotkey driver for Panasonic laptops
 acpi_sony.koACPI notebook controller driver for Sony laptops
 acpi_toshiba.koToshiba HCI interface
 acpi_video.koACPI Video Extensions driver
 acpi_wmi.koACPI to WMI mapping driver (auto-chargé par les autres si nécessaire)

À ajouter à la variable kld_load en fonction de votre matériel.
Par exemple pour mon laptop HP j'ai: acpi_hp et acpi_video.

Webcam

L'installation du support de webcam demande plusieurs étapes.
Commencer par installer les logiciels nécessaires:

pkg install webcamd v4l_compat libv4l

Puis modifier votre /etc/rc.conf pour ajouter cette ligne:
webcamd_enable="YES"
et ajouter le module cuse4bsd à la liste kld_load.

Une fois terminé, ajoutez votre utilisateur au groupe webcamd:
pw groupmod webcamd -m votre-utilisateur

Puis re-démarrer votre machine.
Pour tester votre webcam, pwcview est très simple

Configuration du Wifi

La méthode la plus facile pour la configuration du wifi est d'utiliser la fonction netconfig de bsdinstall:
[root@laptop]~#bsdinstall netconfig

Usage de label à la place de nom de disque

Comme à l'installation vous avez bien mis des labels gpt à vos partitions, autant utiliser ces labels dans votre fstab pour avoir les avantages suivants:
  • Si vous déplacez vos disques, cela n'impactera pas le fstab
  • C'est plus lisible
Affichez les labels que vous avez déclaré pour vos disques:

root@laptop:/root # gpart show -l
=>       34  490234685  ada0  GPT  (233G)
         34        128     1  (null)  (64k)
        162  480247680     2  ROOT  (229G)
  480247842    8388608     3  (null)  (4.0G)
  488636450    1598269        - free -  (780M)

Dans cet exemple, la partion gpt n°1 de 64k (le boot-loader FreeBSD), et la partition n°3 de 4G (mon swap) n'ont pas de label.
Commencer par leur en poser un:

gpart modify -i 1 -l BOOTLOADER ada0
gpart modify -i 3 -l SWAP ada0


Puis vérifier la prise en compte:

root@laptop:/ # gpart show -l
=>       34  490234685  ada0  GPT  (233G)
         34        128     1  BOOTLOADER  (64k)
        162  480247680     2  ROOT  (229G)
  480247842    8388608     3  SWAP  (4.0G)
  488636450    1598269        - free -  (780M)

Inutile d'aller vérifier dans le /dev/gpt la présence de ces labels: Ils n’apparaisseront qu'après un reboot une fois votre fstab modifié.
Modifier ensuite le fstab existant qui a cette forme:

# Device        Mountpoint      FStype  Options Dump    Pass#
/dev/ada0p2     /               ufs     rw      1       1
/dev/ada0p3     none            swap    sw      0       0

Par:
# Device        Mountpoint      FStype  Options Dump    Pass#
/dev/gpt/ROOT   /               ufs     rw      1       1
/dev/gpt/SWAP   none            swap    sw      0       0

Puis re-démarrer pour vérifier que vous n'avez pas fait d'erreur… Si ça ne fonctionne pas vous êtes bon pour éditer votre fstab dans le shell de secours ;-)

Configuration du système en français

Source: FreeBSD Handbook, Using Localization

En root, rajouter dans /etc/login.conf :

french|French Users Accounts:\
:charset=UTF-8:\
:lang=fr_FR.UTF-8:\
:tc=default:

Et exécuter la commande suivante :

# cap_mkdb /etc/login.conf


Puis éditer le fichier de mot de passe par la commande vipw. , Et rechercher votre login :

# vipw

olivier:$1$00edYNK2$heBNRz65txD0j7bGtB40r.:1001:1001::0:0:Olivier Cochard-Labbe:/home/olivier:/bin/tcsh

  Il faut ajouter «french» entre les ::, ce qui va donner :

olivier:$1$00edYNK2$heBNRz65txD0j7bGtB40r.:1001:1001:french:0:0:Olivier Cochard-Labbe:/home/olivier:/bin/tcsh

Puis, pour que les futurs utilisateurs utilise cette langue par défaut, on ajoute dans /etc/adduser.conf :

defaultclass = french

Configuration du clavier Bépo

Pour l'installation du clavier Bépo en mode console, cf les instructions pour FreeBSD sur le wiki du site clavier-bépo:

fetch http://download.tuxfamily.org/dvorak/devel/fr-dvorak-bepo-kbdmap-1.0rc2.tgz
tar zxvf fr-dvorak-bepo-kbdmap-1.0rc2.tgz
cp fr-dvorak-bepo-kbdmap-1.0rc2/fr-dvorak-bepo.kbd /usr/share/syscons/keymaps/
echo 'keymap="fr-dvorak-bepo"' >> /etc/rc.conf

Permettre à l'utilisateur d'utiliser les périphériques USB, graveur CD/DVD

Il faut entrer cette commande:

echo "vfs.usermount=1" >> /etc/sysctl.conf

Et si vous n'avez pas mis votre utilisateur dans le groupe «operator» et «dialer» (accès aux ports séries) il faut le faire maintenant:

pw group mod operator -m <username>

pw group mod dialer -m <username>

Maintenant, il faut donner les droits en écriture pour les périphériques USB au groupe operator en créant le fichier /etc/devfs.rules:

[localrules=5]
add path 'da*'    mode 0660 group operator
add path 'cd*'    mode 0660 group operator
add path 'uscanner*'    mode 0660 group operator
add path 'xpt*' mode 660 group operator
add path 'pass*' mode 660 group operator
add path 'md*' mode 0660 group operator
add path 'msdosfs/*' mode 0660 group operator
add path 'ext2fs/*' mode 0660 group operator
add path 'ntfs/*' mode 0660 group operator
add path 'usb/*' mode 0660 group operator


Puis ajouter cette ligne dans le fichier /etc/rc.conf :

devfs_system_ruleset="localrules"
 Puis activer les nouvelles règles:

service devfs restart

Et vérifier leur applications:

devfs rule show

Optimisations

Configurer le scheduler pour un usage «desktop»

FreeBSD est par défaut optimisé pour un usage serveur, voici quelques modifications pour l'utiliser comme desktop:

echo "#Enhance desktop responsiveness under high CPU use (200/224)" >> /etc/sysctl.conf
echo "kern.sched.preempt_thresh=224" >> /etc/sysctl.conf

Réparation fsck automatique et background fsck

Pour activer la réponse «yes» au question de fsck au démarrage, il faut ajouter la lignedans le fichier /etc/rc.conf

fsck_y_enable="YES"      # Set to YES to do fsck -y if the initial preen fails.
background_fsck="YES"   # Attempt to run fsck in the background where possible.

Désactivation de l'access time sur votre partition /

Par défaut, l'heure d'accès aux fichiers est noté, ce qui peux consommer du temps (et ca ne sert pas à grand chose).
Éditer le fichier /etc/fstab est ajouter l'option noatime:

#Device          Mountpoint    FSType  Options       Dump    Pass
/dev/gpt/ROOT / ufs rw,noatime 1 1

Pourcentage réservé du disque

Par défaut, FreeBSD reserve 8% du disque pour ses opérations système (défragmentation), si cela est trop pour vous, vous pouvez modifier cette valeur avec «tunefs -m X».

Éviter la création de fichier .core

Pour les fichiers core générés par les applications, ajouter au fichier /etc/csh.login:

limit coredumpsize 0

Pour les fichiers core générés par le noyau, ajouter dans le /etc/sysctl.conf :
kern.coredump=0

Installation des Mise à jour de FreeBSD

Cela ce fait simplement par la commande suivante:

freebsd-update fetch install

Vous devez utiliser le noyaux GENERIC pour que cet outil mette aussi les binaires du noyau à jour.

Installation des logiciels

9.0 ou inférieur

Il faut installer le nouveau gestionnaire de package manuellement.

Commencer par:

  1. Télécharger et installer le tout nouveau gestionnaire de package, cela demande quelques ligne, mais très simple (il sera intégré à partir de la 9.1)
  2. Déclarer le dépôt de package
Voici les lignes (remplacer la version/architecture de Freebsd par la votre):

fetch http://pkg.freebsd.org/freebsd:9:x86:64/latest/Latest/pkg.txz

tar xf ./pkg.txz -s ",/.*/,,g" "*/pkg-static"

./pkg-static add ./pkg.txz

pkg2ng

9.1 ou supérieur

Il suffit de lancer la commande "pkg" pour qu'il s'auto-installe.

Repos WITH_NEW_ORG (uniquement si version inférieur à la 11.0)

Pour bénéficier d'une version XORG supportant KMS sur FreeBSD 9 et 10 (activé par défaut sur les repos de la 11):

mkdir -p /usr/local/etc/pkg/repos
cat > /usr/local/etc/pkg/repos/FreeBSD_new_xorg.conf <<EOF

# /usr/local/etc/pkg/repos/FreeBSD_new_xorg.conf
# It is still required to have /etc/pkg/FreeBSD.conf installed and enabled.
# If that file is missing or if /usr/share/keys/pkg is missing see:
# http://www.freebsd.org/security/advisories/FreeBSD-EN-14:03.pkg.asc

FreeBSD_new_xorg: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/new_xorg",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}
EOF

Utilisation de pkg

Une fois pkg installé, commencer par mettre à jour la liste des paquets présents sur le dépôt officiel:

pkg update

Et pour installer des nouveaux, il suffira de faire:

pkg install truc bidule machin chouette

Et pour les mettres à jour:

pkg upgrade

Environement graphique X11

Commençons par installer xorg et le drivers Intel

pkg install xorg xf86-video-intel

HAL

Xorg est compilé avec le support de HAL (qui ne sert qu'à permettre le montage automatique des clés USB sous les environnements gnome/KDE), on configure le lancement automatique de celui-ci par l'édition du fichier  /etc/rc.conf

dbus_enable="YES"

hald_enable="YES"

Et on les lance:

service dbus start

service hald start

Par défaut, FreeBSD n'utilise pas le procfs. Mais nous allons installer HAL pour gnome qui lui demandera la présence de procfs , on va donc directement éditer le fichier /etc/fstab et lui ajouter cette ligne:

proc /proc procfs rw 0 0

Puis lancer cette commande:

mount /proc

Configuration de la langue du clavier sans HAL

Pour préciser le type de clavier, créer ce fichier: /etc/X11/xorg.conf

Que l'on remplis par le contenus suivant:

Section "InputDevice"
        Identifier "Generic Keyboard"
        Driver "kbd"
        Option "XkbLayout" "fr
EndSection

Pour du bepo, il suffit d'ajouter une clé dans la section:

Option "XkbVariant" "bepo"

Configuration de la langue du clavier avec HAL

Inutile sous Gnome/KDE.

HAL possède 1 gros problème: Il n'est pas capable d'utiliser la webcam pour analyser la peinture sur les touches de votre clavier pour deviner la configuration de celui-ci.

Pour préciser le type de clavier, créer ce fichier: /usr/local/etc/hal/fdi/policy/x11-input.fdi

Que l'on remplis par le contenus suivant:

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keyboard">
      <merge key="input.xkb.Layout" type="string">fr</merge>
      <merge key="input.xkb.Variant" type="string">latin9</merge>
      <merge key="input.xkb.Option" type="string">compose:rwin</merge>
    </match>
  </device>
</deviceinfo>

Pour du bepo, il suffit de remplacer "latin9" par "bepo" pour la clé input.xkb.Variant.

Vitesse de la souris

Sous Xorg, la commande "xset mouse 5 1" permet d'améliorer l'accélération, il suffit d'ajouter cette ligne à votre ~/.xinitrc
Et si cela ne suffit pas, il faut passer par la méthode "autostart" de votre environnement.
Sinon l'idée de modifier votre .xsession pour lui ajouter la ligne:
sh .xinitrc
Par exemple pour LXDE il faut créer fichier ~/.config/lxsession/LXDE/autostart et lui mettre la ligne suivante:
@xset m 5 1

Permettre à l'utilisateur d'éteindre/redémarrer/monter des disques avec HAL

Étape Inutile sous Gnome

Votre utilisateur doit être dans le group «operator».
Éditer le fichier /usr/local/etc/PolicyKit/PolicyKit.conf comme ceci:

<config version="0.1">
    <match user="root">
    <return result="yes"/>
    </match>
    <define_admin_auth group="wheel|operator" />
    <match action="org.freedesktop.hal.storage.mount-removable">
        <return result="yes" />
    </match>
    <match action="org.freedesktop.hal.storage.mount-fixed">
        <return result="yes" />
    </match>
    <match action="org.freedesktop.hal.storage.eject">
        <return result="yes" />
    </match>
    <match action="org.freedesktop.hal.storage.unmount-others">
        <return result="yes" />
    </match>
    <match action="org.freedesktop.hal.power-management.reboot">
        <return result="yes" />
    </match>
    <match action="org.freedesktop.hal.power-management.shutdown">
        <return result="yes" />
    </match>
    <match action="org.freedesktop.hal.power-management.hibernate">
        <return result="yes" />
    </match>
    <match action="org.freedesktop.hal.power-management.suspend">
        <return result="yes" />
    </match>
</config>

SLIM

Ceux qui n'utiliseront ni gnome ni KDE peuvent utiliser slim comme gestionnaire de session.

Installation

Voici comment le faire fonctionner correctement:

pkg inst slim

Puis créer un fichier .xinitrc de ce style:

DEFAULT_SESSION=startlxde

#Slim ne prend pas en compte les locales de la consoles, il faut les re-forcer ici:

export LANG="fr_FR.UTF-8"

export MM_CHARSET="UTF-8"
case $1 in
lxde)
    exec startlxde
    ;;
xfce4)
    exec startxfce4
    ;;
icewm)
    icewmbg &
    icewmtray &
    exec icewm
    ;;
wmaker)
    exec wmaker
    ;;
blackbox)
    exec blackbox
    ;;
*)
    exec $DEFAULT_SESSION
    ;;
esac

Activez sont lancement automatique:

echo 'slim_enable="YES"' >> /etc/rc.conf

Thème FreeBSD

Voici comment y installer un jolis thème FreeBSD:

pkg install slim-themes

Et éditer le fichier /usr/local/etc/slim.conf pour remplacer la ligne:

current_theme       default

Par

current_theme           fbsd


Gnome


Les habitués de cet environnement ultra complet l'installeront par les commandes suivantes:
pkg install gnome2
pkg install gdm

On configure le démarrage de gnome automatiquement en ajoutant ces lignes dans le /etc/rc.conf:

gnome_enable="YES"

Il est très important de lire les conseils d'installation FreeBSD pour Gnome.

Le fichier /boot/loader.conf

Le process gamin de gnome conseil d'augmenter le kern.maxfiles:

kern.maxfiles="25000"

Comportement de Nautilus (le navigateur de fichier)

Depuis Gnome 2.8, Nautilus fonctionne en «spatial» mode, ce qui fait qu'il ouvre une nouvelle fenêtre à chaque fois.

Pour garder la même fenêtre, aller dans le menu:

Système->Preferences->Gestion des fichiers->Comportement, et cocher la case «Toujours ouvrir dans des fenêtres de navigation».

Montage de GROS disque amovible fat32 avec support des accents

Par défaut, le montage de clef USB n'utilise pas les bonnes options, ce qui fait que les acccents ne sont pas supporté, on corrige donc le problème avec gconf-editor (Outils Système => Éditeur de configuration) ou en ligne de commande:

gconf-editor

Puis on se déplace dans la branche: system/storage/default-options/vfat,
Et dans le mount_options, on ajoute ces 2 options:

large
-L=fr_FR.UTF-8

-D=CP850
Ce qui donne une option complète: longnames,large,-u=, -L=fr_FR.UTF-8,-D=CP850

Permettre la gravure de CD par Nautilus

Nautilus nécessite la présence de graveur SCSI, il faut donc charger le module ATAPI => SCSI:

kldload atapicam

et vérifier le bon fonctionnement, en affichant la liste des disques SCSI:

[root@d630]~#camcontrol devlist
<HL-DT-ST CDRW/DVD GCCT10N A100>   at scbus0 target 0 lun 0 (pass0,cd0)

Puis ajouter le chargement de ce module automatiquement en l'ajoutant dans la liste kld_list du fichier /etc/rc.conf.

Police de caractères

Puis on installe de jolies polices de caractères:

pkg install freefonts dejavu urwfonts webfonts

On vérifie ensuite quelles sont bien prises en compte dans xorg par la commande:
fc-list

Si vous rencontrez un problème d'anti-aliasing avec la police Helvetica (j'ai ce problème sous Firefox), cf les conseils du handbook concernant cette police pour le corriger:

cat > /usr/local/etc/fonts/local.conf <<EOF
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>Helvetica</string>
             </test>
             <edit name="family" mode="assign">
                 <string>sans-serif</string>
             </edit>
         </match>      
</fontconfig>
EOF


Les applications

Firefox

On l'install en français par ces deux commandes:

pkg install firefox firefox-i18n

Puis charger automatiquement le module "sem" en l'ajoutant à la liste kld_list:

kldload sem

Plugin Flash

Vous etes sur de vouloir cette merde d'Adobe flash contraire aux principes d'utilisation de standard ouvert sur Internet ?
Si c'est juste pour regarder YouTube le plus simple est d'utiliser un plugin sur votre navigateur qui force YouTube en HTML5 comme "YouTube ALL HTML5" par exemple.

Et si vous insistez, ben tant pis pour vous, voila comment faire:

echo 'linux_enable="YES"' >> /etc/rc.conf
/etc/rc.d/abi start
pkg install nspluginwrapper
linux-f10-flashplugin
ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so /usr/local/lib/browser_plugins/


Puis monter le linprocfs avec le compte root:

kldload linprocfs
mount -t linprocfs linprocfs /compat/linux/proc

Puis lancer avec votre compte utilisateur:

nspluginwrapper -a -v -i

a ajouter dans le /etc/fstab:

linproc         /compat/linux/proc      linprocfs       rw 0 0

Lecteur multimédia Totem

Ce lecteur à été installé avec l'installation du meta packet gnome2, par contre l'installation n'a pas modifié un fichier système, ce qui fait que totem risque de planter à chaque lecture de gros fichier vidéo.
En effet, il y a une remarque très importante dans le fichier /ports/multimedia/totem/files/pkg-message.in

[laptop]~#cat /usr/ports/multimedia/totem/files/pkg-message.in
********************************************************
* Make sure you've enough shared memory, the xine FAQ  *
* advises to have the following sysctl settings:       *
* kern.ipc.shmmax=67108864                             *
* kern.ipc.shmall=32768                                *
********************************************************

Il faut donc ajouter dans le fichier /etc/sysctl.conf les lignes suivantes:
kern.ipc.shmmax=67108864
kern.ipc.shmall=32768

Java

L'installer avec la commande suivante:

pkg install openjdk6

pkg install icedtea-web

Vérifier que les deux lignes soient présentes dans vorte /etc/fstab:

fdesc   /dev/fd         fdescfs         rw      0       0
proc    /proc           procfs          rw      0       0

J'ai du déclarer manuellement le plugins sous firefox par ces commandes:

ln -s /usr/local/lib/IcedTeaPlugin.so $HOME/.mozilla/plugins/

Et configurer firefox pour qu'il ouvre les fichier .jnlp avec /usr/bin/local/javaws
(Edit:preferences:applications)

LibreOffice

Comme pour les autres:

pkg installl fr-libreoffice

Il vous restera à installer l'extension «dictionnaire français» et l'extension de «correction grammaticale».


Montage automatique des disques amovibles (sans HAL)


Pour la détection d'insertion d'un disque, son analyse et le montage de celui-ci on va installer le script automount et si l'on souhaite ajouter le support d'autre file systèmes: les packages fuse-[ntfs|exfat|ext4].

pkg install automount fusefs-ntfs fusefs-exfat fusefs-ext4

Commencer par l'activation de fuse, il faut le charger au démarrage en ajoutant cette ligne au fichier /etc/rc.conf:

fusefs_enable="YES"

Puis le lancer le service fusefs:

service fusefs start

Maintenant il reste à configure automount pour qu'il monte avec les droits de votre utilisateur les disques amovibles et qu'il vous permette de les démonter.
Voici le fichier /usr/local/etc/automount.conf que j'utilise:

USERUMOUNT="YES"
FM="thunar"
USER=olivier
ENCODING=en_US.ISO8859-15
CODEPAGE=cp852
ATIME="NO"
REMOVEDIRS="YES"

Puis on relance le service devd pour qu'il charge la configuration d'automount:
service devd restart

VirtualBox-OSE

Voici pour son installation:
pkg install virtualbox-ose
echo 'vboxnet_enable="YES"' >> /etc/rc.conf
echo "kld_list='vboxdrv'" >> /etc/rc.conf # ou si kld_list existe déja, ajouter vboxdrv à la liste existante
kldload vboxdrv
/usr/local/etc/rc.d/vboxnet start
pw groupmod vboxusers -m votre-utilisateur


Puis on lance Virtualbox avec son utilisateur classique.
Plus d'info sur Virtualbox sur le wiki FreeBSD.

Note pour ceux qui re-compilent leur noyaux de temps en temps: ils peuvent se simplifier la vie en rajoutant «emulators/virtualbox-ose-kmod» à la variable PORTS_MODULES dans le fichier /etc/make.conf (pour lancer automatiquement la re-compilation du port suite à la re-compilation d'un nouveau noyaux).

GNS3


L'état actuel de ce portage sur FreeBSD: Il s'installe, ce lance et on peut simuler un routeur Cisco, lancer des VM qemu et Virtualbox.
À installer comme ceci:

pkg install gns3

Sous GNS3 vous pouvez remplacer le lancement de l'affreux x-term par le plus jolis gnome-terminal à chaque connexion console à vos routeur en allant dans le menu:
Editer/préférences... /Général et en utilisant cette commande pour le terminal:
gnome-terminal -t %d -e 'telnet %h %p' >/dev/null 2>&1 &

CUPS

Passons à l'imprimante:

pkg install cups

Puis, pour une imprimante locale (USB) éditez le fichier /etc/devfs.rules et aujoutez:

[localrules=10]
add path 'unlpt*' mode 0660 group cups
add path 'ulpt*' mode 0660 group cups
add path 'lpt*' mode 0660 group cups
add path 'usb/X.Y.Z' mode 0660 group cups

En remplaçant X.Y.Z par l'identifiant USB correspondant à votre imprimante (cherchez le "ugenX.Y" dans votre dmesg).
Et vérifier la présence de ces lignes dans votre rc.conf:

devfs_system_ruleset="localrules"
cupsd_enable="YES"

Il est possible d'installer des drivers supplémentaires pour cups. Comme je possède par exemple une imprimante Samsung ML-2955ND, j'installe en plus print/splix.
Puis on active le tout:
service devfs restart
service cupsd restart
Ne reste plus qu'a lancer le navigateur sur http://localhost:631


Trucs & astuces

L'écran de démarrage (splash screen)

Il est possible d'afficher une image à la place du défilement du dmesg au démarrage.
Pour cela, récupérer une image bmp (256 couleurs et résolution de 1024x768 max) à mettre dans le dossier /boot sous le nom splash.bmp par exemple:

cd /boot
fetch http://gugus69.free.fr/images/splash.bmp

Puis ajouter ces commandes aux fichiers /boot/loader.conf:

splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bmp"


Configurations particulières

Gérer la présence d'un proxy HTTP/HTTPS

Pour l'utilisateur sous gnome: Système -> Préférence -> Serveur Mandataire

Pour une session sous l'utilisateur root (qui ne prend pas en compte le paramètrage de gnome), entrer ces deux commandes (la deuxième ne sert que pour l'authentification d'un proxy):

setenv HTTP_PROXY "10.0.0.10:8080"
setenv HTTP_PROXY_AUTH "basic:*:login:password"
setenv http_proxy 'http://login:password@10.0.0.10:8080/

Pour utiliser le proxy pour la compilation des ports:

echo "FETCH_ARGS=-pRr" >> /etc/make.conf
echo "FETCH_ENV=http_proxy='http://login:password@10.0.0.10:8080/'" >> /etc/make.conf

Pour utiliser subversion, editer le fichier ~/.subversion/servers et y ajouter les lignes suivantes:

http-proxy-host = proxy-hostname
http-proxy-port = proxy-port
http-proxy-username = username
http-proxy-password = password

Pour faire des sessions SSH, installer l'utilitaire /usr/ports/net/corkscrew.

Pour utiliser les outils qui ne gère pas les proxy nativement (csup par exemple) il faut utiliser des tunnels SSH ou /usr/ports/net/prtunnel puis lancer le tunnel:

1) Regarder dans le /etc/standard-supfile à l'entrée  default host= pour connaitre le nom du serveur cvsup utilisé

2) prtunnel -t http -H proxy.de.entreprise -P 3128 -D 5999 cvsup2.FreeBSD.org 5999

3)Editer le /etc/standard-supfile (ou celui que vous utilisez) et modifier l'entrée default host par:
...
*default host=127.0.0.1

4)lancer le csup /etc/standard-supfile

5)Puis tuer le tunnel: killall -9 prtunnel


Serveur TFTP

La configuration d'un serveur TFTP est très simple:

  1. Créer le dossier /tftpboot
  2. Mettre vos fichier à partager dans le dossier /tftpboot
  3. Editer le fichier /etc/inetd.conf et décommenter la ligne tftp
  4. Ajouter dans le fichier /etc/rc.conf la ligne:
    • inetd_enable="YES"
  5. Puis lancer inetd:
    • service inetd start

Attention, le noyaux de FreeBSD refuse les requêtes des clients TFTP utilisant le port source 0 !

Et comme aucune RFC n'interdit au client TFTP d'utiliser le port 0 comme source, ben il existe des équipements qui le font et ne fonctionneront donc pas avec un serveur TFTPD sous FreeBSD.

C'est le cas par exemples des clients TFTP du boot-loader des firewalls Juniper Netscreen ISG-1000 et ISG-2000 qui vont générer ce type de message dans votre /var/log/messages:

tftpd[4894]: DATA block 1, attempt 0 failed (Error 49: Can't assign requested address)

Si vous voulez modifier ce comportement, il faut commenter les 2 lignes suivantes de la fonction in_pcbconnect_setup() du fichier /usr/src/sys/netinet/in_pcb.c :

if (sin->sin_port == 0)
                return (EADDRNOTAVAIL);
Et recompiler votre noyaux...

Émulateur de terminal série (équivalent de l'hyperterminal ou teraterm)

Il existe 2 outils inclus dans FreeBSD pour cela: cu et tip

Par contre, attention car il existe deux représentations de vos ports séries (man uart):

  1. cuauX, pour les appels sortant
  2. ttyuX, pour les appels entrant

cu s'utilise avec des options en ligne de commande, par exemple:

cu -l /dev/cuau0 -s 115200

J'ai un problème à résoudre: le comportement de la touche DEL à corriger.

tip lui utilise le fichier de configuration /etc/remote.

Vous trouverez plus d'information dans l'article: FreeBSD Basic - Accessing a Cisco Router.

Collecte d'information

Inventaire matériel

La liste des équipements PCI detecté s'affiche par la commande:
pciconf -lv

Celle des équipements USB par:
usbconfig

Liste des équpements detecté par HAL:
lshal

Charge système par des graphiques: systat

est possible d'avoir un aperçus de la charge système par la commande:

systat -vm

Mais cette commande permet aussi de connaitre la charge réseau actuelle avec la commande:
systat -ip

Charge système en mode compact: vmstat

Pratique pour connaitre ou le goulot d'étranglement:

[olivier@laptop]~>vmstat
 procs      memory      page                   disk   faults         cpu
 r b w     avm    fre   flt  re  pi  po    fr  sr ad4   in   sy   cs us sy id
 1 0 0   4831M   209M 14907   1   1   0 14725  34   0  663 13745 3511 23  7 70

Et pour un rafraichissement toute les 2 secondes:

vmstat -w 2

Et pour connaitre qui consomme les interruptions matériels (la colonne rate est importante):
> vmstat -i
interrupt                          total       rate
irq1: atkbd0                        6483          3
irq9: acpi0                         3236          1
irq12: psm0                       347988        167
irq14: ata0                        16431          7
irq16: cbb0 uhci2+              13624982       6556
irq20: uhci0                          14          0
irq22: ehci0                           2          0
cpu0: timer                      4154687       1999
irq256: em0                        53736         25
irq257: hdac0                       5797          2
cpu1: timer                      4153683       1998
irq258: vgapci0                   235585        113
Total                           22602624      10877

Sur cet exemple, on remarque une tempête d'interruption au nivea du ccb (cardbus), mais c'est en fait un bug lié à la carte graphique.


Usage de ntfs-3g dans le fstab

Voici un exemple de lign du fstab pour le montage d'un disque NTFS une fois installé fuse ntfs-3g:

/dev/ntfs/System    /media/windows    ntfs    rw,mountprog=/usr/local/bin/ntfs-3g,late 0 0


Résolution de problème

Problème de bibliothèque manquante

Suite à une mise à jour majeur: Passage de FreeBSD 7.1 Release à 8.0 Current, j'ai un programme qui ne se lance plus:

[olivier@laptop]~>wireshark
/libexec/ld-elf.so.1: Shared object "libkrb5.so.9" not found, required by "wireshark"

Ceci est très fortement lié à un gros changement de la librairie libkrb5 entre ces deux versions de FreeBSD.
Je vérifie la présence de la librarie libkrb5.so:
 [root@laptop]~#ldconfig -r | grep libkrb5.so
    99:-lkrb5.10 => /usr/lib/libkrb5.so.10

Bingo: elle est passée de version .9 à .10, voila pourquoi wireshark, compilé avec la version .9 n'arrive plus à ce lancer.
Une recompilation et reinstallation de wireshark suffit à résoudre ce problème… Mais quid des autres applications ??
Il existe une solution toute simple pour résoudre ce problème: Regarder quelles sont les bibliothèques utilisées par l'ensemble des binaires, et recompiler les ports liés à des bibliothèques inexistante.

Pour cela, référez vous à cet article: Réparation de bibliothèques manquantes.


umount failed: Device busy

Je rencontre assez souvent le problème suivant: Impossible de démonter certain volume, alors que je ne les utilise plus:

[root@laptop]~#umount /usr/obj/nanobsd.full/_.mnt/
umount: unmount of /usr/obj/nanobsd.full/_.mnt failed: Device busy

Regarder quel est le process qui nous empèche de démonter ce dossier:

[root@laptop]~#fstat /usr/obj/nanobsd.full/_.mnt/
USER     CMD          PID   FD MOUNT      INUM MODE         SZ|DV R/W NAME
olivier  gam_server  4264   36 /usr/obj/nanobsd.full/_.mnt      2 drwxr-xr-x     512  r  /usr/obj/nanobsd.full/_.mnt/

Il s'agit de gam_server, mais qu'est ce que c'est que ce truc ???

[root@laptop]~#locate gam_server
/usr/local/libexec/gam_server
/usr/ports/devel/gamin/files/patch-server_gam_server.c
[root@laptop]~#pkg wich /usr/local/libexec/gam_server
/usr/local/libexec/gam_server was installed by package gamin-0.1.10_3
[root@laptop]~#pkg info -D gamin
Information for gamin-0.1.10_3:

Description:
Gamin is a file and directory monitoring system defined to be a subset of the
FAM (File Alteration Monitor) system. This is a service provided by a library
which allows to detect when a file or a directory has been modified.

Whereas the FreeBSD port of FAM polls files every few seconds, this port
includes a kqueue(2) backend for immediate notification of most alterations.

WWW: http://www.gnome.org/~veillard/gamin/index.html

Il s'agit d'un process qui surveille les fichiers et dossier.... Peux-être qu'il ne sert à rien ?

On demande la liste des packages dépendant de ce truc:

pkg info -r gamin-0.1.10_3

Bon, vu la taille de la réponse ca à l'air utile...  Avant d'utiliser une méthode de bourrin (tuer le process), on va vérifier qu'il n'y a pas de notes particulière concernant ce programe:

[root@d630]~#pkg info -D gamin-0.1.10_3
Information for gamin-0.1.10_3:

Install notice:
===============================================================================

Gamin will only provide realtime notification of changes for at most n files,
where n is the minimum value between (kern.maxfiles * 0.7) and
(kern.maxfilesperproc - 200). Beyond that limit, files will be polled.

If you often open several large folders with Nautilus, you might want to
increase the kern.maxfiles tunable (you do not need to set
kern.maxfilesperproc, since it is computed at boot time from kern.maxfiles).

For a typical desktop, add the following line to /boot/loader.conf, then
reboot the system:

    kern.maxfiles="25000"

The behavior of gamin can be controlled via the various gaminrc files.
See http://www.gnome.org/~veillard/gamin/config.html on how to create
these files.  In particular, if you find gam_server is taking up too much
CPU time polling for changes, something like the following may help
in one of the gaminrc files:

# reduce polling frequency to once per 10 seconds
# for UFS file systems in order to lower CPU load
fsset ufs poll 10

===============================================================================


Ok, les informations donnée sur l'URL sont très interressante, je vais donc essayer de configurer finement le gamin pour qu'il arrête de m'embêter:

mkdir /usr/local/etc/gamin

echo "fsset ufs poll 10" > /usr/local/etc/gamin/gaminrc

killall -9 gam_server

Comments