Eudyptula Challenge : démarrage rapide d’un noyau Linux

Vincent Bernat

Le chal­lenge Eu­dyp­tula est une sé­rie d’exer­cices de pro­gram­ma­tion pour le noyau Li­nux. Il com­mence avec le très ba­sique mo­dule « Hello world » puis pro­gresse en com­plexité jusqu’à faire pous­ser des mo­di­fi­ca­tions dans l’arbre du noyau Linux.

Une des pre­mières tâches de ce chal­lenge est de com­pi­ler puis dé­mar­rer son propre noyau. eudyptula-boot est un script au­to­nome per­met­tant de dé­mar­rer une image noyau jusqu’à ob­te­nir un shell. Il est li­vré avec les fonc­tion­na­li­tés suivantes :

  • Il per­met de boo­ter qua­si­ment n’im­porte quel noyau Li­nux, du noyau fourni par votre dis­tri­bu­tion fa­vo­rite jusqu’au noyau per­son­na­lisé1 pour tra­vailler sur une fonc­tion­na­lité quelconque.

  • Il uti­lise le sys­tème de fi­chiers de l’hôte comme ra­cine pour le sys­tème in­vité. Au­cune image disque n’est donc né­ces­saire. Ces der­nières prennent beau­coup de place, doivent être main­te­nues à jour, se re­trouvent en­com­brées au fil du temps et les ou­tils dont vous avez be­soin ne sont ja­mais ins­tal­lés. Pour évi­ter toute mo­di­fi­ca­tion ac­ci­den­telle, le sys­tème de fi­chiers est par dé­faut monté en lec­ture seule. S’ils sont dis­po­nibles, OverlayFS ou aufs sont uti­li­sés pour ajou­ter une couche ac­ces­sible en écri­ture. Il est de plus pos­sible d’uti­li­ser n’im­porte quel ré­per­toire comme racine.

  • Le ré­per­toire uti­li­sa­teur est éga­le­ment ac­ces­sible. Il est ainsi simple de par­ta­ger des scripts et des pro­grammes avec le sys­tème hôte.

  • Il dé­marre un sys­tème mi­ni­mal avec le strict né­ces­saire2 pour dé­mar­rer un shell dans de bonnes condi­tions. Le sys­tème est opé­ra­tion­nel en moins de cinq secondes.

Dans la vi­déo ci-des­sous, eudyptula-boot est uti­lisé pour dé­mar­rer le noyau de l’hôte et exé­cu­ter quelques commandes :

Dans la vi­déo sui­vante, nous dé­mar­rons un noyau per­son­na­lisé conte­nant un ap­pel sys­tème sup­plé­men­taire. Il s’agit de la tâche n°15 du chal­lenge Eu­dyp­tula. Un pro­gramme de test per­met de vé­ri­fier le bon fonc­tion­ne­ment de l’ap­pel sys­tème. Vers la fin, la vi­déo contient éga­le­ment une ra­pide dé­mons­tra­tion de gdb.

Bien que ce hack per­mette éga­le­ment de lan­cer des conte­neurs3 avec une iso­la­tion ac­crue, les per­for­mances de 9p sont mal­heu­reu­se­ment peu convain­cantes pour un tel usage.

virtme-ng est un pro­jet si­milaire.