1 juil

Après une première interview avec Soren Jacobsen, release engineer de NetBSD-5.0, c’est maintenant au tour d’Adam Hamsik, haad@, développeur connu entre autres pour son travail considérable de portage de LVM sous NetBSD ainsi que le GSoC 2009 sur ZFS, d’être interviewé par NetBSDfr.

NetBSDfr:  Tout d'abord, merci à toi de prendre le temps de nous répondre.

haad:  Pas de problèmes. J'apprécie cet effort.

NetBSDfr: Pour nos lecteurs qui ne te connaissent pas, peux-tu te présenter rapidement ?

haad: Je m'appelle Adam Hamsik, j'ai 24 ans. Le mois dernier, j'ai fini
mes études d'informatique à l'Université Technique de Slovaquie.
Je suis développeur NetBSD depuis environ 2 ans. Mon premier projet
d'envergure a été l'implémentation de LVM dans NetBSD, qui a été mon
sujet lors du Google Summer of Code l'été dernier.

NetBSDfr: Quelles sont les raisons qui t'ont amené à
choisir NetBSD ? Depuis combien de temps utilises-tu ce système ? 

haad: J'utilise NetBSD depuis environ 4 ans. J'ai commencé avec
NetBSD 2.0. Avant cela, j'avais essayé plusieurs distributions Linux,
ainsi que FreeBSD, mais aucun d'entre eux ne me convenait.
Au cours d'un dîner avec un de mes vieux amis, celui-ci m'a conseillé
NetBSD. J'ai essayé, et j'ai été convaincu que c'était l'OS qu'il me
fallait. Son design est clair, et c'est presque Unix.

NetBSDfr: As-tu une idée du temps que tu consacres au
projet NetBSD chaque jour ? chaque semaine ? chaque mois ?


haad: Ces temps-ci, durant le GSoC 2009, je travaille sur le portage de
ZFS entre 4 et 8 heures par jour, parfois plus.
Comme tous les autres volontaires, je suis souvent interrompu par mes
obligations de la vie réelle, mais j'essaie de faire tout ce que je peux
sur ce projet durant cet été.

NetBSDfr: En plus de la maintenance de ton code issu
des GSoCs, es-tu également impliqué dans d'autres parties du code ?


haad: J'ai produit quelques petits patches pour le système de base et
proplib, mais la majeure partie de mon travail consiste à maintenir le
code issu de mes projets GSoC passé et actuel.
L'année dernière, j'ai effectué le portage de LVM (Logical Volume
Manager) pour NetBSD, et j'ai fait fonctionner les outils LVM Linux avec
notre device-mapper. Pour les lecteurs ne connaissant pas LVM, il s'agit
d'une méthode de management d'espace disque (NDLR: on pourra
utilement se référer à la page Wikipedia: http://fr.wikipedia.org/wiki/LVM).

Pour cette année, dans le cadre du Summer of Code, je travaille sur le
 portage de ZFS vers NetBSD. Je dois dire qu'avec l'aide d'Andrew
Doran, j'ai déjà pas mal progressé. Hier - NDLR: le 20 Juin - j'ai pu
monter un dataset ZFS, créer et travailler avec des zpools et des zvols.

NetBSDfr: Comment es-tu devenu développeur NetBSD
? J'imagine que c'est à la suite du GSoC 2008 ? 

haad: Je suis devenu développeur NetBSD après avoir passé du temps à
chercher un projet auquel contribuer. Bill Stouder-Studenmund m'a alors
proposé de participer au projet NetBSD. Un peu plus tard, j'ai commencé
mon travail sur LVM, qui est devenu par la suite mon projet pour le Google Summer of Code 2008.

Le portage de LVM était commencé avant le Summer of Code 2008 ?

haad: Oui. La plus grosse partie du pilote device-mapper était déjà
écrite avant que ne commence le GSoC. 

NetBSDfr: Combien de temps a pris le portage de LVM
vers NetBSD, de bout en bout ?

haad: Ce n'est toujours pas fini. Mais je dirais environ 1 an et demi.

NetBSDfr: Je suis curieux de savoir comment tu as
appris à connaître le code source du noyau de NetBSD ? Seul ? A l'université ?


haad: Oh, je suis toujours un nouveau venu dans le monde du
développement noyau NetBSD. Je connais les morceaux du noyau sur
lesquels je m'appuie pour mon travail, tels que les pilotes de périphériques, le
device-mapper..
J'ai eu la chance de rencontrer plusieurs développeurs au cours de mon
travail, qui ont eu la patience de me guider à travers le code source du
noyau, et qui m'ont aidé à chaque fois que je rencontrais un problème.
Je dois aussi admettre qu'il y a toujours des parties du noyau dont
j'ignore tout, les appels bas-niveau, les pilotes, l'ACPI, la gestion de la
mémoire... Mais j'ai déjà beaucoup appris en ce qui concerne les
mécanismes de locking, le virtual filesystem et les systèmes de fichiers.

NetBSDfr: Peux-tu nous donner des détails sur le
déroulement du Google Summer of Code ? Comment sont choisis les
étudiants ? Quels sont les critères de succès, s'ils sont prédéfinis à
l'avance ? Est-ce que tous les étudiants ont l'accès en écriture au dépôt CVS du projet ? 

haad: GSoC est un programme lancé par Google, dans lequel Google
paye des étudiants pour travailler sur des projets Open Source comme
NetBSD. Tout étudiant peut postuler pendant la période des inscriptions.
A la fin de cette période, les différentes propositions sont analysées par
les mentors du projet (les personnes qui vont guider les étudiants
pendant toute la durée du GSoC), puis un certain nombre sont retenues.
A l'issue du GSoC, tous les étudiants n'obtiennent pas le "commit bit" (le
droit d'écriture dans le dépôt CVS du projet), mais les étudiants ayant
mené leurs projets à bien l'obtiennent souvent.
Pour plus d'infos sur le Google Summer of Code, on pourra consulter le
site http://code.google.com/soc/ 

NetBSDfr: Quels sont les critères d'évaluation ? La portabilité du code ?

haad: Chaque étudiant qui postule doit définir les objectifs à atteindre
 absolument au cours de son projet, ainsi que les objectifs secondaires
("nice to have"). Les étudiants sont évalués par leurs mentors.
Il n'y a pas vraiment de critères pré-établis. Il faut montrer qu'on a
travaillé sur le sujet, et qu'on a atteint un certain nombre d'objectifs,
qu'on a fait quelque chose. Bien sûr, si, durant l'été, on estime que les
objectifs définis en début de projet sont inatteignables, on peut toujours
les revoir en cours de route. Mais il faut absolument produire quelque
chose :) .

NetBSDfr: Comment se passe ton travail avec Andrew
Doran (ad@), ton mentor sur le projet ZFS ? Revoit-il ton code
régulièrement ? Est-ce toi qui sollicite les revues ?

haad: Nous avons des meetings hebdomadaires par Skype / VoIP, au
cours desquels nous discutons des principaux problèmes. Et dès que j'ai
besoin, je peux discuter avec lui par IRC.
A chaque fois que j'implémente un changement important, je demande à
Andrew de jeter un oeil sur mon code.

NetBSDfr: J'allais te demander un point sur
l'avancement du portage de ZFS, mais tu en as déjà parlé en début
l'interview. Penses-tu être en mesure d'atteindre les objectifs fixés au
début du projet ? 

haad: Honnêtement, je n'en suis pas certain. ZFS est un gros projet, et il
faudra bien plus qu'un GSoC pour avoir un ZFS pleinement fonctionnel
dans NetBSD. Je pense avoir les bases fonctionnelles à la fin du GSoC. Je
ferai de mon mieux pour atteindre nos objectifs :) .

NetBSDfr: En guise de conclusion, peux-tu nous dire
comment tu imagines le futur de NetBSD ?

haad: Le projet NetBSD a fait un bond avec la release de NetBSD 5.0.
Andrew Doran a fait un énorme travail sur cette release. De nombreuses
parties du kernel sont maintenant parfaitement multi-threadées. Sur les
machines multi-cores / multi-CPUs, les performances sont très bonnes
dans de nombreux cas d'utilisation.
Un autre point où nous devons travailler concerne la portabilité vers le
matériel embarqué. De nombreux appareils embarquent NetBSD, et
personne ne le sait!
Nous devons travailler dur pour supporter les systèmes de fichiers pour
mémoire Flash, ainsi que les nombreuses fonctionnalités qu'on trouve
dans ce type de matériel, afin d'attirer de nouveaux développeurs et
porter NetBSD sur de nouveaux matériels.

NetBSDfr: J'ai atteint la fin de ma liste de questions.
Merci mille fois Adam pour ta disponibilité. 

haad: np :) 

Rendez-vous dans quelques semaines pour la prochaine interview. D’ici là, toutes suggestions (questions, personnes à interviewer…) sont les bienvenues.

Edit: Hasard ou coincidence, le jour de la publication de l’interview, Adam a posté un statut sur l’avancement de son travail dans ZFS sur le blog du projet.

1 juil

After a first interview with NetBSD-5.0 release engineer Soren Jacobsen, it is now Adam Hamsik turn to be interviewed by NetBSDfr.
Adam is known for his work on porting LVM tools to NetBSD last year, as well as porting ZFS as part of this year’s Google Summer of Code.

NetBSDfr:  First of all, thanks for taking the time to answer.

haad:  No problem! I think that your effort is great.

NetBSDfr: For the readers who don't know you, can you shortly introduce yourself ?


haad: My name is Adam Hamsik, I'm 24 years old. I have finished
Computer science in Slovak Technical University last month.
I'm NetBSD developer since around 2 years. My first bigger project was
NetBSD LVM implementation on which I have worked during previous
Google Summer of Code.

NetBSDfr: Why did you choose to run NetBSD ? How long have you been using it ?

haad: I've been using NetBSD for around 4 years. I started with NetBSD
 2.0. I tried several linuxes and FreeBSD but any of them truly fit my
needs. During one dinner with my old friend he suggested to me that I
should try to use NetBSD, because it is pretty good operating system. I
 tried to use it and found that it is best os for what I need. It is cleanly
designed and it is almost Unix.

NetBSDfr: Do you have an idea of the time you spend working on the NetBSD project
daily, weekly, monthly ?

haad: These days during GSOC 2009, I'm working on ZFS port project
for 4-8 hours per day, sometimes even more. As any other volunteer
developer I'm often interrupted with real world thinks, but I'm trying to
do as much as I can during this Summer.

NetBSDfr: Your work for the project is mainly in
maintaining your former GSoC work, or are you involved on other parts
of the code ?

haad: I did several smaller patches to base system, proplib, but main
part of my work is my former  and current GSOC work.
Last year I did LVM port for NetBSD and get linux LVM tools working with
our device-mapper driver.  For those readers who do not know what is
LVM, LVM is Logical Volume Manager which allows to manage disk
space in a pretty simple way.
This year Summer of Code I'm working on NetBSD ZFS port and I have
to say that with great help of Andrew Doran we already did pretty good
job. Yesterday - Note: the 20th of June, 2009 - I was able to mount (only
mount call is supported;) ZFS dataset, create/manage zpools and zvols.

NetBSDfr: How did you become a NetBSD developer ? following GSoC I assume ? 

haad: I became a developer after some time where I tried to find some
project for me. I was asked by Bill Stouder-Studenmund if I want to
become a developer. Later I started my work on LVM port which later
became my GSOC project for 2008.

 You started LVM port before GSoC 2008 ?

haad: I had some big part of device-mapper driver written before GSOC
started.

NetBSDfr: How long did it take to port LVM to NetBSD, overall ? 

haad: It is still not finished but around 1.5 year.

NetBSDfr: I'm wondering how you learn about NetBSD
internals ? On your own ? At school ?

haad: I have to say that I'm still NetBSD internals newbie :)  I know parts
 of kernel on which I was working e.g. device-drivers, device-mapper.
During my work I met  several great developers with enough patience
to guide me through kernel internals and help me with my problems. I
learnt the rest on my own :) . I have to say that  there are still places in
kernel about which I do not know anything e.g. low level stuff, real
device-drivers, acpi, uvm etc.. but I already learnt pretty much about
locking, vfs and filesystems.

NetBSDfr: Can you give more details about the Google
Summer of Code ? How are students nominated ? What are the success
criteria, if any ? Do all students get committer access ?


haad: GSOC is program managed by Google where Google pays
students to work on Open Source projects like NetBSD. Anyone who is a
student can write application and submit it during application submit
timeline. Applications are later reviewed by NetBSD mentors (people
who guide students through whole GSoC on project side) and defined
number of project applications are chosen by some criteria.
Not every student get commit access but many of our successful
students over past few year got them. GSoC is better described at
http://code.google.com/soc/

NetBSDfr: What are the evaluation criterion ? Usability?
 Portability of the code ?

haad: Every student should define their GSoC application must have,
nice to have things. Students are evaluated by their mentors.
You need  to show your mentor that you are working on your project
and get at least something done. If you find during Summer that your
deliverables are to huge, you can scale them down, but you must work
on it :)  There are no exact criteria for project evaluation.

NetBSDfr: How are you working with ad@, your mentor
 on the ZFS port project? Is he reviewing your code regurlarly ? Are you
requesting the reviews ?

haad: We have meetings once a week on Skype/VOIP where we discuss
any big issues. During the week I can regularly talk with him on irc.
When I do some bigger change, I ask Andrew for a review.

NetBSDfr: I was about to ask for a status on ZFS. You
gave part of the answer earlier in this interview. Do you think you'll
reach the goals you've set for ZFS in NetBSD by the end of this year's
GSoC ?

haad: I have to say that I'm not sure :)  still. ZFS is huge it will take
much more than GSoC to get it working but I think that we can get basic
part of ZFS working at the end of GSoC. I will do my best to reach our
goals :) 

NetBSDfr: As a conclusion, can you tell us how you
imagine the future of NetBSD?

haad: I think that we did huge step with NetBSD 5.0. Andrew Doran did
awesome job on 5.0. Many parts of NetBSD kernel are multi-thread safe
these days. On multicore/SMP machines we have very good
performance in many types of system workload.
There is also another part of NetBSD and it it is portabiliy to embedded
devices, there are so many small devices which are running NetBSD
and nobody knows it. We need to work hard to get Flash filesystem and
many other embedded device stuff done to attract new developers to
work and port NetBSD to new machines.

NetBSDfr: Well, I think I've run out of questions. Thanks
a million for your time Adam

haad: np :)

Rendez-vous in a few weeks for the next interview. In the meantime, any idea of developer to interview, or questions you’d like to ask, are more than welcome.

Edit: Is it a coincidence ? The day this interview is published, Adam posted a status of ZFS port on the NetBSD blog.

30 juin

Décidément, c’est la saison… Hier soir, 3 nouvelles alertes de sécurité ont été publiées.

2009-05: Attaque contre SSH permettant de récupérer du texte en clair.
Un des algorithmes de cryptographie utilisé dans le protocole SSH permet à un attaquant de récupérer 32 bits de données texte clair, à distance. Ceci peut être fait en émettant des paquets spécialement constitués à cette fin.
SSH (pkgsrc) antérieur à 5.2 est vulnérable, de même que toutes les versions datées d’avant le 30 Juin 2009 (8 Juin 2009 pour -current).

2009-06: Potentiels buffers overflow dans le code de ntp (Network Time Protocol).
Toutes les branches datant d’avant le 27 Mai 2009 sont vulnérables. -current daté d’avant le 21 Mai est également vulnérable.

2009-07: Buffer overflow dans le jeu « hack» .
Hack est un jeu qui est installé avec le bit setgid positionné sur le groupe « games» , afin de pouvoir accéder à des données partagées. Une erreur dans la gestion des buffers permet l’exécution de code arbitraire avec les droits du groupe « games» , code qui peut alors être utilisé pour attaquer d’autres joueurs membres du groupe « games» .

Si votre système est vulnérable, n’hésitez pas à consulter le détail des SA, ils contiennent les instructions permettant de corriger les failles.

25 juin
Alertes de sécurité

 Auteur : GuiGui2

Cette semaine, ce sont pas moins de 4 alertes de sécurité qui ont été publiées.
2009-001: Attaque en déni de service d’un firewall pf.

Lorsqu’un firewall pf qui utilise les mots-clés nat ou rdr reçoit un paquet spécialement constitué, un pointeur mal désalloué cause un kernel panic, et par conséquent un arrêt du système. NetBSD-current avant le 14 Avril 2009 est vulnérable. Toutefois, NetBSD-5.0 embarque déjà la correction.

2009-002: Multiple dénis de services et problèmes d’éxécution de code arbitraire dans tcpdump.

Le code de tcpdump de NetBSD-4.0 comporte plusieurs erreurs permettant à un attaquant de suspendre ou d’arrêter le système en utilisant des paquets spécialement forgés. NetBSD 4.0.1 et 4.1 contiendront un fix. NetBSD-current avant le 20 Juillet 2007 est vulnérable.

2009-003: proplib crashe à la lecture d’un flux XML malformé

La librairie proplib peut crasher si un flux d’entrée mal formatté lui est présenté. Le crash apparaît durant la transformation du texte XML en liste binaire. Ce bug peut conduire à une panique du système, car de nombreux drivers utilisent proplib comme moyen de communication. -Current d’avant le 30 Mars 2009, ainsi que -4.X sont affectés.

2009-004: Faiblesse dans l’algorithme de changement de password d’OpenPAM.

Une faiblesse de vérification dans le module pam_unix permet à un attaquant identifié connaissant le mot de passe root courant de changer ce mot de passe. Toutes les versions de NetBSD sont vulnérable (avant le 14 June 2009 pour -current).

Si votre système est concerné, n’hésitez pas à consulter le détail des SA, les fix y sont mentionnés.

23 juin

Montage générique de systèmes de fichiers

Chaque système de fichiers utilise son propre protocole de montage.
Ces protocoles sont définis par la structure « struct <fs>_args»  qui contient des informations spécifiques au système de fichiers.
Il est donc nécessaire de les traiter séparément, ce qui implique de devoir ajouter du code spécifique dans chaque programme souhaitant les utiliser.

Le but de ce projet est d’uniformiser le traitement des différents systèmes de fichiers en remplaçant ces structures par un protocole générique. Ceci nous permettra de monter un périphérique sans se soucier du système de fichiers sous-jacent.

Livrables

Obligatoires :

  • Commande mount_generic
  • Patch pour les systèmes de fichiers présents dans l’arbre des sources
  • Patch d’ajout d’une nouvelle opération vfs (vfs_probe)

Optionnel :

  • Pages de manuel à jour

Statut

Un premier prototype a été écrit : il contient un patch permettant d’adapter certains systèmes de fichiers existants mais aussi des applications de test.
Il a été testé grâce à rump, qui permet de tester de la même façon que l’on testerait un programme en espace utilisateur, ce qui évite les recompilations de noyaux et permet l’utilisation de gdb lors d’un crash de l’application.
Les applications de test sont en fait la conversion de fs-utils afin d’utiliser les appels systèmes de rump au lieu de la bibliothèque ukfs.
J’ai également écrit une nouvelle bibliothèque permettant de monter des périphériques en utilisant la bibliothèque de propriétés (proplib(3)). Celle-ci pourra servir de base à l’écriture de la commande mount_generic.

L’ensemble du code est disponible ici.

Travail restant

  • Demander des commentaires sur tech-kern
  • Adapter les systèmes de fichiers restants
  • Compléter mount_generic

Pour tester

Compiler rump afin de prendre en compte les changements :

# cd /usr/src/sys
# patch < fsmounting.patch
# cd rump
# make && make install

Compiler fs-utils :

# cd fsu_rsprop/lib
# make includes
# cd ..
# make && make install

Exemples

Utilisation

$ fsu_ls -o ro -w ffs.xml ~/ffs.img
Trying ffs: probing success, mount succeed
CVS             Makefile.rump   TODO            include         net
Makefile        README.dirs     fs              librump

$ cat ffs.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>fspec</key>
        <string>/home/stacktic/ffs.img</string>
</dict>
</plist>

$ fsu_cat -f ffs.xml Makefile
Trying ffs: probing success, mount succeed
#       $NetBSD: Makefile,v 1.4 2008/11/17 10:21:44 pooka Exp $
#

SUBDIR= include librump fs net

.include <bsd.subdir.mk>

$ fsu_ls -o ro ~/i386cd.iso
Trying ffs: probing failed (22)
Trying cd9660: probing success, mount succeed
bin             dev             lib             mnt2            stand           sysinstmsgs.es  targetroot
boot            etc             libexec         netbsd          sysinst         sysinstmsgs.fr  tmp
boot.cfg        i386            mnt             sbin            sysinstmsgs.de  sysinstmsgs.pl  usr

Utilisation d’options spécifiques

$ fsu_ls ~/msdos.img
Trying ffs: probing failed (22)
Trying cd9660: probing failed (22)
Trying msdos: probing succeeded, mount succeeded
CVS             Makefile.rump   TODO            include         net
Makefile        README.dirs     fs              librump

$ fsu_ls -s shortname,uid=stacktic,gid=users ~/msdos.img -l
Adding: shortname = true
Adding: uid = 1000
Adding: gid = 100
Trying ffs: probing failed (22)
Trying cd9660: probing failed (22)
Trying msdos: probing succeeded, mount succeeded
total 288
d---------  1 stacktic  users  16384 Jun 12 11:30 cvs
d---------  1 stacktic  users  16384 Jun 12 11:30 fs
d---------  1 stacktic  users  16384 Jun 12 11:30 include
d---------  1 stacktic  users  16384 Jun 12 11:30 librump
----------  1 stacktic  users    118 Jun 12 11:30 makefile
----------  1 stacktic  users   2377 Jun 12 11:30 makefi~1.rum
d---------  1 stacktic  users  16384 Jun 12 11:30 net
----------  1 stacktic  users   1525 Jun 12 11:30 readme~1.dir
----------  1 stacktic  users    530 Jun 12 11:30 todo

Liens

Pseudo-traduction du post sur blog.netbsd.org.

21 juin
Projet GSoC : xmltools

 Auteur : Gardel

L’une des grandes forces des systèmes Unix est indéniablement leurs petits programmes de traitement de texte que l’on utilise en ligne de commande (grep, sed, awk, sort, …). Ces outils simples et efficaces, qui sont à la base de la philosophie Unix « un programme = une tâche », sont depuis leur naissance et encore aujourd’hui abondamment utilisés par les administrateurs de systèmes Unix. Combinés avec des redirecteurs de flux ou des scripts, ces outils permettent de réaliser des traitements complexes et sophistiqués sur du texte brut.

Depuis son apparition il y a quelques années, le langage de balisage XML est de plus en plus utilisé pour stocker des données de manière structurée. Nous le retrouvons partout, sous différentes variantes, des classiques pages HTML aux fichiers de configuration, en passant par les représentations externes de proplib(3). La surutilisation de XML a créé une demande d’outils pour les exploiter.

Le projet Google Summer of Code « XML command-line utilities for NetBSD » proposé par NetBSD, et réalisé par Nhat Minh Lê, sous l’encadrement bienveillant de son mentor David Young, vise à créer des outils de traitement de fichiers XML comparables, en termes d’ergonomie et de flexibilité, aux outils de traitement de texte brut Unix traditionnels.

Les livrables du projet seront un petit lot d’utilitaires permettant de traiter des flux de XML :

  • xmlgrep : filtrage par modèle
  • xmlsed : édition par modèle
  • xmlprintf : formatage en texte brut

et peut-être :

  • xmlsort
  • xmljoin

Nhat Minh Lê a commencé son travail sur le cœur du système et sur xmlgrep. Il publie les résultats de ses recherches et de l’avancement de son projet sur un blog (très intéressant). David Young a récemment présenté le projet sur le blog officiel de NetBSD.

Le développement des projets GSoC a commencé il y a un mois et se terminera courant août, en passant par une première évaluation en juillet.

« Précèdent