Virtualiser des machines sous FreeBSD avec bhyve

Depuis sa version 10.0, FreeBSD inclut un hyperviseur nommé bhyve (prononcer « bee-hive »). C’est une plate-forme de virtualisation conçue exclusivement pour FreeBSD et qui permet, à l’instar de QEMU sous Linux, d’héberger des machines virtuelles.

J’ai moi-même été amené ces temps-ci à faire mumuse avec bhyve dans le cadre d’expérimentations à titre personnel : je voulais mettre en place une machine virtuelle sur mon serveur qui, à terme, devrait héberger mon installation d’Asterisk afin de mieux l’isoler du système hôte. Bhyve étant encore relativement jeune, je vous propose donc un petit compte-rendu des étapes nécessaires afin de faire fonctionner une VM sous FreeBSD avec bhyve.

Prérequis

Pour commencer, comme le précise le manuel de FreeBSD, votre machine doit disposer d’un processeur Intel® (resp. AMD®) récent et prenant en charge les fonctions « Extended Page Tables » (EPT) et « VMX unrestricted mode » (UG) (resp. « Rapid Virtualization Indexing » (RVI) ou « Nested Page Tables » (NPT) sur AMD®). Chez Intel, la majorité des Core i3/i5/i7 ou Xeon E3/E5/E7 récents feront l’affaire. Le manuel de FreeBSD décrit une procédure pour tester la compatibilité de votre matériel.

En outre, la plupart du temps, vous voudrez probablement démarrer des machines virtuelles à l’aide d’un gestionnaire de VM comme libvirt sous Linux. Bien qu’il soit possible d’utiliser libvirt sous FreeBSD avec bhyve, j’ai préféré opter pour une solution moins lourde et s’intégrant mieux avec les fonctions de ZFS en installant vm-bhyve.

Enfin, pour la mise en réseau, j’ai choisi de mettre les machines virtuelles « à plat » dans le même réseau que l’hôte, de sorte à ne pas être embêté par une quelconque forme de NAT. Pour cela, il faut reprendre une bonne partie de la configuration réseau et prendre garde aux interactions entre le trafic réseau destiné à la VM et le pare-feu pf de l’hôte.

Nous supposerons également que vous disposiez déjà d’un serveur DNS et d’un serveur DHCP sur votre réseau : la plupart du temps, il s’agit de votre routeur ou de votre box chez vous.

Le schéma ci-dessous reprend la configuration réseau que nous mettrons en place pour l’accès au réseau des machines virtuelles.

Illustration du pont réseau pour les machines virtuelles

Installation et configuration de vm-bhyve

Pour installer vm-bhyve, il suffit de l’installer avec pkg(8) :

# pkg install vm-bhyve

Choisissez ensuite un emplacement dans lequel seront stockés tous les fichiers de configuration et tous les espaces de stockage de vos VM. Pour ma part, j’ai choisi d’utiliser /usr/home/vm. Créez donc le dataset ZFS adéquat :

# zfs create -p zroot/usr/home/vm

Ajoutez ensuite les lignes ci-dessous dans /etc/rc.conf pour activer vm-bhyve au démarrage, de sorte à lancer automatiquement les machines virtuelles souhaitées :

vm_enable="YES"
vm_dir="zfs:zroot/usr/home/vm"

Initialisez ensuite le répertoire utilisé par vm-bhyve et copiez les templates de VM par défaut (j’en parlerai plus tard) :

# vm init
# cp /usr/local/share/examples/vm-bhyve/* /usr/home//vm/.templates/

(Une petite précaution s’impose : vérifiez avec la commande which vm qu’il s’agisse bien de /usr/local/sbin/vm ; en particulier, si vous avez installé le paquet mgetty sur la même machine, il se pourrait que vous ayiez un conflit avec l’outil vm installé par ce dernier. Si c’est le cas, tapez le chemin complet ou créez un alias dans votre shell.)

Configuration réseau

Cette partie est absolument nécessaire également. Sans cela, le réseau ne fonctionnera pas sur les VM, ou pire, cela ne fonctionnera que dans un sens. L’outil « vm » fournit des commandes de création de switches virtuels, mais cela fonctionne mal lorsque les VM doivent communiquer avec l’hôte. Heureusement, il y a une méthode plus fiable.

Supposons que vous ayiez dans votre /etc/rc.conf la configuration réseau suivante :

ifconfig_igb0="inet 192.168.10.21/24"
defaultrouter="192.168.10.254"

Il faudra donc modifier cela pour, à la place, créer un pont ayant comme unique membre l’interface physique connectée au réseau. L’outil vm-bhyve ajoute ensuite sur le même pont les interfaces virtuelles nécessaires pour les VM au fur et à mesure qu’elles démarrent (nommées tap0, tap1, tap2…). En outre, l’adresse IP de l’hôte doit être affectée au pont et non à l’interface membre.

On en profite également pour nommer le pont br-net plutôt que d’utiliser le nom par défaut bridge0, ce qui a l’avantage de rendre plus intelligible la sortie d’ifconfig.

Ainsi, vous devriez avoir la configuration suivante :

# interfaces
ifconfig_igb0="up"
cloned_interfaces="bridge0"

# réseau
ifconfig_bridge0_name="br-net"
ifconfig_br_net="addm igb0"
ifconfig_br_net_alias0="inet 192.168.10.21/24"

# routage
defaultrouter="192.168.10.254"

Si vous avez une machine avec plusieurs VLAN, je préconise de créer autant de ponts qu’il y a de VLAN. Cela vous permet d’isoler les machines virtuelles des VLAN dont elles n’ont pas besoin.

Une fois cette opération terminée, redémarrer le réseau avec les deux commandes :

# service netif restart
# service routing restart

N’oubliez pas ensuite de mettre à jour les fichiers de configuration faisant référence aux noms de vos interfaces réseau, comme /etc/pf.conf ou la configuration de isc-dhcpd si vous avez un serveur DHCP sur l’hôte. Redémarrez ensuite les services concernés.

Enfin, pour chaque pont que vous avez créé, utilisez l’outil vm pour créer les switchs virtuels :

# vm switch import public br-net

Cette commande crée un switch virtuel nommé « public » à partir du pont « br-net » créé précédemment à la main.

Nous avons ainsi terminé les paramétrages nécessaires avant la création de la première machine virtuelle sur l’hôte.

Adapter le pare-feu de l’hôte

Les paquets réseau destinés à l’invité demeurent filtrés par le pare-feu pf de l’hôte avant d’être acheminés vers l’invité. Comme je préfère configurer un pare-feu sommaire par machine, il faut modifier le /etc/pf.conf pour autoriser tout le trafic réseau entre la machine virtuelle et l’extérieur. Adaptez les noms des interfaces et les adresses IP et ajoutez cela vers le début de vos règles pf :

pass in quick on igb0 from 192.168.10.22 no state
pass in quick on igb0 to 192.168.10.22 no state

Créer une première machine virtuelle

Afin de permettre de créer de nombreuses machines virtuelles avec des configurations matérielles semblables, vm-bhyve propose l’utilisation de templates. Un template décrit simplement la configuration matérielle par défaut d’une machine virtuelle créée à partir de celle-ci. Dans notre cas, si on souhaite faire tourner une VM sous FreeBSD, le template « default » conviendra, mais il est préférable d’utiliser « freebsd-zvol » si votre hôte utilise ZFS.

Pensez à modifier le template qui vous intéresse dans /usr/home/vm/.templates si jamais vous avez créé un switch dont le nom est différent de « public » dans l’étape précédente. Vous pouvez aussi ajouter une deuxième interface branchée sur un VLAN d’administration ou effectuer toute autre modification que vous estimez nécessaire (il vaut mieux garder le nombre de VCPU et la RAM à leurs valeurs d’origine ; au pire, ça peut se régler par VM).

Une fois cela fait, il ne reste plus qu’à créer la VM (on crée au passage un disque dur virtuel de 20 Go) :

# vm create -s 20G -t freebsd-zvol ma_vm

On récupère ensuite une image d’installation de FreeBSD (nécessaire seulement la première fois) :

# vm iso \
    ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/11.0/FreeBSD-11.0-RELEASE-amd64-bootonly.iso

Enfin, on démarre la VM sur le média d’installation qu’on vient de récupérer (l’option -f permet la connexion automatique à la console de l’invité) :

# vm install -f ma_vm FreeBSD-11.0-RELEASE-amd64-bootonly.iso

Il ne reste plus qu’à procéder à l’installation comme n’importe quelle autre machine physique.

Conclusion

La mise en œuvre de bhyve est comparable à celui d’une solution à base de QEMU/KVM sous Linux. Je n’ai pas encore testé la redirection de périphériques PCI, mais je sais que bhyve le permet, moyennant le paramétrage à la fois de l’hôte et de l’invité.

Je dirais donc que bhyve fait tout ce qu’on attend d’une plate-forme de virtualisation. Le seul inconvénient que j’ai relevé est que bhyve exige impérativement du matériel récent. En revanche, on obtient une solution élégante, rapide et qui s’intègre très bien avec ZFS : on peut alors faire des instantanés et des copies de sauvegardes comme avec n’importe quel autre zvol.

En somme, c’est une solution très intéressante lorsqu’on veut isoler des services les uns des autres et qu’une « jail » ne suffit pas.

Posté par x0r à 0 commentaire • Tags : freebsd unix bhyve vm virtualization

Utiliser des calculatrices vintage en l'an 2017

(Note : j’ai déménagé récemment dans un appartement plus spacieux avec ma chère et tendre, ce qui a pu influencer négativement le rythme de publication de billets sur mon blog. Je prépare de plus un autre billet un peu plus technique mais qui me prendra pas mal de temps. Je vous propose donc cette fois un billet un peu moins orienté technique pure et dure en attendant.)

Quoi qu’il arrive, il n’y a jamais rien de tel qu’avoir une bonne calculatrice sous la main.

Ces derniers temps, il se trouvait que j’avais besoin d’une calculatrice financière pour de multiples raisons. D’aucuns me diraient que j’aurais pu me contenter d’outils en ligne ou d’une application sur mon ordiphone. Mais je préfère de loin une vraie calculatrice à n’importe quel autre objet qui s’y substitue. Cela a donc été l’occasion (ou un prétexte, au choix) de commencer une petite et modeste collection de calculatrices HP, aussi bien récentes que « vintage ».

Photo de calculatrices HP
Petit aperçu de ma collection pour le moment, que nous passerons en revue plus loin dans ce billet.

Pourquoi je préfère une vraie calculatrice

Entre l’apparition des premières calculatrices scientifiques de poche dans les années 1970 et maintenant, beaucoup de choses ont changé : notamment le fait que les ordinateurs et les smartphones soient accessibles à tout un chacun, ce qui n’était pas nécessairement le cas à l’époque des premières calculatrices.

Le PC et le smartphone sont des appareils très polyvalents et à quelques exceptions près, il n’y a rien que ces appareils ne sachent pas faire et qu’une calculatrice saurait faire. Ces deux types d’appareils ne sont néanmoins pas exempts de défauts, surtout lorsqu’on compte s’en servir comme calculatrice.

Tout d’abord, la calculatrice gagne sur la disponibilité : sur un PC, il faut attendre qu’il démarre, puis lancer l’application calculatrice pour avoir une calculatrice. Sur smartphone, il faut déverrouiller l’écran puis trouver l’application calculatrice parmi le capharnaüm d’« applis » déjà installés (de gré ou de force) sur le téléphone. Sur une calculatrice, il suffit juste d’appuyer sur le bouton « ON » ; elle est alors immédiatement disponible.

En termes d’alimentation électrique, une calculatrice requiert généralement entre une et quatre piles ; des piles bouton pour les plus petites ou des LR03 ou LR6 pour de puissantes scientifiques ou graphiques (bien que certaines graphiques actuelles comme la TI n-spire CX CAS ou la HP Prime ont des batteries rechargeables). Sauf exceptions, l’autonomie des piles se compte en général en mois (voire en années) avec une utilisation occasionnelle. On ne peut pas vraiment en dire autant pour un smartphone, bien que ce soit un appareil qui reste généralement allumé en permanence.

Ensuite, la calculatrice gagne sur l’aspect ergonomie également. Tout d’abord parce que je préfère largement un vrai clavier avec de vrais boutons et un vrai retour tactile lorsqu’on appuie dessus (d’où ma préférence pour un TypeMatrix en bépo ou un clavier mécanique).

De plus, une calculatrice n’a pas de distractions : il n’y a pas d’autres applications dessus qui seraient susceptibles d’afficher des notifications et on n’est pas tenté d’aller ouvrir une autre application juste après. Enfin, je peux être sûr qu’une calculatrice n’affichera jamais de publicités, ce qu’on ne peut pas vraiment dire de la majorité des applications gratuites calculatrice pour smartphone (du moins sur le Play Store de Google).

Privilégier une (bonne) calculatrice à un smartphone est parfois aussi une preuve de sérieux. Lors d’une réunion un tant soit peu formelle (par exemple un entretien avec un conseiller bancaire, un rendez-vous pour obtenir un prêt immobilier ou n’importe quelle autre situation de négociation), il faut pouvoir se battre à armes égales avec son interlocuteur. Dans ces situations, je me suis toujours surpris à utiliser une calculatrice à un moment donné de la conversation. Or j’ai horreur de sortir mon smart­phone dans ce genre de situations et j’ai le sentiment que j’aurais été plus crédible si, à la place, je sortais une vraie calculatrice (sans exagérer tout de même : je doute que mon conseiller bancaire m’accor­derait des faveurs particulières s’il me voit poser une HP 12c vintage sur le bureau, mais je me trompe peut-être !).

De même, j’ai vu nombre de conseillers bancaires ou d’autres personnes avec des métiers similaires avoir sur leur bureau, à côté de leur PC, une calculatrice « quatre opérations » comme on en trouve partout dans le commerce et s’en servir pour des opérations simples.

La calculatrice est un objet qui ne fait qu’une seule chose mais qui la fait bien. Ce n’est peut-être plus une machine aussi indispensable qu’avant, mais elle reste un compagnon de bureau utile.

Pourquoi je préfère une calculatrice en notation polonaise inversée

Mais je n’ai pas encore parlé de la raison principale qui m’a amenée à privilégier les calculatrices Hewlett-Packard.

Il faut savoir que sur la plupart de ces machines passés ou actuelles fabriquées par HP, on saisit les calculs en notation dite « polonaise inverse » ou « postfixe ».

Imaginons qu’on souhaite calculer 7 × 191. En notation classique (dite « infixe »), on saisit la première opérande, 7, puis l’opération, « × », puis la seconde opérande, 191, et on appuie sur « = » pour le résultat. En notation polonaise inverse, on saisit la première opérande, puis on frappe ENTER (ou INPUT sur certaines machines), puis on saisit la seconde opérande avant d’appuyer sur « × » et obtenir immé­diatement le résultat. En effet, dans cette notation, notre calcul s’écrit « 7 191 × ».

À première vue, l’intérêt de cette notation ne saute pas immédiatement aux yeux. Mais c’est en faisant des calculs plus compliqués que cette notation se révèle être intéressante : il n’y a en effet pas besoin de parenthèses.

Il n’y a pas besoin non plus de la notion de priorité entre opérateurs : l’ordre dans laquelle on écrit les opérateurs en notation postfixe correspond en effet à l’ordre dans lequel on évaluerait l’expression : par exemple, d’une part, l’expression (7 × 191) + 42 donne, en notation polonaise inverse, 7 191 × 42 + ; d’autre part, l’expression 7 × (191 + 42) se note 7 191 42 + ×. Comme la multiplication est commutative (i.e. a × b = b × a), cette expression se note aussi 191 42 + 7 ×.

Ainsi, avec un peu d’entraînement, les calculs sont plus rapides à saisir (et pour ceux que ça intéresse, vous pourrez trouver de nombreux autres exemples de notation polonaise inverse pour vous faire une idée). Ce type de calculatrices exige en effet de l’utilisateur un peu de gymnastique mentale, découlant de la nécessaire conversion entre notations infixe et postfixe. Une calculatrice en notation polonaise inverse n’est donc pas un substitut pour un cerveau, mais simplement une extension de celui-ci.

L’état actuel de ma collection de calculatrices HP

Je vous propose maintenant un petit tour d’horizon de mes quelques machines Hewlett-Packard actuellement en ma possession, dans l’ordre d’acquisition.

HP 50g

Lorsque j’étais en prépa, j’avais un jour surpris ma professeure de chimie utiliser une HP 28S pendant un TP. Comme elle avait remarqué que j’avais l’air intrigué par sa calculatrice, elle m’a expliqué que sa machine, qui datait de l’époque où elle était elle-même étudiante, fonctionne en notation polonaise inverse.

Ma curiosité ainsi titillée, j’ai utilisé pendant un court moment l’application Free42 sur Palm OS (et que je garde toujours sur mon propre ordiphone pour épater la charmante compagnie juste au cas où). Mais après un peu de réflexion, j’avais pris la décision de passer définitivement à une vraie machine en notation polonaise inverse pour mes concours et l’école d’ingénieurs. Ma machine de choix d’alors était donc une HP 50g.

HP 50g
Ma HP 50g.

Cette machine était donc ma première (et pendant longtemps, ma seule) calculatrice HP. Il s’agit d’une calculatrice scientifique graphique avec calcul formel. À l’intérieur, on y trouve un cœur ARMv4T qui émule un processeur Saturn, processeur qui équipait de nombreuses calculatrices de la fin des années 1980 et du début des années 1990 (séries Pioneer, Clamshell et Charlemagne). Par conséquent, cela la rend compatible avec des programmes de son aînée la HP 48g.

Le clavier a un petit retour tactile satisfaisant par rapport à une Casio ou une TI, mais celui-ci n’est pas aussi jouissif à l’usage comparé à des modèles plus anciens. L’autonomie des piles laisse également un peu à désirer par moments : cette calculatrice bouffe quatre piles LR03 en quelques mois d’usage intensif. L’avertissement « piles faibles » arrive assez vite, si bien qu’un jeu de piles neuves dans mon sac n’était pas un luxe ; ceci afin de se prémunir d’une « panne sèche » pendant un devoir surveillé ou une colle.

HP a cessé la production de ce modèle en 2015. Il n’y a à vrai dire pas de vrai remplaçant. La HP Prime s’y rapproche, mais malgré plusieurs mises à jour de firmware, elle a encore du chemin à faire pour reprendre le flambeau de la 50g du fait de fonctionnalités manquantes par rapport à celle-ci.

HP 17B II

Ma première machine purement financière achetée d’occasion, ce qu’on peut constater par quelques petites subtilités à l’usage (du moins, en mode polonaise inverse) par rapport à des modèles scientifiques.

Ce modèle a été introduit en 1990 par HP ; mon exemplaire a été fabriqué en Indonésie en 1996 d’après le numéro de série.

Je trouve le clavier absolument fabuleux et très agréable à l’usage. Il ne m’est encore jamais arrivé d’appuyer sur une touche sans que le logiciel n’enregistre la frappe. Je ne possède pas (encore) d’autres machines de la même série (Pioneer), mais je suis prêt à parier que le ressenti est à peu près identique sur les autres Pioneer. Le clavier est la seule raison pour laquelle je préfère ce modèle à la HP 17bII+, qui est sa version réactualisée.

Elle n’est pas programmable mais comporte un solveur d’équations qui peut être utilisé comme langage de programmation, lequel devient Turing-complet avec un peu d’habileté et en utilisant des fonctions non documentées.

HP 17B II et 17bII+
Vingt ans d’écart : de gauche à droite, une HP 17B II (ancien modèle) et une HP 17bII+ (nouveau modèle).

HP 17bII+

J’ai acheté cette machine d’occasion également à peu près au même moment que la HP 17B II parce que j’étais curieux de voir comment HP avait actualisé cette calculatrice financière. Et ils ne s’en sont pas trop mal sortis.

Les fonctions sont quasiment identiques (si bien que les modes d’emploi sont quasiment interchangeables entre les deux modèles, à quelques petites choses près). Le firmware de la 17bII+ semble toutefois avoir été réécrit ex nihilo (au lieu de faire tourner celui du 17B II dans un émulateur Saturn). Il y a donc quelques petites différences au niveau logiciel entre les deux machines.

Je ferai une comparaison plus en détail entre les deux modèles dans un autre billet. Quoi qu’il en soit, je résumerai en disant que les différences les plus notables sont :

  • le clavier, bien meilleur sur l’ancien modèle ;
  • l’afficheur LCD, bien meilleur sur le nouveau modèle (celui de l’ancien reste néanmoins très correct dans la plupart des situations et des éclairages) ;
  • le nouveau modèle ajoute une conversion de devises inspirée de la 19B ;
  • enfin, le nouveau modèle embarque 32 ko de mémoire contre 8 ko sur l’ancien.

Il y a en fait deux versions du HP 17bII+ : un premier qui avait été introduit en 2003 et un autre qui a été lancé en 2011. C’est le modèle le plus récent que je vous montre ici.

Force est de constater que HP a maintenu toutes les fonctionnalités de la HP 17B II : en particulier, il est toujours possible d’imprimer par infrarouge sur une imprimante thermique compatible (modèle HP 82240A ou 82240B) bien que Hewlett-Packard ne semble plus commercialiser lesdites imprimantes.

HP 35s

Cadeau d’anniversaire de ma chère et tendre et donc quasiment neuve, il s’agit d’un des deux modèles scientifiques encore commercialisés par HP qui prennent en charge la notation polonaise inverse (l’autre étant la HP Prime). Elle trône en ce moment surtout sur mon bureau au boulot, où elle m’a déjà beaucoup rendue service.

HP 50g
Ma HP 35s.

HP aurait introduit ce modèle à l’occasion du 35e anniversaire de sa toute première calculatrice scientifique, la HP 35. L’esthétique « old school » de ce modèle a en effet tout d’un hommage à cette dernière.

Il s’agit d’une calculatrice scientifique programmable avec un afficheur alphanumérique matriciel sur deux lignes. En mode polonaise inverse, celui-ci affiche les registres Y et X, ce qui est très agréable lors de calculs un peu complexes.

J’aime beaucoup le clavier sur celui-ci, même si parfois il arrive que j’aie le « clic » et le retour tactile de la touche mais que l’électronique n’enregistre pas la frappe. Il convient donc de regarder l’afficheur de la calculatrice pendant qu’on l’utilise. J’ai constaté ce problème de temps à autres sur d’autres machines récentes de HP comme la 17bII+ (cf. supra). Le ressenti de chaque touche est un peu inégal (certaines demandent un peu plus de force avant leur activation que d’autres), mais c’est peut-être une question de rodage.

La fonction que j’utilise le plus est la conversion de nombres entre bases 10 et 16. La façon dont cette fonction a été mise en œuvre sur cette HP demande un petit peu d’adaptation : peu importe la base d’affichage, sélectionnable avec les commandes DEC, HEX, BIN ou OCT, tous les nombres saisis sont réputés être en base 10. Pour saisir un nombre dans une base différente, il faut suivre le nombre en question du suffixe adéquat parmi « b », « h » ou « o » avant de le pousser sur la pile.

HP 19B

HP 19B ouverte
Ma HP 19B, ouverte.

La HP 19B a été introduite en 1987, en même temps que la HP 17B (qui précède de quelques années la HP 17B II).

C’est un peu le vilain petit canard de ma collection, parce que c’est la seule machine « vintage » qui ne prenne pas en charge la notation polonaise inverse ! Ce « défaut » a heureusement été corrigé dans le modèle 19B II ; de même, la 17B II est une 17B avec la possibilité de passer en notation postfixe.

C’est une calculatrice financière de la série « Clamshell ». Cette série semble être une série un peu « maudite » pour plusieurs raisons. Premièrement, le compartiment à piles est fermé à l’aide d’un élément en plastique qui fait également office de contacts pour les piles. Cette porte est le point faible de la machine, si bien qu’on trouve de nombreux Clamshells avec une porte cassée. Les palliatifs existent et prennent généralement la forme d’un bout de ruban adhésif, ce qui n’est guère esthétique.

Deuxièmement, à l’instar des Pioneer, ces machines sont fermées non pas à l’aide de vis, mais à l’aide de plots de plastique chauffés pour former des sortes de rivets. Ces rivets ont souvent tendance à casser, ce qui entraîne un mauvais maintien des deux parties de la coque, entraînant lui-même des dysfonctionnements allant du non-fonctionnement d’une ou plusieurs touches à une panne totale de la calculatrice. Du fait de cette méthode d’assemblage, ouvrir une Clamshell est nécessairement une opération destructrice

Cela dit, même si elle est plutôt encombrante aussi bien sur un bureau que dans une main (elle aurait été parfaite si elle faisait cinq à dix millimètres de largeur en moins), le clavier alphabétique de la partie gauche est très pratique pour saisir ses formules dans le solveur. L’écran LCD affiche trois lignes et une ligne de menu en permanence, ce qui représente un confort indéniable là aussi. En outre, nul besoin d’étui protecteur, et une fois fermée, cette calculatrice sait se faire classe et discrète.

HP 19B fermée
Ma HP 19B, fermée. À première vue, on croirait un organiseur…

La course des touches des deux claviers est très réduite et j’aurais préféré un toucher plus dur et un retour tactile et audible prononcé, comme sur la 17B II ou sur la 35s. Mais on s’y habitue…

Imprimante HP 82240A

Imprimante HP 82240A
Imprimante HP 82240A, avec du papier thermique du même âge que l’imprimante elle-même…

L’idée d’acheter d’occasion une imprimante thermique « vintage » pour accompagner une HP 17B II peut paraître saugrenue, mais ce n’est pas plus absurde que les myriades de calculatrices-imprimantes en notation infixe qui s’écoulent encore de nos jours. Surtout que dans le cas de calculs qu’on serait amenés à faire avec une calculatrice financière, il est bien pratique de pouvoir comparer différents scénarios (et notamment différents tableaux d’amortissements de prêts) sans avoir à refaire les calculs à chaque fois. Cette imprimante n’a donc rien d’un gadget.

Cette imprimante thermique date de 1989, et le rouleau de papier thermique qui est chargé dedans est toute aussi « vintage ». Heureusement, le format de papier thermique utilisé est relativement standard (il s’agit de rouleaux de largeur 57 mm) et se trouve facilement dans des magasins de fournitures de bureau orientés entreprise.

Elle est compatible avec toutes mes calculatrices à l’exception de la 35s. Je n’ai pas testé avec ma 50g, mais il semblerait que les options d’impression sont un peu cachés.

Conclusion

Mon objectif initial n’était donc pas réellement de me constituer une collection pour la simple collectionite. Il s’agissait simplement d’un concours de circonstances, de curiosité puis d’une prédilection pour les calculatrices HP qui ont fait que j’ai amassé quelques calculatrices Hewlett-Packard en quelques semaines.

Cela dit, si je me lance dans une collection un peu plus poussée (ce que je ne serai pas le premier à faire), il convient de me fixer un objectif raisonnable. Par exemple, l’objectif de posséder une machine représentative de chaque série est un compromis raisonnable.

Pendant ce temps, je suis tout particulièrement satisfait de ma HP 17B II (et ma HP 35s est devenue ma seconde machine de prédilection). Je ferai sûrement encore un billet ou deux à ce sujet.

Posté par x0r à 3 commentaires • Tags : calculatrices hp rpn

Asterisk et la Livebox bavarde

La Livebox d'Orange comporte, outre les connexions réseau et Wi-Fi habituelles, une prise FXS à l'arrière conçue pour y brancher un téléphone analogique. Comme je le disais auparavant, il s'agit là d'une des manières les plus simples d'exploiter la ligne fixe fournie avec toute connexion Internet Orange.

Sur la prise FXS et lorsque la Livebox détecte un problème sur la ligne téléphonique, elle substitue à la tonalité un message en boucle comme : « Un problème a été détecté sur votre ligne téléphonique. Veuillez redémarrer la Livebox. Si le problème persiste, veuillez contacter le service client Orange ». Puis la tonalité classique revient lorsque la ligne est à nouveau opérationnelle.

Seulement, dans certaines circonstances, cela allait de pair avec des sonneries intem­pestives  : la première lorsque la ligne était en dérangement et la seconde lorsque le pro­blème disparaissait. De plus, il s’agissait souvent de problèmes transitoires pendant que la Livebox se resynchronisait en PPPoE. Par conséquent, j’ai régulièrement été réveillé à 3 h du matin par cette box.

Étant donné, de plus, que j'avais déjà mis en œuvre Asterisk chez moi et que je supervisais déjà moi-même l'état des services Orange avec Icinga, je considérais donc que je disposais des outils pour filtrer ces sonneries intempestives. Ce billet propose donc de vous montrer comment j'ai fait.

L’idée

Ces sonneries intempestives prennent la forme d’appels anonymes et surviennent seulement lorsque la box considère que la ligne téléphonique est en dérangement. L’idée est donc de programmer Asterisk pour reconnaître ces deux caractéristiques.

Reconnaître un appel masqué dans Asterisk est facile. Déterminer la disponibilité du téléphone du point de vue de la Livebox est en revanche une autre histoire. Heureusement, mes scripts Nagios pour la Livebox remplissent exactement cette fonction ; il est donc possible de l’utiliser dans mon test. Nous allons également nous aider de l’interface AGI pour réaliser ce test.

Le script AGI

AGI, ou Asterisk Gateway Interface, est en effet une interface pour faire exécuter des scripts par Asterisk. Ces scripts accomplissent des tâches impossibles ou trop fastidieuses à mettre en œuvre via extensions.conf ou extensions.ael. Le principe est le même que celui de l’interface CGI dans le monde du Web : on peut utiliser n’importe quel langage de program­mation (C, Perl, Python…) du moment qu’on puisse écrire sur stdout, lire sur stdin, accepter des arguments de ligne de commande et que le fichier soit exécutable.

Les scripts AGI doivent être placés dans un répertoire spécifique qui dépend de votre installation Asterisk. Sous FreeBSD, il faut les placer dans /usr/local/share/asterisk/agi-bin et les rendre exécutables avec la commande chmod +x. J’ai appelé ce script stfu-livebox.agi. Voici son code source :

#!/usr/bin/env perl

use strict;
use warnings;

$| = 1;

use Asterisk::AGI;
use LWP::UserAgent;

my $AGI = new Asterisk::AGI;
my %input = $AGI->ReadParse();

my $replacement_name = $ARGV[0];
my $replacement_number = $ARGV[1];

$replacement_name ||= 'Livebox';
$replacement_number ||= 'Livebox';

$AGI->verbose("Run stfu-livebox.agi", 1);

sub is_trunk_alive {
    my $ret = system('/usr/local/libexec/nagios/check_livebox_phone', '-H', '192.168.1.1');
    $ret >>= 8;

    return ($ret == 0);
}

sub is_anon {
    return ($input{'callerid'} eq 'unknown');
}

sub main {
    if (is_anon() && !is_trunk_alive()) {
        $AGI->set_variable('CALLERID(name)', $replacement_name);
        $AGI->set_variable('CALLERID(name-pres)', 'allowed_not_screened');
        $AGI->set_variable('CALLERID(number)', $replacement_number);
        $AGI->set_variable('CALLERID(num-pres)', 'allowed_not_screened');
    }
}


main();

Le principe du script est le suivant : à chaque appel anonyme, il exécute le plugin Nagios check_livebox_phone, qui détermine l’état de la ligne téléphonique vue par la Livebox. Si la ligne est hors service, il positionne un numéro et un nom spécifiques.

Le nom et le numéro présentés sont « Livebox » par défaut, mais il est possible d’utiliser autre chose. Par exemple, sur mon installation, je lui fais présenter un numéro qui a peu de chances de m’appeler depuis l’extérieur : mon propre numéro.

Intégration dans le dialplan d’Asterisk

Maintenant que nous avons le script AGI, il ne reste plus qu’à l’appeler depuis le dialplan d’Asterisk au moyen de l’application AGI :

AGI(stfu-livebox.agi,Livebox,0199998765);

Il suffit ensuite de préparer le reste du dialplan, et notamment les instructions qui bloquent ces sonneries la nuit. Dans mon installation, j’en ai profité pour renvoyer les appels masqués immédiatement vers la messagerie vocale entre 23 h et 6 h et de complètement bloquer ces sonneries si elles proviennent de la Livebox durant cette même plage horaire. En AEL, cela donne :

Set(ALLOW_RINGING=1);
Set(ALLOW_VOICEMAIL=1);

// Traitement spécifique pour les appels anonymes
if ("${LEN(${CALLERID(number)})}" = "0") {
        Set(CALLERID(name-pres)=unavailable);
        Set(CALLERID(num-pres)=unavailable);

        AGI(stfu-livebox.agi,Livebox,0199998765);

        // Autoriser les appels anonymes de 6 h à 23 h seulement
        ifTime(06:00-22:59|*|*|*) {
                Verbose(1,Appel masqué autorisé le jour);
        } else {
                Set(ALLOW_RINGING=0);
                if ("${CALLERID(name)}" = "Livebox") {
                        Verbose(1,Sonnerie de la Livebox refusée la nuit);
                        Set(ALLOW_VOICEMAIL=0);
                } else {
                        Verbose(1,Appel masqué la nuit, renvoi vers répondeur);
                }
        }

} else {
        // Continuer normalement
}

// Faire sonner tous les téléphones
if ("${ALLOW_RINGING}" = "1") {
        Dial(${ALL_PHONES},25,xt);
}

// Si non-réponse ou rejeté, rediriger vers le répondeur
if ("${ALLOW_VOICEMAIL}" = "1") {
        Answer();
        VoiceMail(BoiteCommune);
} else {
        Hangup(21);
}

Hangup();

Vous remarquerez que j’utilise deux variables, ALLOW_RINGING pour déterminer si l’appel entrant peut accéder aux téléphones chez moi (c’est-à-dire les faire sonner) et ALLOW_VOICEMAIL pour déterminer si l’appelant peut enregistrer un message vocal. Ceci permet de gérer facilement les trois cas qui se présentent à nous dans ce dialplan.

Conclusion

Ces modifications à Asterisk font exactement ce que je voulais, c’est-à-dire ne plus être réveillé la nuit lorsque la Livebox se resynchronise. En pratique, seule la première des deux sonneries intempestives est effectivement filtrée : au moment où survient la seconde sonnerie, le script check_livebox_phone indique que la ligne téléphonique est à nouveau opérationnelle.

J’aurais pu résoudre ce problème en apportant une petite modification : lorsqu’Asterisk bloque la première de ces deux sonneries, qui est facile à reconnaître, on pourrait positionner une valeur dans la base de données AstDB pour bloquer l’appel anonyme qui suit immédiatement cette première sonnerie.

Mais en pratique, depuis qu’Orange a cessé d’utiliser PPPoE, ces resynchronisations hebdomadaires n’arrivent quasiment plus jamais, donc c’est plus difficile à tester.

Enfin, en cherchant un peu, ma solution était peut-être complètement excessive : d’après une poignée de forums, ces sonneries intempestives seraient dues à la notification visuelle de messages ; une fonction qui est seulement prise en charge par certains téléphones (mais pas Asterisk) et que je suis sûr de ne pas utiliser, parce que mon répondeur est déjà géré par Asterisk. Cela reste néanmoins un bon exercice de programmation AGI que je souhaitais partager.

Posté par x0r à 2 commentaires • Tags : orange livebox voip asterisk

Six mois de bépo : un compte-rendu

Le 15 janvier 2016, le Ministère de la Culture annonçait que la disposition AZERTY n’est pas adaptée à la langue française et qu’il fallait donc trouver ou inventer une meilleure disposition de clavier.

J’ai été agréablement surpris, tout d’abord, qu’ils mentionnaient dans le document intitulé « Repère claviers » une disposition déjà existante et qui pourrait parfaitement convenir : la disposition bépo.

C’est donc par curiosité que j’ai voulu essayer la disposition bépo. J’en avais déjà beaucoup entendu parler, mais c’est cette publication du Ministère qui m’a poussé à franchir le pas.

Typematrix
Typematrix® 2030 en BÉPO. Bien entendu, le bépo ne se limite pas à ce type de claviers…

Ce billet est mon compte-rendu de six mois d’apprentissage, de perfectionnement et de pratique de cette disposition de clavier. J’espère ainsi en convaincre d’autres de l’essayer et de l’adopter.

Origines du bépo

Le bépo a été le résultat de travaux datant du milieu des années 2000. L’idée principale est de placer les lettres les plus fréquemment utilisées en français sur les touches les plus facilement accessibles : celles de la rangée du milieu.

Des travaux similaires avaient été faits dans les années 1930 par August Dvorak, donnant le clavier simplifié Dvorak ou tout simplement le clavier Dvorak.

Cependant, à la différence des travaux de Dvorak, le corpus de textes utilisé pour la mise au point de la disposition bépo était non seulement constituée de textes littéraires, mais aussi d’extraits de code source, d’e-mails et de conversations de messagerie instantantée. Ce qui confère au bépo déjà de nombreux avantages par rapport à l’AZERTY et au QWERTY.

Avantages du bépo

En plaçant les lettres les plus fréquentes sur les touches les mieux accessibles, cette disposition est plus confortable et moins fatigant pour les mains. Elle tient également compte des besoins plus spécifiques liés à la programmation : par exemple, les symboles courants comme { } < > [ ] sont tapés en appuyant sur AltGr combiné avec une touche sous la main gauche. Sur QWERTY, ces symboles sont sur le côté droit du clavier en accès direct ou via la touche Maj, mais en AZERTY, la saisie de ces symboles demande souvent au typiste de se contorsionner les mains. Ceux qui ont déjà fait du LaTeX sur clavier AZERTY sauront de quoi je parle !

Mais le plus important, c’est que le bépo comporte tous les symboles et tous les caractères nécessaires pour écrire correctement en français. Les concepteurs du bépo ont d’ailleurs aussi tenu compte des besoins des langues régionales (occitan, breton…) et de nombreuses autres langues européeennes s’appuyant sur l’alphabet latin (y compris, au passage, l’espéranto).

Le bépo prévoit notamment :

  • les majuscules accentuées, comme dans le mot « État » (l’omission de l’accent constitue d’ailleurs une faute d’orthographe) ;
  • les caractères « e dans l’o » et « e dans l’a », comme dans « sœur » ou « curriculum vitæ » ou encore « Œdipe » ;
  • les guillemets français de premier niveau « » et de second niveau “ ” ;
  • une disposition unique et complète : il n’y a aucune « variante » entre les différents constructeurs de matériel ou les fabricants de systèmes d’exploitation (par exemple, pour taper une barre verticale « | », la combinaison est différente sur PC ou sur Mac en AZERTY mais pas en bépo) ;
  • en dernier mais pas des moindres : un apprentissage bien plus simple grâce à une disposition qui paraît « logique » grâce à de nombreux petits raffinements. Par exemple, tous les symboles de ponctuation devant être précédés d’un espace insécable sont sur la touche Maj, qui permet également de taper l’espace insécable (Maj + Espace).

Apprendre le bépo comme une deuxième disposition constitue également une opportunité pour apprendre à taper au clavier correctement avec une méthode de dactylographie, c’est-à-dire entre autres sans jamais regarder les touches.

 Installation du bépo

Je ne détaillerai pas la marche à suivre pour pouvoir taper en bépo sur votre système : cela ne ferait que dupliquer les instructions qui existent déjà sur le site bepo.fr. Je note cependant que la plupart des OS libres (sauf Android) intègrent déjà le bépo.

Mon apprentissage du bépo

Maintenant que j’ai traité les raisons pour lesquelles j’ai été tenté d’essayer le bépo, je vais détailler un peu les différentes phases par lesquelles je suis passé dans mon apprentissage puis de ma maîtrise du bépo.

Tout d’abord, changer une habitude qu’on a depuis des années (voire des décennies) peut paraître extrêmement difficile. En réalité, c’est à la portée de tous, du moment qu’on s’accorde les moyens. En outre, en quatre mois, j’avais déjà quasiment atteint la vitesse de frappe que j’avais mis vingt ans à acquérir en QWERTY, en sachant que je pourrais probablement faire encore mieux au fur et à mesure que je continue à taper en bépo. N’est-ce pas là un retour sur investissement intéressant ?

En tout cas, voici comment j’ai procédé : tout d’abord, par des exercices quotidiens pendant trois à quatre semaines, sans dépasser quinze minutes par jour. Ensuite passer en bépo par défaut sur toutes mes machines, en profitant d’un moment « creux » sans deadlines ou quoi que ce soit à terminer dans l’urgence. Le tout est de mettre l’accent non pas sur la vitesse de frappe mais sur la précision.

Les trois premières semaines : exercices quotidiens

Les trois à quatre premières semaines sont les plus importantes et c’est un temps d’apprentissage pendant lequel j’ai fait des exercices et uniquement des exercices.

J’avais failli commettre l’erreur de passer immédiatement en bépo comme disposition du clavier par défaut. Mais le but est a contrario d’apprendre la disposition petit à petit, pour se donner le temps tout d’abord d’acquérir les réflexes et entraîner sa « mémoire musculaire ». On commence par taper des suites de « e t e t et te ette » mais on a le sentiment de progresser vite : on finit très vite déjà par savoir taper des phrases simples comme « tu essaies un instant et tu es saisi ».

Ensuite, j’ai aussi failli être tenté de me précipiter pour « ré-étiqueter » son clavier en bépo, mais je n’ai pas cédé à cette tentation. Je n’aime pas les autocollants et cela incite de plus à regarder le clavier alors que le but est justement d’éviter cela.

Enfin, il est également contreproductif de faire des sessions de plus de quinze minutes. L’acquisiton de nouveaux réflexes nécessite de s’exercer à tête reposée et cela demande beaucoup d’effort mental.

J’ai fait pendant plusieurs semaines des exercices sur l’outil en ligne Bépodactyl. Certains recommanderaient Klavaro pour s’entraîner mais Bépodactyl a l’avantage de n’exiger l’installation d’aucun autre logiciel.

J’ai profité de l’opportunité pour acheter un TypeMatrix étiqueté en bépo (pour le style et pour m’assurer que mes collègues n’y touchent pas) afin de m’aider à apprendre la disposition et en espérant que ce clavier serait plus confortable pendant l’apprentissage.

Le grand saut

Au bout de quatre semaines, j’étais prêt à passer toutes mes machines en bépo. Sous X11 cela n’est pas très difficile :

Section "InputClass"
    Identifier "evdev keyboard catchall"
    Option "XkbLayout" "fr"
    Option "XkbVariant" "bepo"
    Option "XkbOptions" "kpdl:commaoss"
EndSection

J’en profite également pour positionner l’option Xkb pour que l’appui sur la touche « point » du pavé numérique insère une virgule au lieu d’un point (avec le point en AltGr).

Au moment du grand saut, j’étais à 20 mots par minute. Trop peu pour avoir une bonne répartie sur IRC mais suffisant pour des mails, même si j’étais certes un peu plus lapidaire.

Les deux mois suivants : perfectionnement

Néanmoins, pendant deux mois, ma vitesse de frappe augmentait rapidement et de façon régulière : je gagnais peu ou prou cinq mots par minute chaque semaine. Pour ça, je n’ai fait que deux choses : taper le plus possible d’une part, et faire des exercices sur Dactylotest d’autre part pour mesurer ma vitesse et ma précision.

À 35 mots par minute, je commençais déjà à pouvoir reprendre mes activités habituelles impliquant le clavier, que sont le boulot, le code et IRC, mais toujours à une vitesse bien en-deçà de ce dont j’avais l’habitude.

À environ 50 mots par minute, la progression de ma vitesse de frappe commençait à ralentir, mais entretemps je gagnais lentement mais sûrement en précision. Cette vitesse de frappe est déjà largement suffisante dans la plupart des situations. Quoi qu’il en soit, j’avais alors passé pas moins de trois mois pour regagner les deux tiers d’une vitesse de frappe que j’avais accumulée pendant vingt ans.

Le bépo dans la vraie vie

En plusieurs mois, j’ai eu suffisamment le temps de constater à quel point le passage au bépo a bouleversé mes habitudes.

Tout d’abord, je m’efforce désormais de n’utiliser que les guillemets français lorsque j’écris, y compris sur IRC ; je m’efforce également d’utiliser le « signe moins » (AltGr + « - ») au lieu du trait d’union devant les nombres négatifs ou en parlant d’une soustraction, et j’en passe.

Mais la seule raison qui m’avait retenue de passer au bépo était le fait que l’éditeur de texte Vim, que j’utilise tous les jours et dont je ne peux plus me passer, est conçu pour le QWERTY. De mon côté, j’ai pu résoudre le problème en m’inspirant de cette page et en partant sur une configuration qui échange les rôles des touches C, T, S, R avec H, J, K, L respectivement.  J’estime que repasser entièrement en QWERTY en mode commande est trop bouleversant, et cette solution me sied tout à fait.

Quoi qu’il en soit, je me souviens que du fait de mon travail, je souffrais régulièrement de débuts de tendinite dus à la frappe au clavier et ce malgré le fait que je m’installais correctement à mon poste de travail ; ces maux ont disparu au bout de deux à trois semaines après mon passage intégral au bépo. J’étais peut-être encore loin du syndrome du canal carpien, mais on s’accordera à dire qu’il vaut mieux prévenir que guérir et que dans cet aspect-là, le bépo a ses vertus en matière de santé publique.

Cependant, je sens que j’ai beaucoup régressé en QWERTY : ma vitesse de frappe et mon aisance en QWERTY et en AZERTY ont considérablement baissé. Il me faut parfois cinq à dix minutes pour me réhabituer à la frappe sur ces dispositions de clavier pendant que je combats ma tentation de vouloir taper en bépo (par exemple sur la machine d’un collègue).

Conclusion

Pour moi, l’expérience du passage au bépo a été un franc succès et une décision que je ne regrette pas. Je ressens un confort de frappe nettement amélioré et des mains moins endolories, qui sont des petits plus fort intéressants qui peuvent achever de convaincre autrui à tenter la même expérience que moi.

Posté par x0r à 4 commentaires • Tags : linux clavier bepo

Le dernier MS 61

Le samedi 16 avril 2016, la RATP a officiellement fait ses adieux au plus ancien matériel roulant du RER A après près de cinquante ans de bons et loyaux services : il s’agit du MS 61, un matériel roulant qui avait plus une carrure de « super-métro » que d’une rame de RER comme on en voit de nos jours.

MS 61 à Boissy Saint-Léger Le dernier MS 61 à Boissy Saint-Léger

C’est ainsi que ce jour-là, la RATP a décidé de faire une dernier service voyageurs avec cette rame : elle était stationnée voie A à la gare de La Défense – Grande Arche et partait à 14 h 47 pour Boissy Saint-Léger, pour ensuite faire le voyage retour jusqu’à Saint-Germain-en-Laye.

J’ai moi-même répondu présent, et j’ai profité du voyage de La Défense jusqu’à Boissy puis de retour jusqu’à La Défense. J'ai notamment eu l'occasion de prendre des photos détaillées du poste de conduite.

Je vous laisse donc admirer les photos que j’ai prises durant cette journée dans ma galerie photo, dans l’album intitulé « Le dernier MS 61 ».

Posté par x0r à 0 commentaire • Tags : train trains rer photo ratp ms61