ChezManu.eu.org

Accueil // À propos




Naissance de BSD et Internet.

FreeBSD comme poste de travail

Who's that Chuck ?

 

Premiers pas sous FreeBSD

Passer sous un système BSD faisait partie de mes bonnes résolutions de 2016.

Pourquoi un BSD ?

Pour l'amusement, pour explorer un nouveau système, sortir des sentiers battus, utiliser un autre UNIX libre. Et s'amuser à remarquer les similitudes, et les différences, également.
Un BSD parce qu'on m'en vante les qualités techniques, parce que j'entends chanter louange de son administration plus simple que celle d'une distribution Linux. Parce qu'il parait que BSD restera vierge à jamais de la corruption absolue et de la vicissitude infâme qu'est, il parait hein, systemd.
Parce que iMil avec son petit speech sur la naissance d'Internet et de BSD m'a rendu curieux.
En somme comme pour une nouvelle voiture ou une nouvelle paire de godasses, pour de bonnes et de mauvaises raisons. Pour des sérieuses et des futiles.

Pourquoi FreeBSD ?

La famille des BSD est aujourd'hui représenté par 3 systèmes principaux, et d'autres, disons, plus mineurs.
Les 3 principaux sont, par ordre d'apparition, NetBSD, FreeBSD et OpenBSD. Certaines aiment à penser que FreeBSD est destiné à être généraliste dans son usage, NetBSD n'a que pour objectif d'être porté sur un maximum de plateforme, du serveur surpuissant jusqu'au grille-pain (non, ce n'est pas une blague : ) et qu'OpenBSD ne brille que par sa sécurité quasi-exemplaire.
Je pense que c'est une simplification outrancière qui n'a pas grand intérêt.
En fait j'ai tourné mon choix vers FreeBSD non pas pour ses qualités intrinsèques mais simplement parce que j'y ait déjà touché dans le passé, en superficie, via le live CD « Freesbie », projet aujourd'hui inactif, c'était le seul OS qui acceptait de booter sur une machine passablement capricieuse (et dont l'assembleur était d'une incroyable mauvaise foi en refusant de la reprendre en garantie) et que c'est le BSD pour lequel j'ai trouvé le plus de documentation et de personnes l'utilisant pour un usage desktop.

Parce que Beastie, sa mascotte, est carrément badass : http://www.frbsd.org/fr/chuck.html.

Et pourquoi pas TrueOS©® ?

Dans l'idée, TrueOS, auparavant nommé PC-BSD est une variante de FreeBSD, qui se calque sur ses sorties (il ne s'agit donc pas d'un fork à proprement parler) avec une surcouche « user-friendly ».
C'est en quelque sorte à FreeBSD ce qu'Ubuntu est à Debian. Mais plusieurs choses m'ont déplu :

Déjà l'environnement Lumina j'ai pas apprécié. Une espèce de fork de Fluxbox à la sauce Qt, un énième desktop manager qui n'apporte pas son lot de différences pour trouver sa place.
Entre les ténors Gnome et KDE, les outsiders légers comme Xfce et LXDE, les bizzareries contre-nature du genre d'Ubiquity et les petits derniers comme Mate ou Cinnamon, je ne voyais vraiment pas l'intêret d'en faire un de plus juste pour dire « moi aussi ».

Parmi les arguments j'ai trouvé « ouais mais nous on est pas lié à Systemd », ce qui est recevable. Mais Xfce ne l'est pas non plus, ils ont su avoir cette élégance. En outre la dernière fois qu'un FreeBSD a voulu se la jouer grand public, avec Freesbie, c'était déjà bel et bien un Xfce qui était en place.
Bref.

Pas mal de glitchs graphiques pénibles, ce qui n'est pas une nouveauté avec TrueOS, à l'époque ou ça s'appellait PC-BSD j'ai eu les même ennuis sur une machine différente. À l'installation en mode graphique j'étais tout bêtement bloqué puisque les menus, tout présents qu'ils étaient, ne présentaient aucun texte, si ce n'est de petits carrés.

En conclusion, faire des interfaces graphiques c'est parfois bien. Les faire correctement c'est mieux. Copie à revoir.

J'ai commencé par flasher l'image d'installation sur une clé USB

Puis j'ai booté sur la clé USB.

Au début c'est facile : boot ⇒ install


choix du clavier


choix du hostname

les composants à installer, par défaut ca m'ira très bien.

Le partitionnement, on m'a chanté louanges de ZFS, on va faire confiance aux personnes qui savent, je choisis ZFS.

Je prends bien soin de choisir « YES » à l'option « Encrypt Disks », ainsi mon disque dur sera chiffré intégralement. Le boot ne se poursuivra pas tant que la clé ne sera pas tapée, et si on extrait le disque dur de la machine pour le brancher à chaud sur une autre, le chiffrement fera que le contenu sera illisible.

Il va de soi que le swap aussi sera chiffré.


J'applique le partitionnement, étant sur un laptop avec un seul disque dur, la question du RAID est vite rêglée : je n'en ferais pas.


C'est la que les première différences avec un système Linux apparaissent, les disques ne sont pas nommés /dev/sdX (ou /dev/hdX comme ce fut antan) mais… autrement.
J'en conclue que ada0 doit correspondre à la première partition (numéroté « 0 » donc, cherchez pas à comprendre) du premier (et seul) disque dur. Mais je pourrais me tromper.

C'est le moment de rentrer, puis de confirmer la clé de chiffrement du disque dur. Il ne s'agit pas du pass root, uniquement de ce qui permettra au système de booter.



Le système s'installe…

Puis on rentre, cette fois, le mot de passe de l'utilisateur root.

Viens le moment de configurer le réseau, la aussi différence avec Linux, les interfaces ne sont pas nommées eth0 et wlan0.
En plus les deux ont un contrôleur de marque Atheros, lequel correspond à l'ethernet, lequel au wifi ? c'est la loterie, j'ai une chance sur deux et je me suis planté la première fois.

J'indique que j'habite en France pour que les réglages fassent en sorte que je ne dépasse pas la puissance d'émission qui fait transpirer les électro-hyper-chouinards.




Et je choisis parmi les SSID capté le mien. « FDN » en l'occurence (quelle originalité dans le nom, dites donc).

Je rentre la clé WPA de mon réseau Wifi.

Et, oui, je suis OK pour qu'on tente une config via DHCP.
Ce qui, sans surprise, est un succès.



J'ai la chance d'avoir un fournisseur d'accès à internet qui me propose l'IPv6, donc on refait la même, avec le protocole moderne cette fois.



Et comme j'ai bien configuré coté routeur, les résolveurs DNS v4 et v6 sont déjà renseignés. En l'occurence c'est mon routeur qui s'occupe de faire la résolution DNS pour mon LAN.

Le classique rêglage du fuseau horaire, de la date et de l'heure.






Les services à faire tourner dès le démarrage. À chacun⋅e de voir ce dont il a besoin.
Comme je dispose déjà d'un resolver propre sur mon routeur, je ne pense pas avoir l'utilité de faire tourner un Unbound en local
Enregistrer les crash dumps ne me sera pas non plus bien utile, de toutes façons je serais bien incapable de les lire et encore moins de les comprendre.

Toutes les options de durcissement de la sécurité m'ont semblé, quant à elles, pertinentes. J'active tout.

Et le moment ou l'on ajoute un utilisateur.

Pour que mon user puisse passer root (comme sous Linux, via la commande « su ») il faut être attentif et l'ajouter au groupe « wheel ».

Et on termine l'install en rebootant.






Après m'être loggué je teste si le réseau est OK en faisant un ping, et un ping6. Ok, ça fonctionne, en IPv4 et en IPv6.


Une nouvelle différence avec Linux : Bash n'est pas installé d'office. Qu'à cela ne tienne.
Il y a plusieurs façons d'installer un logiciel sous FreeBSD.
⋅en le compilant à partir des sources, la bonne vieille methode UNIX.
⋅en installant un paquetage binaire, méthode bien connue des users de Debian/Ubuntu et autres distributions Linux, comme Red Hat.
⋅la méthode qui semble être la préférée des users BSD : les ports, on compile le logiciel, mais à partir des sources organisées dans un arbre. À mi-chemin entre l'apt-get et le make, en quelques sortes.
Pas trop téméraire je vais m'en tenir à ce que je connais bien, la méthode paquetage binaire. Dans ce cas il faut employer la commande « pkg install »
Installons donc Bash :

pkg install bash



À la fin de l'installation il m'est indiqué que pour que Bash fonctionne il faut bidouiller un peu l'/etc/fstab. Faisons donc :

echo "fdesc /dev/fd fdescfs rw 0 0" >> /etc/fstab


Puis j'emploie la commande chsh (CHange SHell) pour affecter bash par défaut à l'user thy.

chsh -s /usr/local/bin/bash thy


Après un reboot je constate que c'est effectif et que j'ai désormais mon bon vieux bash après m'être loggué.

Par contre ça manque un peu d'interface graphique, corrigeons cela en installant donc Xorg qui fourni toute la machinerie nécessaire pour du mode graphic, Xfce qui est mon environnement de bureau de prédilection et slim, un gestionnaire de connexion.

pkg install xorg xfce slim



Encore une différence, plus profonde, avec Debian ; Il ne suffit pas d'installer un paquet pour que les fichiers de config soient mis à jour. J'ai installé Xorg et xfce, mais ce n'est qu'installé, rien n'est fait pour que tout ceci se lance automatiquement. Comme pour BASH, qu'à cela ne tienne, je vais faire ce qu'il faut :
Modifier le ficher /etc/rc.conf afin d'activer les services nécessaires :
en root :

cat <<EOT >> /etc/rc.conf
moused_enable="YES"
dbus_enable="YES"
hald_enable="YES"
slim_enable="YES"
EOT


Et indiquer dans /home/thy/.xinitrc que Xfce4 doit être lancé après le login.
En user :

echo "exec xfce4-session" >> ~/.xinitrc

Puis je reboot
Cette fois c'est OK, une fois la séquence de boot achevée je me retrouve en mode graphique (et par la même occasion je peut maintenant afficher un vrai screenshot et non pas des photos dégeulasses)





C'est un peu rudimentaire de base, donc j'installe qques paquets pour me sentir un peu plus chez moi, Xfce4-goodies pour étoffer l'environnement graphique, xlockmore pour me permettre de verrouller ma session, et enfin firefox, claws-mail et son module de gestion de PGP.

pkg install xfce4-goodies xlockmore firefox claws-mail claws-mail-pgp


Étant donné que cette machine sera plutôt nomade et amenée à changer donc sans cesse de réseau wifi je constate l'absence remarquée d'un applet à la Network Manager.
Des discussions sur les forums et ML se dégage une constante : les dev de FreeBSD utilisent ifconfig, en mode texte donc, et personne n'est vraiment motivé pour le porter sous BSD, Network-Manager étant très intimement lié au kernel Linux (il semblerait même que sa gestion soit fort différente d'une distrib à une autre, bref, une belle saloperie en terme de portabilité).
TrueOS©® (la version « grand public » de FreeBSD donc, faut suivre, un peu) dispose d'un machin assez semblable, mais qui ne semble pas disponible dans FreeBSD Vanilla. Dommage qu'il n'y ait pas (encore ?) de communication de code bidirectionnelle entre les deux projets.
Qu'à cela ne tienne, il existe wifi-mgr, qui s'il est un peu plus rudimentaire fait tout à fait le job :

pkg install wifimgr


Et ca sera tout, pour le moment.



1983 - 2017 // Emmanuel Bourguin