ObjectifsCe document inclus l'ensemble des étapes réalisées pour obtenir FreeBSD 12 installé pour une utilisation optimisée «poste de travail» (Xfce, LibreOffice, multimédia, 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 TrueOS, 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 besoinsUtilisateur de Linux Ubuntu, je souhaiterais faire exactement la même chose sous FreeBSD, c'est-à-dire avoir le support matériel complet de mon PC portable (Lenovo Thinkpad X220): Video, LAN, Wifi, Bluetooth et une gestion de l'énergie minimale. |
Nom du module | Description |
acpi_asus.ko | Asus Laptop Extras |
acpi_dock.ko | Laptop Docking Station device driver |
acpi_fujitsu.ko | Fujitsu Laptop Extras |
acpi_hp.ko | ACPI extras driver for HP laptops |
acpi_ibm.ko | ACPI extras driver for IBM laptops (ou Lenovo) |
acpi_panasonic.ko | ACPI hotkey driver for Panasonic laptops |
acpi_sony.ko | ACPI notebook controller driver for Sony laptops |
acpi_toshiba.ko | Toshiba HCI interface |
acpi_video.ko | ACPI Video Extensions driver |
acpi_wmi.ko | ACPI to WMI mapping driver (auto-chargé par les autres si nécessaire) |
Par exemple pour mon laptop HP j'ai: acpi_ibm, acpi_video et acpi_dock.
Ne pas alimenter les périphériques sans drivers
Ce qui permet d'économiser de la batterie:Configuration avancée du réseau
Wifi
Normallement déja réalisé pendant la phase d'installation, mais si ce n'est pas le cas la méthode la plus facile pour la configuration du wifi est d'utiliser la fonction netconfig de bsdinstall:Activation du Privacy Extension d'IPv6
Par défaut le mode Privacy Extension d'IPv6 n'est pas activé:
sysrc ipv6_privacy=YES
DHCP en background pendant le démarrage
Par défaut le client DHCP met en pause le démarrage jusqu'à recevoir (ou déclancher un timeout) une addresse. Pour éviter on le passe en background:
sysrc background_dhclient=YES
Failover entre carte réseau filaire et wifi
Cette configuration permet de basculer ultra rapidement entre le réseau filaire (prioritaire) et wifi.
Tester en premier votre configuration WPA avant de mettre en place cet exemple (qui utilise une carte wifi Intel iwn0 et une carte Ethernet Intel em0).
On commence par noter l'adresse MAC de la carte Ethernet et on configure la carte wifi avec cette même adresse MAC (ce qui permet de présenter la même adresse quelque soit l'interface utilisée):
setenv MACETH `ifconfig em0 | awk '/ether/ { print $2 }'`
sysrc wlans_iwn0=wlan0
sysrc ifconfig_em0=up
sysrc ifconfig_wlan0="WPA powersave"
sysrc create_args_wlan0="wlanaddr $MACETH country FR regdomain ETSI"
sysrc cloned_interfaces=lagg0
sysrc ifconfig_lagg0="up laggproto failover laggport em0 laggport wlan0 DHCP"
sysrc ifconfig_lagg0_ipv6="inet6 accept_rtadv"
Un simple «service netif restart» n'est peut-être pas suffisant si votre interface wlan0 était déjà configurée: un redémarrage risque d'être nécessaire.
USB Tethering
Rien de plus simple car il n'y a pratiquement rien à faire (avec un téléphone Android) à par connecter le smartphone, activer le partage de connexion Internet par USB et demander une IP par DHCP.Une interface réseau urndis(4) USB Remote NDIS Ethernet device nommée ue0 va être utilisée pour cet acces.
urndis0 on uhub2
urndis0: <RNDIS Communications Control> on usbus0
ue0: <USB Ethernet> on urndis0
ue0: Ethernet address: 3e:a6:64:12:9c:ef
root@idepad:~ # dhclient ue0
DHCPDISCOVER on ue0 to 255.255.255.255 port 67 interval 4
DHCPOFFER from 192.168.42.129
DHCPREQUEST on ue0 to 255.255.255.255 port 67
DHCPACK from 192.168.42.129
bound to 192.168.42.21 -- renewal in 1800 seconds.
sysrc firewall_type=workstation
service ipfw start
sysrc firewall_allowservices=any
Et pour activer le tout:
Localisation
Configuration du système en français
cat >>/etc/login.conf <<EOF
french|French Users Accounts:\
:charset=UTF-8:\
:lang=fr_FR.UTF-8:\
:tc=default:EOF
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 utilisent cette langue par défaut, on ajoute dans /etc/adduser.conf :
defaultclass = french
Configuration du clavier Bépo
cp fr.bepo.kbd /usr/share/vt/keymaps/
echo 'keymap="fr.bepo.kbd"' >> /etc/rc.conf
Commencer par permettre aux utilisateurs de monter des périphériques:
echo vfs.usermount=1 >> /etc/sysctl.conf
sysctl vfs.usermount=1
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:
cat >>/etc/devfs.rules <<EOF
[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
EOF
Déclarer les nouvelles règles :
sysrc devfs_system_ruleset=localrulesActiver les nouvelles règles:
Et vérifier leur applications:
Optimisations
Configurer le scheduler pour un usage «desktop»
sysrc -f /etc/sysctl.conf kern.sched.preempt_thresh=224
Réparation fsck automatique et background fsck (sauf si installation ZFS)
Pour activer la réponse «yes» aux questions de fsck au démarrage: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:
Pour les fichiers core générés par le noyau, ajouter dans le /etc/sysctl.conf :
kern.coredump=0
Installation des Mises à jour de FreeBSD
Cela ce fait simplement par la commande suivante:
Utiliser DMA à la place de sendmail
DragonFly Mail-Agent (inclus à partir de FreeBSD 11) permet de remplacer sendmail si votre besoin est uniquement que votre serveur/desktop envoie des emails.
sysrc sendmail_enable=NONE
service sendmail onestop
cat >/etc/mail/mailer.conf <<EOF
# Execute dma instead of sendmail
sendmail /usr/libexec/dma
mailq /usr/libexec/dma
newaliases /usr/libexec/dma
rmail /usr/libexec/dma
EOF
cat >>/etc/periodic.conf <<EOF
#disable some sendmail specific daily maintenance routines
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
EOF
Reste la configuration de DMA, ici un exemple pour un compte gmail:
cat >/etc/dma/dma.conf <<EOF
SMARTHOST smtp.gmail.com
PORT 587
SECURETRANSFER
STARTTLS
AUTHPATH /etc/dma/auth.conf
MASQUERADE votre-login@gmail.com
EOF
echo 'votre-login|smtp.gmail.com:votre-mot-de-passe' > /etc/dma/auth.conf
Installation des logiciels externes (packages)
Remplacement du dépôt quarterly par latest
Une distribution -RELEASE utilise un dépôt de package mis à jour tous les 3 mois uniquement.
Pour ne pas attendre 3 mois, vous pouvez configurer l'usage du dépôt latest (mis à jour tous les 2 jours environs) comme ceci:
mkdir -p /usr/local/etc/pkg/repos
echo 'FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest" }' > /usr/local/etc/pkg/repos/FreeBSD.conf
Puis il suffit de lancer la commande "pkg" pour qu'il s'auto-installe.
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 mettre à jour:
pkg upgrade
Installer les root CA
Un des premiers packages à installer est celui des root CA:
pkg inst ca_root_nss
Mise à jour des microcodes CPU
Corrige les grosses failles CPU en attendant la MaJ de votre BIOS/EFI:
pkg install devcpu-data
service microcode_update enable
Remplacer powerd par powerd++
Une version plus évoluée (gère mieux les multi-core) de powerd existe sous le nom de powerd++:
pkg inst powerdxx
service powerd disable
service powerd onestop
service powerdxx enable
service powerdxx start
Montage automatique des disques amovibles
Pour la détection d'insertion d'un disque, son analyse et le montage de celui-ci on va utiliser automount et si l'on souhaite ajouter le support d'autre file systèmes: les packages fuse-[ntfs].pkg install automount fusefs-ntfs fusefs-simple-mtpfs
Environnement graphique X11
xorg
Ajouter votre utilisateur au groupe "video" pour lui permettre d'accéder au DRI:
pw groupmod video -m $USERNAME
Puis installer xorg et le xscreensaver:
pkg install xorg xscreensaver
Drivers vidéo KRM-DMS (Intel i915, AMD GPU, Radeon)
À partir de FreeBSD 11.2 uniquement, vous pouvez installer le meta-package drm-kmod qui va selectionner la meilleure version des drivers (legacy, stable, next, devel):
pkg install drm-kmod
Et demander leur chargement automatique, ici un exemple pour un module i915:
sysrc kld_list+="/boot/modules/i915kms.ko"
kldload /boot/modules/i915kms.ko
Après un reboot, vérifier que le module du package (/boot/modules) et non de la base (/boot/kernel) est bien pris en compte:
olivier@x220:~ % kldstat -v | grep i915
6 1 0xffffffff8293d000 120ca8 i915kms.ko (/boot/modules/i915kms.ko)
Drivers vidéo X11 pour Intel (les anciennes)
Si votre machine possède une vieille puce Intel, installer quand même les bibliothèques d’accélération vidéo:Ensuite vous testez que ça fonctionne: Et surtout vous testez aussi le suspend/resume.
Pour les utilisateurs de carte Intel Sandybridge (ou mieux), l'activation du mode SNA peut-être bénéfique (vérifiez-le en mesurant la différence avec gtkperf par exemple).
Pour activer ce mode, un exemple de configuration (mais qui fait rebooter ma machine quand elle passe en suspend):
cat > /usr/local/etc/X11/xorg.conf.d/20-video.conf <<EOF
Section "Device"
Identifier "Intel Graphics"
Driver "intel"
Option "AccelMethod" "sna"
EndSection
EOF
Sous X11, l'utilitaire «vainfo» devrais indiquer une liste de profil vidéo (H264, etc…) pris en charge matériellement.
Drivers vidéo X11 pour nvidia
Pour un drivers nvidia, il y a plusieurs drivers en fonction de la génération de votre carte graphique (nvidia-driver-173, nvidia-driver-304, nvidia-driver-340, nvidia-driver).
Dans le cas ou l'on dispose d'un ancien ION 1:
pkg install nvidia-driver-304
echo 'nvidia_load="YES"' >> /boot/loader.conf
mkdir -p /usr/local/etc/X11/xorg.conf.d/
cat > /usr/local/etc/X11/xorg.conf.d/20-video.conf <<EOF
Section "Device"
Identifier "NVIDIA Card"
VendorName "NVIDIA Corporation"
Driver "nvidia"
EndSection
EOF
dbus et HAL
L'usage de HAL est devenu obsolète car les outils devraient de plus en plus utiliser devd(8).
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 ceux-ci:
service dbus enable
service hald enable
Et on les lance:
service dbus start
service hald start
Par défaut, FreeBSD ne monte ni procfs ni fdesc. Mais certaines applications (comme HAL) en on besoin. On édite le fichier /etc/fstab et lui ajouter ces 2 lignes:
fdesc /dev/fd fdescfs rw,late 0 0
L'option "late" évite les problèmes avec ZFS. Puis les monter:
mount /dev/fd/
Polkit
Concernant les logiciels utilisant Polkit (xfce par exemple), voici comment permettre à l'utilisateur d'éteindre et de mettre en veille la machine pour les utilisateurs du groupe "operator"
cat > /usr/local/etc/polkit-1/rules.d/51.shutdown.rules <<EOF
polkit.addRule(function (action, subject) {
if ((action.id == "org.freedesktop.consolekit.system.restart" ||
action.id == "org.freedesktop.consolekit.system.stop")
&& subject.isInGroup("operator")) {
return polkit.Result.YES;
}
});
EOF
cat > /usr/local/etc/polkit-1/rules.d/52.resume.rules <<EOF
polkit.addRule(function (action, subject) {
if (action.id == "org.freedesktop.consolekit.system.suspend"
&& subject.isInGroup("operator")) {
return polkit.Result.YES;
}
});
EOF
chown -R polkitd /usr/local/etc/polkit-1/
Jul 18 00:21:28 x220 dbus[20382]: [system] Rejected send message, 2 matched rules; type="method_call", sender=":1.19" (uid=1001 pid=63293 comm="") interface="org.freedesktop.ConsoleKit.Manager" member="CanSuspend" error name="(unset)" requested_reply="0" destination=":1.1" (uid=0 pid=44489 comm="")
Jul 18 00:21:28 x220 dbus[20382]: [system] Rejected send message, 2 matched rules; type="method_call", sender=":1.19" (uid=1001 pid=63293 comm="") interface="org.freedesktop.ConsoleKit.Manager" member="CanHibernate" error name="(unset)" requested_reply="0" destination=":1.1" (uid=0 pid=44489 comm="")
<deny send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.DBus.Properties" />
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="CanSuspend"/>
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="CanHibernate"/>
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="Restart"/>
Pavé Synaptics, Trackpoint (Lenovo) ou Elantec
À partir de FreeBSD 12.1 il est fortement conseillé d'utiliser le mode EVDEV.echo 'kern.evdev.rcpt_mask=6' >> /etc/sysctl.confsysctl kern.evdev.rcpt_mask=6
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:
cat >.xinitrc <<EOF
DEFAULT_SESSION=xfce4-session
[ -f .Xresources ] && xrdb .Xresources
#Slim ne prend pas en compte les locales de la console, il faut les renforcer ici:
export LANG="fr_FR.UTF-8"
export MM_CHARSET="UTF-8"
case \$1 in
lxde)
exec startlxde
;;
xfce4)
exec xfce4-session
;;
icewm)
icewmbg &
icewmtray &
exec icewm
;;
wmaker)
exec wmaker
;;
blackbox)
exec blackbox
;;
*)
exec \$DEFAULT_SESSION
;;
esac
EOF
Activez son lancement automatique:
service slim enable
Thème FreeBSD
Voici comment y installer un joli thème FreeBSD:
pkg install slim-themes
Et éditer le fichier /usr/local/etc/slim.conf pour remplacer la ligne:
current_theme default
Par
Disposition du clavier sous slim
Pour préciser le type de clavier sous slim, qui démarre avant votre environnement graphique (xfce, lxde, gnome, etc.) il n'y a pas d'autre choix que définir des fichiers de configuration dans /usr/local/etc/X11/xorg.conf.d/ que l'on remplit par le contenu suivant:
cat > /usr/local/etc/X11/xorg.conf.d/10-keyboard.conf <<EOF
Section "InputClass"
Identifier "Keyboard Defauls"
Driver "libinput"
MatchIsKeyboard "on"
Option "XkbLayout" "fr"
EndSection
EOF
Pour du bepo, il suffit de préciser la variante à la clé XkbLayout:
Option "XkbLayout" "fr(bepo)"XFCE4
XFCE
Un environnement de bureau que j’apprécie par sa légèreté (pour qu'il prenne en compte votre .Xresources il faut le lancer avec xfce4-session et non pas avec startxfce4):
Police de caractères
Puis on installe de jolies polices de caractères:
On vérifie ensuite quelles sont bien prises en compte dans xorg par la commande:
Si vous rencontrez un problème d'anti-aliasing avec la police Helvetica (j'ai ce problème sous Firefox), cf les conseils trouvé sur le forum FreeBSD:
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<dir>~/.fonts</dir>
<!-- do not use the embedded bitmap instead of the outline
<https://www.freebsd.org/cgi/man.cgi?query=fonts-conf&sektion=5&manpath=FreeBSD+and+Ports>
<https://bbs.archlinux.org/viewtopic.php?id=161609> post 2 (2013)
<https://redd.it/7kqr5l> (2017) -->
<match target="font">
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>
<!-- prefer outline e.g. TrueType instead of bitmap fonts
<https://bbs.archlinux.org/viewtopic.php?id=161609> post 2 (2013)
<https://redd.it/4tb2dt> (2016) -->
<match target="font">
<edit name="prefer_outline">
<bool>true</bool>
</edit>
</match>
<!-- reject bitmap fonts, except Ohsnapu - prefer PostScript, TrueType et cetera
<https://forums.freebsd.org/threads/howto-nice-fonts.2021/> (2009)
<https://redd.it/4tb2dt> (2016) -->
<selectfont>
<acceptfont>
<pattern>
<patelt name="family">
<string>Ohsnapu</string>
</patelt>
</pattern>
</acceptfont>
<rejectfont>
<pattern>
<patelt name="scalable">
<bool>false</bool>
</patelt>
</pattern>
</rejectfont>
</selectfont>
</fontconfig>
EOF
Les applications
Webcam
L'installation du support de webcam demande plusieurs étapes.Commencer par installer les logiciels nécessaires:
Puis activer webcamd:
Ajouter le module cuse à la liste kld_load:
Une fois terminé, ajoutez votre utilisateur au groupe webcamd:
Afficher la liste des périphériques utilisable:
Et testez votre webcam, ici un exemple avec une webcam d'un PC portable Lenovo:
Attached to ugen1.4[0]
Creating /dev/video0
Démarrer le daemon:
Si webcamd n'est pas capable de selectionner automatiquement la bonne webcam, il faut déclarer un flag en récupérant le nom de la webcam (flag -N de la sortie "webcamd -l):
Firefox
On l'install en français par ces deux commandes:
Chromium
On l'install par cette commande:
mpv
Lecteur vidéo avec excellent support d'accélération matériel VA-API (carte intel), que l'on install, avec la librairie VDPAU/VA-APIet configure comme ceci:
cat > ~/.config/mpv/mpv.conf <<EOF
vo=vaapi
hwdec=vaapi
fs=yes
EOF
LibreOffice
Comme pour les autres:
pkg install fr-libreoffice
Il vous restera à installer l'extension «dictionnaire français» et l'extension de «correction grammaticale».
pkg install cups cups-filters
pw groupmod cups -m $USERNAME
Puis, pour une imprimante locale (USB) éditez le fichier /etc/devfs.rules et ajoutez:
add path 'unlpt*' mode 0660 group cups[localrules=10]
add path 'ulpt*' mode 0660 group cups
add path 'lpt*' mode 0660 group cups
add path 'usb/X.Y.Z' mode 0660 group cups
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.sysrc devfs_system_ruleset=localrulesservice cupsd enable
Ne reste plus qu'a ajouter votre imprimante en passant par l'interface d'administration de cups http://localhost:631service devfs restart
service cupsd restart
Trucs & astuces
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_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_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-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:
- Créer le dossier /tftpboot
- Mettre vos fichier à partager dans le dossier /tftpboot
- Editer le fichier /etc/inetd.conf et décommenter la ligne tftp
- Activer inetd:
- service inetd enable
- Puis lancer inetd:
- service inetd start
Attention, le noyau de FreeBSD refuse les requêtes des clients TFTP utilisant le port source 0 !
Et comme aucun RFC n'interdit au client TFTP d'utiliser le port 0 comme source, il existe des équipements qui le font et ne fonctionneront donc pas avec un serveur TFTPD sous FreeBSD.
C'est le cas par exemple 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 :
return (EADDRNOTAVAIL);
É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):
- cuauX, pour les appels sortants
- ttyuX, pour les appels entrants
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 détectés s'affiche par la commande:Liste des équipements détectés par HAL:
Charge système par des graphiques: systat
Aperçu de la charge système par la commande:Mais cette commande permet aussi de connaitre la charge réseau actuelle avec la commande:
Charge système en mode compact: vmstat
Pratique pour connaitre ou le goulot d'étranglement: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:
Et pour connaitre qui consomme les interruptions matérielles (la colonne rate est importante):
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 niveau du ccb (cardbus), mais c'est en fait un bug lié à la carte graphique.
Charge des disques: gstat
La couche de gestion des disques est geom, l'outil pour afficher le taux d'utilisation est gstat.Consomation électrique
Sur processeur Intel, le package "intel-pcm" dispose de l'outil pcm.x qui affiche la consommation électrique du CPU en temps réel:0 0 0.00 0.26 0.00 0.32 15 K 42 K 0.65 0.02 0.01 0.02 55
1 0 0.00 0.71 0.00 0.32 7329 12 K 0.40 0.10 0.00 0.01 55
2 0 0.00 0.30 0.00 0.32 13 K 38 K 0.63 0.04 0.01 0.02 55
3 0 0.00 0.48 0.00 0.32 7683 15 K 0.50 0.03 0.01 0.01 55
---------------------------------------------------------------------------------------------------------------
SKT 0 0.00 0.36 0.00 0.32 44 K 108 K 0.59 0.04 0.01 0.02 54
---------------------------------------------------------------------------------------------------------------
TOTAL * 0.00 0.36 0.00 0.32 44 K 108 K 0.59 0.04 0.01 0.02 N/A
Instructions retired: 7083 K ; Active cycles: 19 M ; Time (TSC): 2651 Mticks ; C0 (active,non-halted) core residency: 0.59 %
C1 core residency: 0.81 %; C3 core residency: 0.00 %; C6 core residency: 98.61 %; C7 core residency: 0.00 %;
C2 package residency: 48.12 %; C3 package residency: 0.00 %; C6 package residency: 49.64 %; C7 package residency: 0.00 %;
PHYSICAL CORE IPC : 0.71 => corresponds to 17.83 % utilization for cores in active state
Instructions per nominal CPU cycle: 0.00 => corresponds to 0.03 % core utilization over time interval
---------------------------------------------------------------------------------------------------------------
| READ | WRITE | IO | CPU energy |
---------------------------------------------------------------------------------------------------------------
SKT 0 0.29 0.00 0.29 3.76
---------------------------------------------------------------------------------------------------------------
Usage de ntfs-3g dans le fstab
Voici un exemple de ligne 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
umount failed: Device busy
Je rencontre assez souvent le problème suivant: Impossible de démonter certains volumes, 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 ???
/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 dossiers.... 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:
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