FreeBSD (1/3) Install de base

, par MiKaël Navarro

Jusqu’à présent sous Bodhi Linux, je cherchais à mettre à jour mon ancien PC portable Dell Inspiron 6400 (de 2007 !), mais le support 32 bits se fait de plus en plus rare (par exemple ubuntu a arrêté le support 32 bits après la 18.04), aussi je me tourne vers les distributions *BSD

Il y bien des solutions prêtes à l’emploi pour une utilisation « poste de travail » telles que GhostBSD, helloSystem, MidnightBSD ou nomadBSD, mais j’ai opté pour une installation « recompilé à la main », un « vrai » FreeBSD  ;-)

Cet article décrit les étapes pour installer FreeBSD 13.1 sur un PC portable pour une utilisation « poste de travail » (Xfce, multimédia, …) :

Merci à Olivier <https://olivier.cochard.me/bidouill...> pour sa doc…

Installation

Pour rappel le matériel concerné est un Dell Inspiron 6400 :

  • Intel Core Duo T2400 (1830 MHz), 2Go de RAM
  • Intel Graphics Media Accelerator 950 (128 MB) 14.1"

Les ISO/IMG sont à récupérer sur :

L’installation se fait en mode texte, mais est très simple :

“Boot Multi user” (démarrage en mode multi-utilisateur) lance la suite du processus de démarrage de FreeBSD.

Il suffit ensuite de sélectionner « Install » sur l’écran qui se présente, puis de suivre les conseils :

  • Sélection du type de clavier et du “hostname” :
  • Concernant les composants à installer :
    • Laissez les valeurs par défaut (kernel-debug),
    • avec éventuellement les “ports” (le catalogue des logiciels portés pour FreeBSD),
    • et “src” (il peut être nécessaire pour compiler des modules du noyau, ou des applications du catalogue des logiciels portés).
  • Pour le partitionnement on choisira ici plutôt le mode “Auto (UFS)” (ZFS c’est trop pour mon vieux matériel !) :
  • Attention au vocabulaire utilisé par FreeBSD !
    • Un « slice » est une partition MBR, elles portent comme nom le nom du disque suivi des lettres s1, s2, s3, …
    • 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, …)
    • Choisir le disque d’installation :
    • Pour notre « vieux matériel » choisir “Master Boot Record” :
    • Valider le partitionnement :
  • Attendre environ 2 minutes pour terminer l’installation…
  • Puis viennent quelques questions triviales :
    • Mot de passe de l’utilisateur “root”,
    • Configuration du réseau (incluant le Wifi si vous sélectionnez cette interface, mais ça n’a pas marché chez moi, on verra ça plus tard…),
    • Et la “timezone”.
  • Viennent ensuite les services au démarrage :
    • “sshd”, “moused”, “ntpd” et “powerd”
  • Sélectionnez les options de renforcement de la sécurité souhaitées :
  • Vous avez maintenant la possibilité de rajouter des utilisateurs :
    • À la question “Invite USER into other groups ?”, répondre : wheel operator dialer video
      • “wheel” permet de passer root par la commande su
      • “operator” obligatoire pour utiliser la commande su et éteindre le PC
      • “video” permet d’accéder à la carte graphique
    • Login class : laissez par default (on changera plus tard)
    • Shell : sh ou tcsh
    • Home directory : par défaut
    • Enfin choisissez un mot de passe et confirmez la création :
  • De retour sur le “Final Configuration”, sélectionner “Exit”, puis “Reboot” :

Configuration du Wifi

La configuration du Wifi n’ayant pas fonctionné pour moi lors de l’installation (bsdinstall netconfig) je me suis basé sur la doc <https://docs.freebsd.org/en/books/h...> pour la configurer manuellement :

  • On commence par déterminer notre interface Wifi : # sysctl net.wlan.devices
    Ça répond pour moi wpi0.
  • On configure ensuite notre SSID (Service Set Identifier) et la clef PSK (Pre-Shared Key) :
    # vi /etc/wpa_supplicant.conf
    network={
            ssid="SFR_47F0"
            psk="************************************"
    }
  • On configure le réseau au démarrage :
    # vi /etc/rc.conf
    wlans_wpi0="wlan0"
    ifconfig_wlan0="WPA SYNCDHCP"

    Et on “reboot”.

Clavier “bépo” et localisation en français

Mon clavier étant bépo, et la disposition AFNOR (bépo 1.1rc2) n’étant incluse par défaut qu’à partir de FreeBSD 14.0, en attendant il faut télécharger le fichier “kbd” :

$ fetch https://cgit.freebsd.org/src/plain/share/vt/keymaps/fr.bepo.kbd

Puis l’installer et l’activer au démarrage (dans le /etc/rc.conf) :

# cp fr.bepo.kbd /usr/share/vt/keymaps/
# sysrc keymap=fr.bepo.kbd

P.I. pour le changer « graphiquement » dans le terminal utilisez la commande : kdbmap.

La disposition utilisant des codages non-ASCII sur 8 bits ou plus il est nécessaire d’utiliser l’encodage de caractère utf-8 :

# vi /etc/login.conf
french|French Users Accounts:\
:charset=UTF-8:\
:lang=fr_FR.UTF-8:\
:tc=default:

Et exécuter la commande suivante : cap_mkdb /etc/login.conf

Puis éditer le fichier de mot de passe par la commande vipw, et rechercher votre login pour ajouter “french” entre les :: :

mickey:$6$IYY…:1001:1001:french:0:0:MiKey983:/home/mickey:/bin/tcsh

Plus d’information cf. http://www.bepo.fr/wiki/Console_FreeBSD_et_DragonFly_BSD

Shell Tcsh

Y-en a marre des « beep » ! Pour le désactiver et au passage activer la couleur dans la console :

# vi /etc/csh.cshrc
set nobeep
setenv CLICOLOR true
setenv COLORTERM true

Désactiver ensuite le buzzer (en mode vt(4)) :

# vi  /etc/sysctl.conf
kern.vt.enable_bell=0

Mise à l’heure automatique

Pour les postes de travail / laptop, on ne synchronise l’heure qu’au démarrage :

# service ntpddate enable
# sysrc ntpdate_enable=yes

Périphériques USB, graveur CD/DVD

La première chose à faire est d’autoriser les utilisateurs à monter des périphériques :

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

Attn. ça ne fonctionne pas chez moi pour mon utilisateur dans le groupe “operator” !? À suivre…

Et si vous n’avez pas mis votre utilisateur dans le groupe “operator” et “dialer” (accès aux ports séries) c’est le moment de le faire :

# 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 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

Déclarer ces nouvelles règles :

# sysrc devfs_system_ruleset=localrules

Activer les nouvelles règles :

# service devfs restart

Et vérifier leur applications : devfs rule show

DMA à la place de sendmail

DragonFly Mail-Agent (inclus à partir de FreeBSD 11) permet de remplacer sendmail si votre besoin est uniquement pour envoyer des emails :

# sysrc sendmail_enable=NO
# service sendmail onestop

Paramétrer le mailer /etc/mail/mailer.conf :

# Execute dma instead of sendmail
sendmail        /usr/libexec/dma
mailq           /usr/libexec/dma
newaliases      /usr/libexec/dma
rmail           /usr/libexec/dma

Et désactiver les tâches spécifiques à sendmail dans /etc/periodic.conf :

#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"

Reste la configuration de DMA /etc/dma/dma.conf, ici un exemple pour un compte gmail :

SMARTHOST smtp.gmail.com
PORT 587
SECURETRANSFER
STARTTLS
AUTHPATH /etc/dma/auth.conf
MASQUERADE votre-login@gmail.com

Puis : echo 'votre-login|smtp.gmail.com:votre-mot-de-passe' > /etc/dma/auth.conf

Mises à jour de FreeBSD

Cela ce fait simplement par la commande suivante : freebsd-update fetch install

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

Collecte d’information

  • La liste des équipements PCI détectés s’affiche par la commande : pciconf -lv
  • Celle des équipements USB par : usbconfig
  • Liste des équipements détectés par HAL : lshal
  • Charge système par des graphiques : systat
  • Aperçu de la charge système par la commande : systat -vm
  • 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 :
    procs    memory    page                      disks     faults       cpu
    r  b  w  avm  fre  flt  re  pi  po   fr   sr ad0 cd0   in   sy   cs us sy id
    0  0  4 4.5G  66M  273   8   2   2  274  527   0   0  597  20K  19K 19  8 74
  • Et pour connaitre qui consomme les interruptions matérielles (la colonne rate est importante) : vmstat -i
    interrupt                          total       rate
    irq1: atkbd0                       44903          5
    irq9: acpi0                            1          0
    irq12: psm0                         1224          0
    irq14: ata0                       120236         13
    irq15: ata1                         6456          1
    irq16: vgapci0                     77275          8
    irq20: hpet0 uhci0+              4751848        495
    irq21: uhci1                       79298          8
    irq24: hdac0                          40          0
    irq26: wpi0                       656161         68
    Total                            5737442        597
  • Charge des disques : gstat

Gestionnaire de “packages”

Il suffit de lancer la commande pkg pour qu’il s’auto-installe.
Puis pour mettre à jour la liste des paquets présents sur le dépôt officiel : pkg update

Pour installer de nouveaux packages : pkg install truc bidule machin chouette
Et pour les mettre à jour : pkg upgrade

Retour sur les disques amovibles

Pour monter automatiquement les disques amovibles on va utiliser automount.

Mais d’abord pour ajouter le support d’autre systèmes de fichiers :

# pkg install automount fusefs-ntfs fusefs-simple-mtpfs

Commencer par le chargement de fuse et créer un fichier de configuration (a éditer pour faire correspondre à votre environnement) :

# sysrc kld_list+=fusefs
# sysrc kld_list+=ext2fs
# kldload fusefs
# kldload ext2fs
# cp /usr/local/etc/automount.conf.sample /usr/local/etc/automount.conf

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

# service devd restart

Désormais, dans le dossier /media vous devriez retrouver le nom des disques USB connectés. Et là ça marche !

Usage de ntfs-3g dans le fstab

Voici un exemple de ligne du /etc/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

Optimisations

Configurer le scheduler pour un usage « desktop » :

# sysrc -f /etc/sysctl.conf kern.sched.preempt_thresh=224

Pour activer la réponse « yes » aux questions de fsck automatique au démarrage :

# sysrc fsck_y_enable=YES

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/ada0s1a    /             ufs     rw,noatime    1       1

Pour corriger les grosses failles des microcodes CPU en attendant la màj de votre BIOS/EFI :

# pkg install devcpu-data
# service microcode_update enable
# service microcode_update start

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

Voilà ! À partir de là on a un système FreeBSD opérationnel (en mode console) sur notre laptop ;)