Mon portable donnait des signes de faiblesse. Le clavier abîmé par le chat qui le prenait pour dormir, le support de FreeBSD lui-même qui était aléatoire. Son âge aussi, plus de 3 ans. Et je l’ai un peu mal traité.
Je me suis donc décidé à le changer. Après un rapide sondage sur la page Facebook de FreeBSD, il s’avère que les portables qui sont le mieux supportés par FreeBSD sont les ThinkPad de Lenovo, version X ou T. Les T sont bien plus cher que les X, j’ai donc opté pour un X280.
La configuration du portable
J’ai décidé, même si c’est un peu cher, d’avoir un portable bien pourvu. J’ai donc choisi d’avoir 16Go de RAM, un SSD de 512Go, un core i7 de 8e génération à 4,00Ghz. j’ai également choisi, et c’est l’un des points fort des portables de grandes marques, un clavier QWERTY.
Comme prévu, j’étais absent lors de la première présentation du colis. J’ai patienté le lendemain pour avoir mon précieux.
Déballage
La machine est bien emballée, sans fioriture à la « Apple ». l’alimentation est au standard de l’Union Européenne, via un connecteur USB-c. Pas de superflu, pas de CD/DVD. La machine est livrée avec Windows 10.
Un très bon point pour cette machine, elle dispose d’un cache webcam.
Sauvegarde de Window10
Après certains déboires avec la machine précédente, j’ai appris qu’il fallait conserver un Windows d’origine dans un coin. C’est utile pour faire les mises à jour du firmware de la machine qui ne sont fournies que pour cet OS.
Microsoft propose un outil sur son site pour faire une clef USB de secours. En fait, il suffit de télécharger l’image ISO de Windows et de la mettre sur le support désiré.
Il faut bien sûr s’assurer quel le support est bootable avant de tout casser.
Mise à jour du l’UEFI
sans Windows
Il semble qu’il soit possible de mettre à jour l’UEFI
en utilisant une image
ISO téléchargable ici.
Je dois avouer que je ne l’ai pas fait, de peur de tout perdre. Pensez à faire DES sauvegardes.
Téléchargement de l’image FreeBSD 12.0-RELEASE
Pour télécharger la bonne image, rendez-vous sur site de FreeBSD. Je l’ai fait sur mon ancienne machine pour bénéficier des outils que je connais bien pour mettre cette image sur une clef USB.
La commande utilisée couramment pour copier une image sur une clef USB est dd(1)
:
# dd if=/chemin/vers/limage.img of=/chemin/vers/le/périphérique
Malheureusement, la commande dd(1)
ne donne aucun état d’avancement du
processus, c’est frustrant et on peut se demander s’il n’est pas planté. C’est
là que la commande pv(1)
vient à notre secours.
Mon
utilisation de dd
est ancienne. Les nouvelle versions on désormais un
paramètre status=progress
# pv -tepb FreeBSD-12.0-RELEASE-amd64-memstick.img | dd of=/dev/da0 1% [= ]
Configuration UEFI/BIOS sur le ThinkPad
L’image de FreeBSD-12.0-RELEASE et l’OS lui même peuvent démarrer directement sur l’UEFI. Vérifiez que l’ordre de test est bien [UEFI first then BIOS]
Une fois ces opérations réalisées, on peut démarrer sur la clef USB et
commencer l’installation. Choisissez les options que vous désirez. J’ai opté
pour une installation sur ZFS chiffré
. Le processus d’installation est
extrêmement rapide.
En plus du mot de passe root qui vous est demandé, pensez à créer tout de suite un autre utilisateur, celui de tous les jours.
J’ai choisi le même UID/GID que mon
utilisateur sous GNU/Linux au travail pour faciliter les échanges de fichiers.
Pensez ausi à ajouter votre utilisateur au groupe wheel
L’installation terminée il faut redémarrer et penser à retirer la clef USB de son port.
Ça démarre et après
Il est temps de se connecter et de constater que l’on a pas grand-chose et en particulier, pas de réseau WiFi.
La connexion au réseau WiFi
Il faut déterminer le matériel présent dans la machine et trouver le bon pilote à charger dans le noyau.
# pciconf -lvc
iwm0@pci0:59:0:0: class=0x028000 card=0x00108086 chip=0x24fd8086 rev=0x78 hdr=0x00
vendor = ’Intel Corporation’
device = ’Wireless 8265 / 8275’
class = network
Nous voilà renseignés, il s’agit d’une carte intel wireless 8265/8275
. Les
trois premières lettres nous renseignent même sur le pilote à utiliser,
ici : iwm
.
Le fichier /boot/loader.conf
C’est dans ce fichier que nous allons demander le chargement du pilote au démarrage du noyau.
if_iwm_load="YES"
iwm8265fw_load="YES"
wlan_ccmp_load="YES"
wlan_tkip_load="YES"
Le fichier /etc/rc.conf
Dans ce fichier nous allons créer un alias vers le pilote que nous venons
définir dans /boot/loader.conf
. Nous allons également indiquer les options
que le périphérique WiFi devrait utiliser pour fonctionner. Ainsi, nous lui
indiquons qu’il devrait prendre son adresse via DHCP
:
background_dhclient="YES"
wlans_iwm0="wlan0"
ifconfig_wlan0="WPA SYNCDHCP powersave"
La demande de DHCP
en tâche de fond permet de ne pas bloquer le processus de
démarrage si par malchance aucun serveur DHCP
ne pouvait nous répondre. C’est
le même principe qui procède de l’option SYNCDHCP
. L’option WPA
sert à
mettre en place les connexions chiffrées via le protocole idoine et indique
par la même que nous allons utiliser un fichier de configuration supplémentaire.
Le fichier /etc/wpa_supplicant
Ce fichier va stocker les informations des différents réseaux WiFi/WPA que vous allez utiliser. Chez vous, dans votre entreprise, à l’hôtel, dans le train, etc. Commençons par le réseau le plus proche de vous.
Chaque bloc network
correspond à un réseau différent.
network={
ssid="Maison-sucree-Maison"
bssid=aa:bb:cc:dd:ee:ff
key_mgmt=WPA-PSK
proto=RSN
psk="ilestpasbeaumonmotdepasse"
}
Lors du lancement du daemon wpa_supplicant
, celui-ci va scanner les réseaux
environnants et s’il trouve une correspondance avec l’un de ceux définis dans
votre fichier de configuration, il y a des chances pour que la connexion se
fasse toute seule.
Un petit test
Il est temps de tester notre configuration en relançant les différents éléments
nécessaires. En fait, le redémarrage du réseau suffit a lancer aussi
wpa_supplicant
et la demande d’une adresse IP au serveur DHCP
(pourvu que
vous en ayez un opérationnel à portée d’ondes).
# service netif restart
La commande ifconfig
nous renseigne sur l’état de notre connexion :
% ifconfig wlan0
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether a1:b2:c3:d4:e5:f6
hwaddr a1:b2:c3:d4:e5:f6
inet 11.22.33.44 netmask 0xffffff00 broadcast 11.22.33.255
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: IEEE 802.11 Wireless Ethernet DS/2Mbps mode 11g
status: associated
ssid Maison-sucree-Maison channel 11 (2462 MHz 11g) bssid aa:bb:cc:dd:ee:ff
regdomain FCC country US authmode WPA2/802.11i privacy ON
deftxkey UNDEF AES-CCM 2:128-bit powersavemode CAM powersavesleep 100
txpower 30 bmiss 10 scanvalid 60 protmode CTS wme roaming MANUAL
groups: wlan
On dirait que le réseau WiFi fonctionne.
Mise à jour du système
À partir du moment où le réseau fonctionne, il est possible, voire nécessaire de faire les mises à jours des logiciels installés de base.
bootstrap
du système de gestion de paquet
Il est indispensable que le système de paquet (pkg(7)
) ait connaissance des
paquets disponibles sous format binaire, si c’est ce que vous voulez utiliser.2
Mise à jour des paquets déjà installés
La mise à jour se fait avec le même utilitaire :
% sudo pkg upgrade
Le bluetooth
Malgré tous mes efforts, je n’arrive pas à le faire fonctionner. Un trou en moins dans la sécurité du portable ☺.
La carte graphique
De nos jours il devient difficile de se passer d’une interface graphique (même
si ce blog est écrit avec vim(1)
et que j’utilise mutt(1)
pour gérer mon
courrier électronique.
En fait, l’installation d’une interface graphique avec Xorg fonctionne presque toute seule. J’ai choisi mate (ex gnome2).
% sudo pkg install mate-common
La configuration de Xorg
On arrive à la partie la plus compliquée de l’installation. Longtemps, j’ai
utilisé le pilote vesa(4x)
. Ce pilote est lent et ne permet pas à la machine
de donner son plein potentiel. Heureusement il existe un autre pilote,
i915kms
. Il suffit de le charger au lancement de la machine, dans le fichier
/etc/rc.conf
en ajoutant la ligne :
kld_list="/boot/modules/i915kms.ko"
Dans le répertoire /usr/local/etc/X11/xorg.conf.d
on ajoute un fichier
driver.intel.conf
pour utiliser ce pilote :
Section "Device"
Option "AccelMethod"
Option "TripleBuffer"
Option "HotPlus"
Option "TearFree"
Identifier "Card0"
Driver "intel"
BusID "PCI:0:2:0"
EndSection
La prise en compte se fera au prochain redémarrage ou, si vous avez chargé le
pilote drm-next
3, au prochain redémarrage de l’interface graphique.4
La console de connexion
Avec Mate, il n’y a pas de gestionnaire de connexions graphique prévu. Le seul logiciel qui fonctionne correctement bien qu’abandonné est SLiM. Fort heureusement, il fait encore partie des ports *BSD. Nous allons donc pouvoir l’installer tranquillement.
pkg install slim-freebsd-themes slim-themes
Nous en profitons pour installer les thèmes spécifiques à FreeBSD et d’autres thèmes.
Le fichier de configuration est /usr/local/etc/slim.conf
. La seule
modification est le choix du thème. Ceux-ci se trouvent dans
/usr/local/share/slim/themes/
. Tous (ou presque) présentent une image de
prévisualisation, à vous de choisir celui qui vous sied le plus.5
Il
existe des alternatives à slim
: gdm
, xdm
, sddm
etc.
Je vous laisse les découvrir.
Il faut aussi demander au système de lancer le daemon slim
au démarrage. Cela
se fait en ajoutant la ligne slim_enabled="YES"
dans le fichier
/etc/rc.conf
. Par exemple ainsi :
sysrc slim_enabled="YES"
Le touchpad
En fait, le touchpad
fonctionne sans configuration. Il est assez étrange de
ne pas trouver de panneau de contrôle pour le gérer. C’est donc en chargeant un
module noyau et en changeant des valeurs pour Xorg que l’on arrive à avoir une
configuration optimale.
Prise en charge par le noyau
Dans le fichier /boot/loader.conf
, il faut ajouter la ligne :
hw.psm.synaptics_support="1"
Configuration de Xorg
Pour cette configuration, nous allons copier le fichier fourni par défaut
/usr/local/share/X11/xorg.conf.d/70-synaptics.conf
dans le répertoire
/usr/local/etc/X11/xorg.conf.d
.
sudo cp /usr/local/share/X11/xorg,d/70-synaptics.conf /usr/local/etc/X11/xorg.conf.d/.
Puis le modifier à notre sauce :
Section "InputClass"
Identifier "touchpad catchall"
Driver "synaptics"
MatchIsTouchpad "on"
EndSection
Section "InputClass"
Identifier "touchpad ignore duplicates"
MatchIsTouchpad "on"
MatchOS "Linux"
MatchDevicePath "/dev/input/mouse*"
Option "Ignore" "on"
EndSection
Section "InputClass"
Identifier "enable synaptics SHMConfig"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Option "SHMConfig" "true"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/sysmouse"
Option "ZAxisMapping" "4 5 6 7"
EndSection
ZAxisMapping 4 5 6 7
représentent les boutons de la souris et les déplacements
verticaux.
Pour avoir le ¨Natural Scrolling¨, vous pouvez ajouter le fichier
/usr/local/etc/X11/xorg.conf.d/20-natural-scrolling.conf
qui contient :
Section "InputClass"
Identifier "Natural Scrolling"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Option "VertScrollDelta" "-1"
Option "HorizScrollDelta" "-1"
Option "DialDelta" "-1"
EndSection
Le clavier de mon X280 comporte des touches spéciales pour gérer le son
(plus/moins/silence) et la luminosité de l’écran. Ces fonctions marchent avec
les combinaisons de touches Fn+F1
(silence), Fn+F2
(moins), Fn+F3
(plus),
Fn+F5
(moins de luminosité) et Fn+F6
(plus de luminosité).
Dans l’interface graphique
Malheureusement ces combinaisons de touches ne fonctionnent pas par défaut. Il
faut ajouter le port graphics/intel-backlight
et le tester de façon simple :
sudo pkg install intel-backlight
intel_backlight decr 15
La luminosité devrait diminuer de 15 %. Utilisez plusieurs fois la dernière
commande pour vérifier que le changement est significatif. Pour augmenter la
luminosité il suffit de remplacer decr
par incr
.
Si cela fonctionne, il vous reste à configurer ces combinaisons dans les raccourcis clavier de votre interface graphique.
Dans le même temps reconfigurer, les raccourcis par défaut pour le son.6
Suspendre et reprendre
Le gros avantage du portable, est de pouvoir le fermer, se déplacer et reprendre le travail où on l’avais laissé sans redémarre. Cette possibilité, appelée « Suspend and Resume » ne fonctionnait pas correctement sur ma machine, jusqu’à ce que découvre le Blog de Gawen qui explique comment mettre en place cette fonctionnalité.
Je ne vais pas reproduire son billet de blog ici, ce serait inutile.
Dans le UEFI/BIOS
Il est possible, dans le UEFI/BIOS
, de faire en sorte que les touches de
fonction soient accessibles sans passer par la touche Fn
. Cela peut
faciliter la vie.
Accèder aux CD Audio
Il faut modifier dans le fichier /etc/devfs.conf
ainsi :
link cd0 cdrom
link cd0 dvd
perm cd0 0666
perm xpt0 0666
perm pass0 0666
Puis de redémarrer devfs
:
# service devfs restart
Conclusion
FreeBSD sur un Thinkpad X280, cela fonctionne. Il y a deux petites choses qui me dérangent :
- impossible de désactiver le touchpad pendant la frappe au clavier. Un survol trop proche avec le pouce peut envoyer le curseur bien loin de la ligne que vous êtes en train d’écrire ;
- le bluetooth qui ne fonctionne pas ;
Cette installation est la mienne et me convient. Je ne me prétend par expert et d’autres peuvent sans doute faire mieux.
Mise à jour du 9 novembre 2019
J’ai fait la mise à jour de mon kernel en 12.1-RELEASE et j’ai eu quelques problèmes.
Le module i915kms.ko
Au chargement de ce module, la machine plante et redémarre. Ce n’est pas le comportement désiré.
Après avoir exposé mon problème sur la liste freebsd-hardware
, il s’avère que
c’est un bug connu avec une solution. Il suffit de recompiler le module
depuis les ports
. Voici la procédure :
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=241101
Tout d’abord, dans le menu de démarrage, choissez l’option 2 - Single user boot
afin de démarrer sans les couches supérieures du système.
Une fois que vous avez rentré le mot de passe et le chemin vers le shell à
utiliser (faites entrée sur ce choix) vous vous retrouvez avec un simple #
.
Nous allons monter le système de fichier en mode lecture/écriture
(il est en
lecture seule
par défaut) et monter les datasetsZFS
:
# mount -u /
# zfs mount -a
À partir de là nous allons pouvoir éditer le fichier /etc/rc.conf
pour
commenter la ligne kld_list="/boot/modules/i915kms.ko"
Ensuite, nous reprenons la séquence de démarrage en tant exit
.
Une nouvelle fois nous nous connectons avec l’utilisateur root
et nous allons
recompiler notre module noyau :
# cd /usr/ports/graphics/drm-fbsd12.0-kmod
# make install clean
Des tas de lignes inconpréhensible pour le commun des mortels font s’afficher avec que la main ne vous soit rendu.
Il est temps de réactiver la ligne kld_list="/boot/modules/i915kms.ko"
dans le
fichier /etc/rc.conf
et de redémmarer la machine.
Et cette fois, elle va jusqu’à la fin et vous propose la connexion graphique.
Lien externe
Je vous conseille de télécharger et de garder avec vous le PDF dont voici le lien :
-
Ne rêvez pas, les informations reproduites ici ne sont pas celles d’un réseau Wi-Fi de ma connaissance. ↩︎
-
C’est ce que j’utiliserais dans cet article. ↩︎
-
avec la commande
# sudo kldload i915kms
↩︎ -
que vous pouvez provoquer avec la combinaison
CTRL+ALT+Effacement
↩︎ -
Je pense qu’il est assez simple de faire le vôtre à partir de vos plus belles photos. ↩︎
-
Merci à mon ami Bertrand pour m’avoir guidé dans cette configuration et à Porkepix pour les relectures, suggstions et corrections. ↩︎