Un petit morceau d’histoire du libre

Trouvé pour une poignée de dollars* sur Amazon Marketplace USA, je me suis fait un petit cadeau avec l’édition de 1987 de Operating Systems : Design and Implementation d’Andrew S. Tanenbaum, celle-là même dans laquelle Linus Torvalds se plongea en 1991 pour écrire ce qui allait devenir Linux.

L’état de ce livre de plus de 20 ans est excellent, quasi-neuf à part quelques petites bosses dues à son voyage depuis l’autre côté de l’Atlantique.

Très plaisant d’avoir ce petit bout d’histoire du libre (et même de l’informatique en général) chez soi. Quand on sait l’importance qu’ont eu ces lignes sur l’existence de notre kernel préféré, les lire a une saveur particulière.

Certes, c’est assez technique et je comprendrai sûrement pas la moitié du bouquin, mais ça m’éclaircira sûrement les idées sur beaucoup de points :D

L’édition contemporaine est bien plus recommandée et à jour pour se former efficacement sur le sujet, le prix n’est cependant pas le même, le charme non plus ;)

*8,46 petits euros frais de port compris, chez eux.

Nouveau serveur et nouveau thème !

Bonjour à tous,

Cela fait un long moment que je n’ai pas posté sur le blog, la flemme et beaucoup d’occupation (gros changements dans ma vie perso et pro) m’en ont un peu éloigné.

Je devrais désormais normalement être un peu plus actif, enfin espérons :D

Ayant déménagé en appartement, j’ai changé de serveur@home : exit le serveur lourd virtualisé sous Debian avec Xen, le site tourne désormais sur une machine plus modeste (mais qui consomme beaucoup moins et est surtout beaucoup plus silencieuse – elle fera peut-être l’objet d’un prochain billet) avec une couche logicielle différente :
Arch Linux / NGINX / PHP / MySQL

Beaucoup plus “K.I.S.S.“, donc ;)

Pour marquer ce changement, j’ai mis en place un nouveau thème, basé sur l’excellent thème par défaut de WordPress 3 : Twentyeleven.
Plus sobre et moderne, il s’adapte également magnifiquement aux résolutions des smartphones, rendant inutile un thème dédié à cet usage.

Quelques petits bugs peuvent m’avoir échappé, n’hésitez pas à m’en faire part.
(ah oui, à ce propos, j’essayerai maintenant de répondre aux commentaires :o )

De même il se peut que la propagation DNS ne soit pas encore tout à fait terminée pour tout le monde, il y a juste à attendre un peu.
L’adresse du blog a un peu changé : fini http://hippopota.me/blog/ , il réside maintenant directement à la racine http://hippopota.me
J’ai mis en place une redirection permanente, le changement devrait donc être transparent, mais n’hésitez pas à mettre à jour vos favoris et flux RSS le cas échéant.

Dockstar et boot réseau : optimisation

Dans mon article précédent, j’expliquais comment booter le Seagate Dockstar sur Plugbox directement sur le réseau, par TFTP et NFS.

Si cela fonctionnait effectivement, il subsistait en l’état un petit problème de performances : en effet, tout content d’avoir réussi à mettre ça en place, je ne m’étais pas aperçu que le montage NFS se faisait par défaut en NFS v2, avec des paramètres pas terribles :D
Gênant …

Donc voici comment passer les paramètres pour que le montage NFS se fasse en v3 (j’ai essayé en v4 et ça ne passe pas, mais j’avais eu le même problème sur PC, NFS v4 change pas mal de choses) avec des réglages un peu plus au goût du jour.

Toujours avec blparam, il faut simplement modifier cette variable :

rootpath2=<chemin local complet sur le serveur NFS de votre système de fichiers Plugbox>,v3,rsize=32768,wsize=32768,soft,tcp

Évidemment, adaptez à vos besoins et à la configuration de votre serveur NFS.
Ce sont néanmoins les réglages que je recommande afin d’obtenir de bonnes performances et une relative garantie de l’intégrité des données.

Attention, comme pour la dernière fois, avant de valider définitivement ces réglages chez vous, réglez bien bootcmd comme ceci :

bootcmd=run bootcmd3

Comme ça, si ces réglages ne fonctionnent pas chez vous (ou si vous avez fait une coquille), le boot d’après se fera sur Pogoplug ou en USB, ça évite de bricker bêtement son DS ;)
(ce serait néanmoins réparable avec l’interface série, mais c’est embêtant)

Si le boot réseau fonctionne bien avec les nouveaux paramètres, vous pouvez le fixer définitivement :

bootcmd=run bootcmd_net

Voilà, c’est tout !

PS : ah si, un petit truc.
Un bench que j’ai fait pour comparer les performances disque du DockStar en NFSv2, NFSv3 100Mbps puis Gigabit, ainsi qu’avec une clé USB.
(pour la clé USB, chiffres de azrael24 sur HFR, merci ;) )
Benchmark Bonnie++, pas de procédure rigoureuse et donc aucune valeur scientifique, c’est purement indicatif mais assez cohérent.

Seagate Dockstar : booter Plugbox sur le réseau via TFTP/NFS

Depuis quelques jours, plusieurs forums GNU/Linux s’enflamment pour une petite bestiole toute de blanc vêtue : le Seagate Dockstar.

Je ne vais pas le présenter en détails, d’autres l’ont fait mieux que moi, je vous renvoie donc à l’excellent article du blog de Galipe.

Nerd devant l’éternel, j’ai évidemment craqué pour la chose :D (je vais même en recevoir un deuxième dans les prochains jours)
J’ai commencé à le bidouiller, en installant Debian dessus avec la méthode de Jeff Doozan, puis Plugbox (un fork d’Arch Linux dédié aux “plug computers” ARM).

Mais j’étais loin d’être satisfait de ces installations : en effet, elles se font avec une clé USB branchée sur le Dockstar, afin de contenir le système de fichiers.
Non seulement je trouvais un peu bête de condamner un port USB, mais la méthode était également loin d’être fiable : problèmes de “cold-boot”, boot qui ne se fait pas sans qu’on sache pourquoi, un peu la galère en définitive … :(

Avant même de recevoir la bête, j’avais dans ma tête l’idée de la faire booter sur le réseau : c’est idéal, cette machine est constamment branchée, ça laisse tous les ports USB libres et ça ne consomme rien de plus :)

Aujourd’hui, excédé par un énième foirage de boot par USB, j’ai décidé de creuser.
Une méthode avait déjà été publiée pour les SheevaPlug, extrêmement semblables : http://www.plugcomputer.org/plugwiki/index.php/Setting_up_TFTP_and_NFS

L’idée est de :

  • demander à uBoot (le bootloader du Dockstar) de charger un kernel Linux par TFTP
  • booter ce kernel en lui demandant de démarrer sur un partage NFS

Ayant plusieurs machines bootant sur le réseau par PXE, j’avais déjà des serveurs TFTP et NFS fonctionnels pour cet usage (je ne détaillerai pas non plus de ce côté, le web est rempli de documentation là-dessus), il ne me restait plus qu’à m’y mettre pour le Dockstar.

Après quelques tâtonnements (moins que je ne pensais), voici une procédure qui fonctionne au poil.
Je n’ai pas inventé grand chose, quasiment tout vient de la méthode pour SheevaPlug que j’ai linkée au dessus.

Commençons.

Les choses peuvent dépendre d’où vous en êtes dans le bidouillage du Dockstar, mais il suffit que vous ayez un accès SSH à la bestiole pour pouvoir commencer.

Nous allons débuter par l’installation d’un uBoot correct.

Installer un bon uBoot

Cette étape est facultative si vous avez déjà installé un uBoot alternatif pour pouvoir booter sur USB, mais cet uBoot-là est normalement meilleur.
(et c’est réversible)

Suivez les explications claires et détaillées de Jeff Doozan.

Créer l’arborescence d’un système Plugbox sur le serveur NFS

J’ai choisi d’utiliser Plugbox pour une raison simple : c’est une Arch Linux pour plug-computers, et compilée pour le CPU des SheevaPlug/Dockstar :D

Sur votre serveur, placez-vous donc dans un répertoire vide partagé par NFS, et exécutez les commandes suivantes en root :

wget http://plugapps.com/os/PlugboxLinux-1.0.1.tar.gz
wget http://sheeva.with-linux.com/sheeva/2.6.33/sheeva-2.6.33-Modules.tar.gz
tar -xzvf PlugboxLinux-1.0.1.tar.gz # This will take a long time
wget -O boot/uImage http://sheeva.with-linux.com/sheeva/2.6.33/sheeva-2.6.33-uImage
tar -xzvf sheeva-2.6.33-Modules.tar.gz
rm PlugboxLinux-1.0.1.tar.gz
rm sheeva-2.6.33-Modules.tar.gz

Elles sont issues du guide d’installation de Plugbox, disponible ici.
Vous obtiendrez un répertoire contenant l’arborescence complète de votre système Plugbox.
Notez précisément le chemin local complet vers celui-ci.

Placer l’image du kernel sur le serveur TFTP

Cette image est le fichier /boot/uImage du système que vous venez de créer.
Copiez-la dans le répertoire partagé par votre serveur TFTP.

Configurer uBoot soigneusement

La configuration de uBoot se fait grâce à l’utilitaire blparam, que l’on peut se procurer ici sous forme d’un binaire précompilé et exécutable directement depuis un système Pogoplug (celui d’origine sur le Dockstar), Debian ou Plugbox.

Ce binaire est téléchargeable à cette adresse : http://plugapps.com/os/pogoplug/uboot/blparam

Exécutez-le depuis votre Dockstar (dans le répertoire /tmp pour ne pas avoir à écrire sur la NAND, et n’oubliez pas le petit chmod +x qui va bien), vous allez obtenir la liste des paramètres actuels de votre Dockstar.

Par contre, il peut aussi servir à modifier ces paramètres : pour cela il faut l’exécuter de cette manière :

#./blparam 'paramètre=valeur'

On peut ainsi modifier les paramètres prédéfinis, mais également en rajouter et même en supprimer (en assignant une valeur nulle au paramètre).

Voici les paramètres à rajouter/modifier :

bootcmd_net=tftpboot 0x2000000 $(image_name);setenv bootargs $(console) $(bootargs_root2) nfsroot=$(serverip):$(rootpath2) ip=$(ipaddr):$(serverip)$(bootargs_end) $(mvNetConfig) $(mvPhoneConfig); bootm 0x2000000;
bootcmd3=setenv bootcmd run bootcmd2; saveenv; run bootcmd_net
image_name=<nom que vous avez donné à l'image kernel dans votre serveur TFTP>
bootargs_root2=root=/dev/nfs rw
serverip=<IP de votre serveur NFS/TFTP>
rootpath2=<chemin local complet jusqu'à votre système de fichiers Plugbox sur le serveur NFS : /var/blabla/... ou autre>
ipaddr=<IP que vous voulez donner à votre Dockstar>
bootargs_end=:::DB88FXX81:eth0:none
mvNetConfig=mv_net_config=(<adresse MAC du Dockstar, chaque valeur séparée par des : >,0:1:2:3),mtu=1500
mvPhoneConfig=mv_phone_config=dev0:fxs,dev1:fxs
arcNumber=2097
mainlineLinux=yes

Passez-les un à un via blparam.

Pour référence, voici la liste complète des paramètres du mien : http://ledek.free.fr/dl/blparam

(si vous êtes observateur, vous remarquerez que mon serveur TFTP et mon serveur NFS sont sur la même machine ; si les vôtres sont sur des machines différentes, il faudra séparer serverip en 2 paramètres distincts – pas difficile)

Enfin, nous allons passer à la dernière valeur, la plus importante : bootcmd.

Que j’explique un peu : dans les paramètres, j’ai fait en sorte de ne rien toucher d’autre, ce qui fait que pour l’instant, même avec toutes ces modifications, le Dockstar fonctionnera exactement comme avant.
Tout dépendra de ce que vous donnerez comme valeur à bootcmd.

Commencez par fixer :

bootcmd=run bootcmd3

Puis redémarrez.
Le Dockstar tentera de booter via TFTP/NFS, et si tout va bien vous pourrez vous logger sur votre nouveau système.

Mais quoi qu’il arrive, le boot suivant se fera sur la NAND, vous arriverez sur Pogoplug.
J’ai fait cela pour une raison très simple : si vous vous êtes trompé dans votre configuration et que le boot réseau échoue, cela va vous permettre de la corriger. (rebootez manuellement le Dockstar afin de revenir sur Pogoplug)
Si cela n’avait pas été le cas, il aurait été impossible de récupérer le Dockstar sans câble série.

Donc, si le boot réseau s’est bien déroulé la première fois, vous pouvez maintenant fixer définitivement le boot réseau :

bootcmd=run bootcmd_net

Désormais, le Dockstar bootera systématiquement sur le réseau avec les paramètres que vous avez fixés.

Inutile de préciser que toute cette étape est très sensible pour la santé de votre matériel, vérifiez à 2,3,4 fois que vous n’avez pas fait d’erreur.
Essayez également de comprendre ce que vous faites, une coquille de ma part est toujours possible, même si je me corrige.
Je ne pourrais être tenu responsable, blablabla… :D

Et maintenant,

Enjoy ;)

Quelques liens utiles :
Le topic sur HFR, les fous du Dockstar y sont rassemblés
:o
Les photos de mon Dockstar.
Installer Debian pour Dockstar sur clé USB, méthode de Jeff Doozan.