Où trouver des informations

L'indispensable

Ce billet n'est qu'un court résumé de l'excellent FreeBSD Handbook , disponible gratuitement sur le site de FreeBSD.

Il est assez épais (plus de 1000 pages), mais du coup assez complet. Sa lecture est plus que recommandée, mon objectif ici étant principalement de résumer les particularités de BSD par rapport à Linux.

Je vous conseille de le lire en anglais, vous aurez la version la plus à jour.

Lisez le avant de poser une question sur IRC ou sur les forums. Je sais qu'on dit ça pour toutes les docs, mais là, vous allez sentir la différence si vous ne le faites pas.

Cliquez ici pour la doc html.

Pour une lecture hors-ligne ou dans d'autres langues.


Le dispensable

Si vous voulez un vrai livre en papier, «FreeBSD 7.0, le guide complet» de Michael W. Lucas (Pearson) est un bon moyen de débuter.

Il s'agit de la traduction de «Absolute FreeBSD, 2nd edition».

Le livre est sommairement traduit, mais il se lit malgré tout facilement, et contient une bonne base pour démarrer facilement.

La partie technique n'est pas très pointue et ne remplacera pas le handbook. Par contre, après lecture, vous comprendrez mieux l' «esprit» un peu particulier de la communauté BSD.

Attention, ce livre couvre la version 7 de FreeBSD. Il y a eu pas mal de changements depuis, notamment dans la gestion des packages.



Tester avec le live-cd (pour les méfiants)

Vous hésitez encore ? Comme je vous comprends.

Vous pouvez tester avec un shell à partir du CD. Le choix est proposé après la séquence de boot (test ou installation).

Si vous désirez modifier la configuration par défaut, vous aurez besoin de quelques manipulations. En effet, /etc n'est pas monté en ram et reste sur le CD.

Ramdisk pour /etc

Par défaut, /etc est en lecture seule. Cela empêche toute modification des fichiers de config, notamment le démarrage du dæmon sshd. (les clés de la session ne peuvent pas être écrites, et sshd ne démarrera donc pas).

Ceci permet de modifier les fichiers dans /etc en remontant ce répertoire en ram.


mkdir /tmp/ramdisk
mdmfs -s 256M md10 /tmp/ramdisk
cp -a /etc/* /tmp/ramdisk
umount /dev/md10
mount /dev/md10 /etc

La commande mdmfs sert à configurer et monter un système de fichier en RAM. Par défaut ce système de fichiers est formaté en UFS (le formatage standard FreeBSD).

mdmfs utilise le driver md (man 4 md)


On peut tester immédiatement le bon fonctionnement en démarrant le dæmon sshd: /etc/rc.d/sshd onestart


Activer l'interface réseau

Maintenant que nous avons lancé sshd, il est temps d'activer l'interface réseau.

/etc/rc.d/netif start

Ce qui active sur ma machine les interfaces: lo0 et em0.

dhclient em0 : pour obtenir une IP sur mon interface ethernet.



Installons d'abord (nous réfléchirons ensuite)

Insertion du CD

J'ai utilisé l'image d'installation FreeBSD 9.0. Pour la récupérer, je vous fais confiance, si vous lisez ce blog, vous êtes de grandes personnes.

Pas grand chose à dire sur l'installation en elle même. Belle interface ncurses, qui me rappelle ma vieille Slackware, snif. Cela dit, c'est toujours mieux que la nouvelle «interface» d'installation de Arch. Sans vouloir être blessant.


Partitionnement

J'ai utilisé le partitionnement automatique, qui m'a paru très bien. À part vouloir partager le disque entre plusieurs OS, vous ne devriez pas avoir besoin de faire un partitionnement manuel.

À noter que le partitionnement automatique utilise GPT à la place de MBR. Vous ne devrez donc surtout pas pas utiliser fdisk pour gérer votre disque, mais bien gpart.

Voici le schéma de partitionnement, choisi automatiquement par l'installateur:


ada0 232GB GPT
  ada0p1   64Kb (freebsd-boot)
  ada0p2  228Gb (freebsd-ufs)  /
  ada0p3    4Gb (freebsd-swap) none

Vous allez lire ici et là de longues dissertations sur un partitionnement très pointu, avec une partitions pour /usr, une pour /var, une pour /tmp (voire même celle-ci montée en ram), une cuillère pour /papa … ASSEZ ! Mettez tout sur la même partition, et montez éventuellement d'autres disques à partir de votre root.

Cela dit, vous faites comme vous voulez, mais ce n'est pas la peine de se compliquer inutilement la vie, les difficultés viendront bien assez vite. De toutes façons, à part ventiler les données volumineuses sur plusieurs disques (à l'époque où le tera-octet coûte 50€ ?), cela n'a aucun intérêt. Quand un disque claque, ce n'est pas avoir créé plein de partitions dessus qui servira à quoi que ce soit. Monter un RAID me parait plus judicieux (couplé bien entendu à des sauvegardes régulières et dans les rêgles de lard GRUIIIIIK!)

Et maintenant, quelques mots à propos du partitionnement sauce FreeBSD.

Nom des disques

  • da = disque dur scsi
  • ad = disque dur atapi ou sata (contrairement à Linux où le SATA est nommé comme du SCSI).
  • ada = disque dur sata (avec le nouveau driver).


Système de fichier

Sur FreeBSD 9, le système de fichiers par défaut est ufs2. newfs sert à créer des systèmes de fichier.


Vocabulaire spécifique aux partitions en MBR

slice = c'est une partition au sens habituel (MS-Windows, Linux).

partition = c'est un segment dans la slice BSD.

Exemples:

  • ada0s1 : premier disque dur, première partition primaire. Pas de numéro de partition, c'est donc un formatage MS-Windows ou Linux (si MS-Windows, surement le C:)
  • ada0s5 : premier disque dur, première partition logique dans la partition étendue. Pas de numéro de partition, donc c'est un formatage MS-Windows ou Linux.
  • ada0s1a : premier disque dur, première partition primaire, premier segment dans cette partition (s1 est le slice, a est le numéro de partition au sens BSD).


Vocabulaire spécifique aux partitions en GPT

En partitionnement GPT, tout est beaucoup plus simple: la limitation MBR à quatre partitions primaires n'existe plus.

Nous avons droit à 128 slices par disque, ce qui devrait suffire à tout le monde.



À table

Ensuite, vous sélectionnez les groupes de paquets que vous désirez installer, et c'est parti. Comme il n'y a plus rien à faire avant un certain temps, vous pouvez vaquer à vos occupations.

(un peu plus tard)

Et voilà, c'est installé. Plus qu'à choisir un mot de passe pour root, configurer son/ses interface(s) réseau, et reboot.



Particularités à connaître (ou: «fini Linux, fiston»)


Déplacement dans le buffer d'une console.

Le déplacement dans un buffer n'utilise pas shift+PageUp/Down, comme sous Linux.

À la place, utilisez Arrêt Défil , qui activera le défilement de l'affichage.

Les touches du curseur, ou PageUp / PageDown assureront le déplacement dans le buffer.

Arrêt Défil à nouveau pour revenir dans le mode normal.


Ordre des paramètres.

Sous BSD, l'ordre des paramètres est important. Ils suivent directement la commande.

ls / -lha fonctionnait sous Linux, mais pas sous BSD.

ls -lha / fonctionnera partout (oh non, nous allons devoir réécrire tous nos scripts!)

Notez que find garde son comportement : les paramètres se trouveront toujours à la fin, et ne suivront pas la commande.


Clavier en français sous la console

Il faut utiliser les capabilities.

Éditer le fichier /etc/login.conf et ajouter:


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

Ce fichier doit être hashé pour être reconnu par le système. On procède ainsi (en root):

cap_mkdb /etc/login.conf

Une fois la «capabilitie» ajoutée, il faut la préciser dans le fichier password.

Pour éditer ce fichier, il faut utiliser la commande vipw

Ajoutez le nom de la «capabilitie» après les informations de groupe

jseb:$rTfM1337a$42Lee7WtF666B0fH.:1001:1001:french:0:0:User &:/home/jseb:/bin/tcsh

Et pour ne plus avoir à le faire pour les autres utilisateurs, on peut parait-il ajouter dans /etc/adduser.conf.

defaultclass = french

Ceci n'a pas fonctionné sur mon système et les nouveaux utilisateurs doivent toujours être ajoutés dans le groupe «french» avec vipw. Peut-être un paramètre à préciser à adduser, une lecture sommaire de la page man dédiée ne m'en a pas appris plus. Ayant très peu d'utilisateurs sur mes machines, j'avoue ne pas avoir cherché plus loin.

Si vous ne l'avez pas déjà fait à l'installation, précisez dans rc.conf la disposition du clavier:


keymap="fr.iso.acc.kbd"

Et pour avoir changer la disposition clavier de façon ponctuelle: kbdcontrol -l fr.iso.acc



Particularités de tcsh

Avoir less comme pager

Par défaut, les pages man sont lues avec more.

more sous FreeBSD permet d'avancer, de reculer, mais quitte à la fin. Ahah! Démasqué! C'est un less en mode compatibilité avec more.

Il suffit donc de changer la variable d'environnement PAGER.

Oubliez export , le shell par défaut est tcsh.

set ne vous aidera pas beaucoup non plus.

La bonne méthode est setenv PAGER less



Un prompt qui ressemble à quelque chose


set prompt="%n@%/%# "


De la couleur avec ls

Rajouter dans ~/.cshrc


setenv CLICOLOR yes
setenv LSCOLORS "GeHxcxdxgxegedabagacad"

man csh pour les codes couleurs de LSCOLORS. Pour colorier par extension, il vous faudra la version GNU de ls.


Avoir une touche DELETE qui supprime

Rajouter dans ~/.cshrc


bindkey "\e[3~" delete-char


Changer de shell

Vous êtes allergique à tcsh/csh, et vous voulez revenir à cette vieille daube de bash.

Pourquoi ne pas faire une tentative avec zsh ? Quoi qu'il en soit, voici de quoi changer de coquille.

Attention au changement de shell pour le compte root ! (ceci ne concerne que les afficionados des partitions multiples).

Si le shell de remplacement se trouve dans /usr, il y a un risque. En cas de problème, si /usr ne se trouve pas sur la partition racine, root ne pourra pas se logger!

Cela étant, vous avez deux méthodes pour changer de shell

(dans tous les cas, vous devriez autoriser votre shell dans le fichier /etc/shells )

  • Lancer chsh . Ex: chsh -s /usr/local/bin/bash root

ou

  • L'invoquer depuis le fichier .cshrc . csh est le shell par défaut, il se lancera et invoquera ensuite le shell désiré.



Connaître son système

Vous avez toute une panoplie de commandes pour avoir des renseignements sur votre système.

  • uname -a : version et release de votre FreeBSD.
    • voir également /var/run/dmesg.boot
  • dmesg : messages du noyau (donc matériel detecté au boot et drivers chargés).
  • env / setenv : vos variables d'environnement pour le shell.
  • kenv : afficher les paramètres du kernel en cours d'exécution.
  • systat : vous permet de collecter des informations sur la charge système, les processus, les interfaces réseaux. C'est très puissant ( man systat ).



Mise à jour du système

Après une installation depuis un media un peu ancien (version 9.0 pour ma part), il peut être souhaitable (voire nécessaire) de procéder immédiatement à un upgrade du système.

Les upgrades système ne font pas appel aux commandes de gestion des paquets, et sont donc à part.

Il faut utiliser freebsd-update

Cette commande permet de faire une mise à jour binaire (pas de sources nécessaires).

Il est également possible de faire une mise à jour à partir des sources, mais cela semble moins évident (voir make world dans le handbook, mais cette méthode semble largement dépréciée).

À noter que si vous n'êtes pas dans votre bac à sable, il est plus prudent de faire une sauvegarde entière du système avant de vous lancer dans ce genre de mise à jour.


freebsd-update fetch install

Cette commande fait les mises à jour pour la release installée (9.0 pour moi).

Elle récupère (fetch) les mises à jour et les installe dans la foulée. Vous pourriez bien sûr le faire en deux étapes (fetch, puis install).



freebsd-update upgrade -r 9.1-RC1
freebsd-update install
shutdown -r now
freebsd-update install #cette fois, pour userland
shutdown -r now #c'est pas vrai, faut encore rebooter ?!


Cette série de commande change de release. Attention, à l'heure où j'écris cela, la 9.1 est encore expérimentale, comme en témoignent les lettres «RC» (release candidate).

À part ça, il semble qu'il faille rebooter deux fois.



freebsd-update IDS

Cette commande récupère un fichier de checksums sur un serveur officiel (c'est souhaitable), et vérifie que les fichiers du système correspondent. Très cool pour vérifier que vous n'êtes pas rooté.

Bien entendu, dans la configuration de base, les fichiers que vous avez modifié vont générer une alerte.



Troubeulchoutine

root et password

Vous voulez changer le password de root, utilisez la commande passwd

N'utilisez pas chpass pour éditer le mot de passe! Le champs Password attend un hash, et non pas un mot de passe en clair! Vous ne pourriez plus vous relogger en root.


mot de passe root perdu

Booter en single user (menu 4 du boot pour FreeBSD 7.1)

Remounter la partition racine en RW : mount -u /

Mounter tous les systèmes de fichiers: mount -a

Lancer la commande passwd root et entrez votre nouveau mot de passe.

Rebootez.



Alors, ils mangent des enfants chez #freebsd ?

Si vous avez bien lu la doc, vous serez bien accueilli, et vous obtiendrez une réponse à vos légitimes questions de Linuxien.

La prochaine fois, je vous parle de la gestion des paquets. Croyez-moi, cela vaut bien un billet à part.