Je soutiens


Promouvoir et soutenir le logiciel libre

Activité récente 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 Les Drivers
      1. 3.3.1 Chargement du drivers du lecteur de carte SD
      2. 3.3.2 Prise en charge d'une carte Wifi non incluse dans le kernel
      3. 3.3.3 Configuration du Wifi manuellement
      4. 3.3.4 Audio
      5. 3.3.5 SMBus
    4. 3.4 Usage de label à la place de nom de disque
    5. 3.5 Configuration du système en français
    6. 3.6 Configuration du clavier Bépo
      1. 3.6.1 Activation de l'UTF-8 sur la console
    7. 3.7 Permettre à l'utilisateur d'utiliser les périphériques USB, graveur CD/DVD
    8. 3.8 Optimisations
      1. 3.8.1 Configurer le scheduler pour un usage «desktop»
      2. 3.8.2 Réparation fsck automatique et background fsck
      3. 3.8.3 Désactivation de l'access time sur votre partition /
      4. 3.8.4 Pourcentage réservé du disque
      5. 3.8.5 Éviter la création de fichier .core
      6. 3.8.6 Gestion de l'énergie sur un PC portable
    9. 3.9 Installation des Mise à jour de FreeBSD-Release
  4. 4 Installation des logiciels
    1. 4.1 Méthode des packages
    2. 4.2 Méthode des ports (compilation)
      1. 4.2.1 Configuration du /etc/make.conf
    3. 4.3 Utilisation des ports
    4. 4.4 Remarque pour ceux qui ont installé une version current
  5. 5 Environement graphique X11
    1. 5.1 HAL
      1. 5.1.1 Configuration de la langue du clavier avec HAL
      2. 5.1.2 Vitesse de la souris
      3. 5.1.3 Permettre à l'utilisateur d'éteindre/redémarrer/monter des disques
    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
  6. 6 Les applications
    1. 6.1 Firefox
      1. 6.1.1 Plugin Flash
      2. 6.1.2 Suport des Copier/Coller avec Google docs
      3. 6.1.3 Utiliser Gmail pour les liens mailto
      4. 6.1.4 Police de caractères
    2. 6.2 Lecteur multimédia Totem
    3. 6.3 Java
    4. 6.4 LibreOffice
    5. 6.5 NTFS-3g
    6. 6.6 VirtualBox-OSE
    7. 6.7 Qemu
    8. 6.8 GNS3
    9. 6.9 CUPS
  7. 7 Trucs & astuces
    1. 7.1 Accélérer le boot
    2. 7.2 L'écran de démarrage (splash screen)
    3. 7.3 Configurations particulières
      1. 7.3.1 Gérer la présence d'un proxy HTTP/HTTPS
      2. 7.3.2 Serveur TFTP
      3. 7.3.3 Émulateur de terminal série (équivalent de l'hyperterminal ou teraterm)
    4. 7.4 Collecte d'information
      1. 7.4.1 Inventaire matériel
      2. 7.4.2 Charge système par des graphiques: systat
      3. 7.4.3 Charge système en mode compact: vmstat
    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 9.0 installé pour une utilisation optimisé «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 «vrais» 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 2003;
  • LibreOffice;
  • Truecrypt, car il s'agit de le la seul solution mutliplateforme de chiffrement que je connaisse;
  • GNS3, superbe simulateur de routeur Cisco;
  • Aircrack-ng (avec airerplay de fonctionnel pour de l'injection de paquet);
  • Wireshark;
  • Firefox avec si possible le support de cette grosse merde d'Adobe flash 9/10 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.

Récupération du fichier ISO/IMG

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

Pour les vieux qui utilisent toujours les CD:

  • ftp://ftp.free.fr/.mirrors1/ftp.freebsd.org/releases/amd64/ISO-IMAGES/9.0/FreeBSD-9.0-RC2-amd64-disc1.iso
  • Puis il suffit de décompresser et graver cette image ISO sur un CD-RW puis de démarrer le PC dessus.
Pour les jeunes qui utilisent des clés USB:
  • ftp://ftp.free.fr/.mirrors1/ftp.freebsd.org/releases/amd64/ISO-IMAGES/9.0/FreeBSD-9.0-RC2-amd64-memstick.img
  • Puis on transfère cette image à coup de dd, ou pour les Windowsiens d'Image writer, à destination d'une clé USB et de démarrer le PC dessus.


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:
    • Si vous avez choisis une version BETA/-current, je vous conseille de sélectionner en plus le «System source code», car les mises à jours binaires (freebsd-update) ne sont pas disponibles.
    • Si vous avez chosis une version STABLE, laissez par défaut.
  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)
    • 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!)
  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 prompt sexy (pas d'auto-complétion, ni de couleur) on va donc le configurer en éditant le fichier ~/.cshrc pour lui ajouter les lignes suivantes:

set prompt='%B[%n@%m%b]%B%~%b%#'
set autolist
set nobeep
set color
set colorcat
setenv LESS -x4
setenv PAGER less
alias ls ls -G
alias ll ls -hl

Pour faire ca proprement, il faut insérer ces lignes après la ligne commentée «# An interactive shell -- set some stuff up» du fichier .cshrc installé par défaut.

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@d630]~#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


On charge manuellement les drivers pour tester qu'ils correspondent bien:
kldload mmc
kldload mmcsd
kldload sdhci

Puis on vérifie:
[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 édite ensuite le fichier /boot/loader.conf pour charger automatiquement ces drivers au démarrage:
echo 'mmc_load="YES"' >> /boot/loader.conf
echo 'mmcsd_load="YES"'>> /boot/loader.conf
echo 'sdhci_load="YES"'>> /boot/loader.conf

Prise en charge d'une carte Wifi non incluse dans le kernel


Cette exemple a été pris sur un FreeBSD 8.0 et il n'est plus d'actualité pour un 9.0, mais je le garde pour information.
On récupère le type de chipset utilisé par cette commande:

[root@d630]~#pciconf -lv
(...)
vendor     = 'Intel Corporation'
    device     = 'Intel 4965AGN Intel® Wireless WiFi Link 4965AGN(supporting 802.11a/b/g/Draft-N)'
    class      = network
(...)

Note: Voici les indications pour ajouter à FreeBSD 8.2 les drivers de carte Intel(R) PRO/Wireless 6205a.
On recherche quel drivers FreeBSD pourrais être utile pour le chipset 4965 (merci Fneufneu):
[root@d630]~#zgrep 4965 /usr/share/man/man4/*
/usr/share/man/man4/if_iwn.4.gz:.Nd "Intel Wireless WiFi Link 4965/5000 IEEE 802.11n driver"
/usr/share/man/man4/if_iwn.4.gz:.Cd "device iwn4965fw"
/usr/share/man/man4/if_iwn.4.gz:iwn4965fw_load="YES"
/usr/share/man/man4/if_iwn.4.gz:Wireless WiFi Link 4965 and 5000 series of PCI-Express network adapters.
(etc...)

Le driver iwn semble correspondre (qui n'est inclus qu'a partir de FreeBSD 8.0).
On vérifie donc avec un petit man:
[root@d630]~#man iwn
(etc...)
iwn — Intel Wireless WiFi Link 4965/5000 IEEE 802.11n driver
(etc...)

Le man page confirme bien que c'est le bon drivers et nous explique comment le charger.
On le charge le module:
[root@d630]~#kldload if_iwn
[root@d630]~#kldload iwn4965fw

Puis on vérifie que ca a fonctionné:

[root@d630]~#dmesg | grep iwn
iwn0: <Intel(R) PRO/Wireless 4965BGN> mem 0xf6cfe000-0xf6cfffff irq 17 at device 0.0 on pci12
iwn0: MIMO 2T3R, MoW2, address 00:1d:e0:72:10:01
iwn0: [ITHREAD]
iwn0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
iwn0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
iwn0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps

[root@d630]~#ifconfig iwn0
iwn0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290
    ether 00:1d:e0:72:10:01
    media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)
    status: no carrier

On édite ensuite le fichier /boot/loader.conf pour charger automatiquement ces drivers au démarrage:
[root@d630]~#echo 'if_iwn_load="YES"' >> /boot/loader.conf
[root@d630]~#echo 'iwn4965fw_load="YES"'>> /boot/loader.conf

Maintenant on active la carte :
[root@d630]~#ifconfig iwn0 up

Configuration du Wifi manuellement

Si vous n'avez pas configuré le wifi par l'installeur, voici les étapes.
Il faut cloner la carte principale en une carte secondaire «virtuelle», et appliquer les configurations sur cette carte secondaire.
[root@d630]~#ifconfig wlan create wlandev iwn0
wlan0
[root@d630]~#ifconfig wlan0 country fr
[root@d630]~#ifconfig wlan0 up


La carte étant activée, on affiche la liste des réseaux Wifi disponible:
[root@d630]~#ifconfig wlan0 scan
SSID            BSSID              CHAN RATE   S:N     INT CAPS
FreeNet         1e:fa:f2:b2:5e:48    1   54M -73:-95  100 EP   WPA
NEUF_26C0       00:17:33:e2:85:a2   11   54M -94:-95  100 E  
FON_FreeNAS     00:18:84:33:af:f1    2   54M -68:-95  100 ES   WME ATH
Gugus           00:18:84:33:af:f2    2   54M -68:-95  100 EPS  WME WPA ATH

Il faut maintenant configurer le fichier de configuration wpa_supplicant (qui est valable pour n'importe quel réseau: ouvert, WPA ou WEP):

[root@d630]~#vi /etc/wpa_supplicant.conf
#Exemple pour du WPA
network={

    ssid="NETWORK-NAME"
    key_mgmt=WPA-PSK
    pskw="WPAPASSWORD"
    priority=3

}
#Exemple pour du WEP
network={
   ssid="NETWORK-NAME"
   key_mgmt=NONE
   wep_key0="WEP-KEY"
   wep_tx_keyidx=0
   auth_alg=SHARED
   priority=2

}
#Exemple pour un hotspot
network={
  ssid="orange"
  key_mgmt=NONE
  priority=1
}


Puis on ajoute la ligne suivant dans le fichier /etc/rc.conf:

wlans_iwn0="wlan0"
ifconfig_wlan0="country FR WPA DHCP"

(remplacer iwn0 par le nom de votre carte wifi)

Audio


Pour le son, on charge un «méta» drivers qui va charger tous les drivers audio, puis on regarde celui qui est accepté:

[root@d630]~#kldload snd_driver
[root@d630]~#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.
On ajoute le chargement automatique de ce driver au démarrage :
[root@d630]~#echo 'snd_hda_load="YES"' >> /boot/loader.conf

SMBus

(ce truc la ne sert pas à grand chose)

On charge le driver:

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

On ajoute au fichier /boot/loader.conf.local la ligne suivante

[root@d630]~#echo 'ichsmb_load="YES"' >> /boot/loader.conf

Usage de label à la place de nom de disque

Sur FreeBSD 8.X, il existe un nouveau drivers SATA (ahci) non activé par défaut (qui supporte le NCQ): Sur la FreeBSD 9.0 ce drivers est activé par défaut.
Le problème est que le chargement de ce nouveau drivers va changer le nom de votre disque (de ad0 il va passer à ada0):
Or dans votre fstab, c'est le nom ad0 qui est inscris en dur. On va donc faire évoluer votre système pour utiliser une nomination plus abstraite:
  1. Re-démarrage en single user
  2. Création d'un label UFS sur votre disque
  3. Modification du fstab pour utiliser le label au lieu du nom du drivers disque
  4. Vérification de votre fstab
  5. Chargement du nouveau drivers

Re-démarrer votre poste de travail, et dans le menu de sélection de démarrage de FreeBSD sélectionnez "Single user".

Puis créer un label sur votre partition root (qui est ad0s1a dans mon cas) et le swap (ad0s1b dans cet example):
glabel label ROOTFS /dev/ad0s1a
glabel label SWAP /dev/ad0s1b


Puis vérifier la prise en compte:

[root@d630]~>glabel status
                  Name  Status  Components
ufsid/4b4b9a0eb6553c91     N/A  ad0s1a
            label/ROOTFS   N/A  ad0s1a
            label/SWAP     N/A  ad0s1b

On monte le / en lecture-écriture pour modifier votre /etc/fstab
mount -o rw /
vi /etc/fstab

Et remplacer les lignes:
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1a             /               ufs     rw,noatime      1       1
/dev/ad0s1b             none            swap    sw              0       0

Par:

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/label/ROOTFS            /              ufs     rw,noatime      1       1
/dev/label/SWAP             none            swap    sw              0       0


Ensuite, on lance le chargement automatique du drivers AHCI:

echo 'ahci_load="YES"' >> /boot/loader.conf

Puis on re-démarre.

Configuration du système en français

Source: FreeBSD Handbook, Using Localization

En root, on rajoute dans /etc/login.conf :

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

Et on exécute la commande suivante :

# cap_mkdb /etc/login.conf


Puis on édite 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

Pour la prise en compte en mode mono-utilisateur (nécessite une re-compilation du noyaux), Il suffit d'ajouter les options suivantes dans votre fichier de configuration du noyau:
options         ATKBD_DFLT_KEYMAP
makeoptions ATKBD_DFLT_KEYMAP=fr-dvorak-bepo
options UKBD_DFLT_KEYMAP
makeoptions UKBD_DFLT_KEYMAP=fr-dvorak-bepo

Puis il faut désactiver le module kbdmux (incompatible avec la personnalisation réalisée ci-dessus) en rajoutant dans le fichier /boot/device.hints :

  hint.kbdmux.0.disabled="1"

Activation de l'UTF-8 sur la console

Cette section est valable à partir de FreeBSD 8.0 uniquement.
Il faut ajouter les deux lignes suivantes dans le fichier de configuration du noyaux (à recompiler et ré-installer ensuite):
options TEKEN_UTF8
options TEKEN_XTERM

Puis éditer le fichier /etc/ttys et remplacer les lignes:
ttyv*   "/usr/libexec/getty Pc"     cons25   on  secure

par
ttyv*   "/usr/libexec/getty Pc"     xterm   on  secure


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:

/etc/rc.d/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/label/ROOTFS / ufs rw,noatime 1 1

Pourcentage réservé du disque

Par défaut, FreeBSD reserve 8% du disque pour ces opérations système (défragmentation), si cela est top 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

Gestion de l'énergie sur un PC portable

FreeBSD n'est pas du tout optimisé pour la gestion d'énergie.

On va donc limiter un peux la casse en activant powerd:
echo 'powerd_enable="YES"' >> /etc/rc.conf
/etc/rc.d/powerd start


Si cela ne vous suffit pas,il y a pleins d'autre idées sympas dans un le thread «Fighting for power» sur la mailing list FreeBSD-current et sur la page Tuning Power Consumption.

Installation des Mise à jour de FreeBSD-Release

(Valable uniquement pour les versions RELEASE, ne fonctionne pas avec les versions STABLE)

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.

À rédiger: inclure les conseils présents ici: HOWTO: keeping FreeBSD's base system and packages up-to-date

Installation des logiciels

Méthode des packages

C'est cette méthode qui est conseillée car la plus rapide et simple.

pkg_add -r nom-du-port

Méthode des ports (compilation)

Cette méthode n'est conseillée que pour les utilisateurs avancés nécessitant l'usage d'applicatifs compilée avec des options particulières.

Configuration du /etc/make.conf

Comme l'on va compiler l'ensemble des logiciels il est possible de préciser des «conseils» de compilations dans ce fichier.
La première étape est de demander au compilateur de s'adapter au possibilité de votre processeur.
Depuis FreeBSD 7.0, gcc 4.2 étant utilisé, il suffit simplement d'utiliser la valeur «native» à CPUTYPE pour qu'il utilise les paramètres les mieux adaptés à votre CPU.

echo 'CPUTYPE?=native' >> /etc/make.conf

Ne pas s'amuser à forcer les CFLAGS et COPTFLAGS car FreeBSD sait très bien se débrouiller tout seul.

Ensuite avant chaque installation, le système va vous demander de confirmer les options de configuration. Ce qui peux vous obliger à rester devans votre écran pour répondre aux question pendant la compilation de gros programmes (et donc plusieurs heures pour installer gnome).

On peux ensuite ajouter une option qui accélère le temps de compilation (surtout du world/kernel) en désactivant le profiling

WITHOUT_PROFILE=yes

On peux éviter ce comportement en acceptant les options par défaut des ports avec cette ligne:

BATCH=yes

Mais si vous acceptez les paramètres par défaut de vos ports, autant installer les binaires et ne pas perdre son temps à les compiler.

Il existe donc une seconde méthode pour gérer l'ensemble de ces questions: C'est d'installer les ports en utilisant portmaster car celui-ci va demander de confirmer l'ensemble des options de l'ensemble des dépendances avant de lancer les compilation (ex: portmaster -d -m LOCALIZED_lANG=fr editors/libreoffice)

Il est aussi possible d'activer les debugs (pour analyser les core dump…):

WITH_DEBUG=yes

Une autre option, dans le cas d'installation sur un serveur (ce n'est pas notre cas: Donc ne pas entrer cette ligne) sans xorg est d'ajouter:

WITHOUT_X11=yes

Ceci permet de compiler les ports sans le support de X.

Utilisation des ports

Récupérer l'ensemble des ports (et leur index) et les décompresser par la commande:

portsnap fetch extract update

Ensuite, il suffira pour mettre la liste à jour d'entrer:

portsnap fetch update

Afficher la liste des ports necessitant une mise à jour:

pkg_version -vIL=

Avant de lancer la mise à jour des ports, je vous conseil fortement de lire les notes de mises à jour:

less /usr/ports/UPDATING

Et vérifier les impacts des dernières mises à jour: En générale si une librairie est mise à jour, il faut mettre à jour tous les logiciels l'utilisant.

On à le choix entre plusieurs outils pour gérer les mise à jour des ports (portupgrade ou portmaster): La seule règle est de ne pas mixer l'utilisation de ces 2 outils

Ici on va installer portmaster:

pkg_add -r portmaster

Puis configurer portmaster pour qu'il sauvegarde toujours les anciennes versions des librairies avant de les mettre à jour, et qu'il ne crée pas de backup des ports

echo "SAVE_SHARED=wopt" >> /usr/local/etc/portmaster.rc

echo "NO_BACKUP=Bopt" >> /usr/local/etc/portmaster.rc

echo "ALWAYS_SCRUB_DISTFILES=dopt" >> /usr/local/etc/portmaster.rc

Puis lancer la mise à jour de l'ensemble des ports avec l'expection de libreoffice (sinon il va ré-installer une version anglaise):

portmaster -x libreoffice -a
Pour plus d'info:
man ports
man portmaster

Remarque pour ceux qui ont installé une version current

Les versions current incluent de gros changement dans le comportement du noyaux, ce qui affecte certains logiciel.
La liste des logiciels non encore adapté à ce nouveau noyaux est disponible sur la page Wiki FreeBSD: Ports Broken On Current.

Environement graphique X11

Commençons par installer xorg:

[root@d630]~#pkg_add -r xorg

HAL

Xorg est compilé pour s'appuyer sur HAL par défaut, 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:

/usr/local/etc/rc.d/dbus start

/usr/local/etc/rc.d/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 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 m 5 1" permet d'améliorer l'accélération, le problème est que l'insérer dans le .xinitrc ne fonctionne pas, il faut passer par la méthode "autostart" de votre environnement.
Par exemple pour LXDE il faut éditer le fichier /usr/local/etc/xdg/lxsession/LXDE/autostart
et ajouter la ligne:
@xset m 5 1

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

É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="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:

[root@d630]/usr/ports/x11/slim#make install clean

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:

cd /tmp

fetch http://cflags.cc/files/fbsd-slim-theme.tar.bz2

cd cd /usr/local/share/slim/themes/

tar zxvf /tmp/fbsd-slim-theme.tar.bz2


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_add -r gnome2
pkg_add -r 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 ajoutant la ligne suivante au fichier /boot/loader.conf:
atapicam_load="YES"

Les applications

Firefox

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

pkg_add -r firefox
pkg_add -r firefox-i18n

Puis on charge le module SEM:

echo 'sem_load="YES"' >> /boot/loader.conf
kldload sem

Plugin Flash

Vous etes sur de vouloir cette merde d'Adobe flash contraire aux principes d'utilisation de standard ouvert sur Internet ?

Bon ben si oui tant pis pour vous, voila comment faire:

echo 'linux_enable="YES"' >> /etc/rc.conf
/etc/rc.d/abi start
cd /usr/ports/www/nspluginwrapper
make install clean

cd /usr/ports/www/linux-f10-flashplugin10
make install clean

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

Suport des Copier/Coller avec Google docs

[olivier@d630]~> gedit .mozilla/firefox/XXXXX.default/user.js
user_pref("capability.policy.policynames", "allowclipboard");
user_pref("capability.policy.allowclipboard.sites", "http://docs.google.com");
user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess");
user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");

Utiliser Gmail pour les liens mailto

Il suffit de suivre les conseils pour Linux indiqué sur Breizh-Ardente.


Police de caractères

Puis on installe de jolies polices de caractères:

pkg_add -r freefonts
pkg_add -r webfonts

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

Lecteur multimédia Totem

Ce leceur à é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

[d630]~#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


La compilation de Java est très chiante, car à cause de problème de licence, on est obligé d'aller récupérer plusieurs fichiers manuellement sur différent site internet.

et de les mettre dans le dossier /usr/ports/distfiles/

cd /usr/ports/java/openjdk6
make install clean
(suivre les instructions de téléchargement et mettre les fichiers dans /usr/ports/distfiles avec le bon nom)
cd /usr/ports/java/icedtea-web/

make install clean

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

Je dois avouer qu'il faut vraiment pas mal de temps pour choisir de compiler LibreOffice sur son PC....Ce serait le seul programme pour lequel j'installerai son package.

Mais pour la compilation en français, c'est simple:

cd /usr/ports/editors/libreoffice

make LOCALIZED_LANG=fr install clean

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

NTFS-3g


Sources d'informations utilisées:
  • /usr/local/share/doc/ntfs-3g/README.FreeBSD
  • /usr/local/share/doc/hal-0.5.11/README.fuse

Par défaut FreeBSD n'inclus pas NTFS-3g, ce qui fait que le support natif des disques NTFS est en lecture seule.
Il faut donc installer NTFS-3g (en selectionnant l'option UBLIO pour avoir des perfs correct) :

pkg_add -r fusefs-ntfs

NTFS-3g utilisant FUSE, il faut le charger au démarrage en ajoutant cette ligne au fichier /etc/rc.conf:

fusefs_enable="YES"

Puis le lancer: /usr/local/etc/rc.d/fusefs start

Si vous souhaitez utiliser ntfs-3g pour monter un volume du fstab, la ligne doit ressembler à cet example:
dev/ntfs/DATA   /media/DATA ntfs rw,mountprog=/usr/local/bin/ntfs-3g,late 0 0

Il faut ensuite installer le script wrapper de HAL qui remplace le mount_ntfs par défaut

mv /sbin/mount_ntfs /sbin/mount_ntfs-kern

cp /usr/local/share/hal/mount-fuse /sbin/mount_ntfs


Puis faire prendre en compte le changement de l'outil mount_ntfs à gnome en lancant:
gconf-editor
et mettre la valeure «ntfs-3g» à la clé:
system/storage/default_options/ntfs/fstype_override
Puis on en profite pour ajouter fr_FR.UTF-8 à l'option locale= à clé mount_options:
system/storage/default_options/ntfs-3g/mount_options

Note pour ceux qui re-compilent leur noyaux de temps en temps: ils peuvent se simplifier la vie en rajoutant «sysutils/fusefs-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).

Problème à résoudre: Impossile d'utiliser ntfs-3g avec un utilisateur (même étant dans le groupe operator).
Il semble qu'il faille compiler ntfs-3g avec l'option «integrated FUSE support» mais je n'ai pas cette option quand je compile le port.

VirtualBox-OSE

Voici pour son installation:
pkg_add -r virtualbox-ose
echo 'vboxdrv_load="YES"' >> /boot/loader.conf
echo 'vboxnet_enable="YES"' >> /etc/rc.conf
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).

Qemu


Suivre simplement les conseils donné pour l'installation et l'utilisation de qemu sur le wiki FreeBSD.
Même remarque qu'avec NTFS-3G et virtualbox pour ceux qui re-compile régulièrement leur noyaux: Ne pas oublier «emulators/kqemu-kmod-devel» à la variable PORTS_MODULES dans le fichier /etc/make.conf

GNS3


Le port FreeBSD de GNS3 n'existant pas, je me suis lancé dans la création de celui.
Heureusement il s'agit d'un portage très simple qui ne nécessite pas de re-lire/re-toucher du code C.
L'état actuel: Il s'installe, ce lance et on peut simuler un routeur Cisco.
Ce port à été accepté officiellement (malgré le fait que je n'ai pas trouvé d'autre testeurs), vous donc l'installer comme ceci:

pkg_add -r gns3

Merci de me remonter vos problèmes rencontrés (ou même réussite) à olivier -AT- cochard.me !

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_add -r 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:

/etc/rc.d/devfs restart
/usr/local/etc/rc.d/cupsd restart
Ne reste plus qu'a lancer le navigateur sur http://localhost:631

Trucs & astuces

Accélérer le boot

Pour réduire le temps de boot (le timeout du boot-loader):

echo 'autoboot_delay="2"' >> /boot/loader.conf

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:

vesa_load="YES"
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:
    • /etc/rc.d/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@d630]~>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.


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@d630]~>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@d630]~#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@d630]~#umount /usr/obj/nanobsd.full/_.mnt/
umount: unmount of /usr/obj/nanobsd.full/_.mnt failed: Device busy

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

[root@d630]~#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@d630]~#locate gam_server
/usr/local/libexec/gam_server
/usr/ports/devel/gamin/files/patch-server_gam_server.c
[root@d630]~#pkg_info -W /usr/local/libexec/gam_server
/usr/local/libexec/gam_server was installed by package gamin-0.1.10_3
[root@d630]~#pkg_info -d gamin-0.1.10_3
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