Démarrage des Kernel Recipes Days !
3 jours où on va bouffer des conférences kernels.
Note: On va blinder le hashtag #KR2019 - Si vous voulez pas être floodé, mutez ce hashtag pendant 3 jours. Merci, bisous
Les Kernel Recipes Days peuvent être suivi via le hashtag #KR2019, via le compte @KernelRecipes, via le compte @hupstream (les organisateurs) - et via d'autres intervenants présents en salle également.
@KernelRecipes @hupstream #KR2019 Dans les supports de cette année: ARM, Facebook, VMware, Gandi, ANSSI, etc...
@KernelRecipes @hupstream #KR2019 On commence par une conférence sur ftrace: "Where modifying a running kernel all started" par Steven Rostedt
@KernelRecipes @hupstream #KR2019 Si vous avez la capacité de faire du tracing, vous devriez avoir un /sys/kernel/tracing/
A l'intérieur, vous pouvez faire du tracing dynamique en définissant certains paramètres
@KernelRecipes @hupstream #KR2019 Avec les options gcc -pg -mfentry, En assembler, cela va rajouter "callq <__fentry__>" en tout début de vos fonctions dans le code
@KernelRecipes @hupstream #KR2019 En gros, vous pouvez faire du trampoline de fonction: la fonction "patchée" en live va appeler un ftrace_caller qui va appeler votre fonction de tracing.
@KernelRecipes @hupstream #KR2019 Si on devait résumer: ftrace, c'est la vie.
@KernelRecipes @hupstream #KR2019 Exposition rapide de https://t.co/jh6dxiocYC
@KernelRecipes @hupstream #KR2019 C'est nous où le projecteur devient de plus en plus jaune ? :-/
#KR2019 On passe à BPF chez Facebook (et on a changé de projecteur, il est tout beau)
#KR2019 Les upgrades kernels chez Facebook, c'est une politique de zéro patches privés. Orienté kernek upstream. L'infra tourne principalement sur un Linux 4.16.x et un peu de 4.11 et progressivement à du 5.2
#KR2019 Petit exercice pratique, Alexei nous demande de taper :
$ sudo bpftool prog show |grep name | wc -l
:-)
#KR2019 Chez Facebook, c'est environ 40 programs BPF actifs sur chaque serveur, 100 BPF prog chargé à la demande.
#KR2019 #Facebook Investigation sur un memcpy d'une base de données qui se bloquait pendant 1/4 seconde. Ils ont investigué avec BPF. Ils ont découvert le prob: un sys_read qui prenait 399ms dans un daemon sécurité.
#KR2019 #Facebook A la suite d'un problème BPF entre serveurs dev et serveur production, ils ont mis en place le BTF: "BPF Type Format"
#KR2019 #Hacking Entre la découverte de Meltdown/Spectre et des patchs mergés, il s'est déroulé 3-4 mois.
#KR2019 #Hacking Meltdown/Spectre: Les principaux vendeurs de distributions n'ont pas communiqués entre eux, ce qui a fait un joyeux bordel pour avoir un patch PTI plus rapidement.
#KR2019 #Hacking Panic à bord chez les kernel hackers, plusieurs idées, des patchs/codes pas utiles ou qui ne fonctionnent pas correctement. Cela a duré 10 jours comme cela.
#KR2019 #Hacking Les bonnes solutions:
- Une collaboration étendue
- Pas de compartimentation de l'info
- Toute l'information est requis
- "Upstream first"
#KR2019 #Hacking Les mailing-lists chiffrés: Après une étude sur plusieurs ML chiffrés du marché, tous étaient pas top, ils ont donc décidé d'écrire le leur en python3: https://t.co/vu3qRYqGjw
#KR2019 #Hacking Une solution par rapport au NDA, que chacun protagoniste doit signer (ce qui est impossible pour une communauté):
A/ Formal process: ML chiffré, définitions des contacts, ces contacts adhèrent à une charte MoU, embargo, ajouts d'experts, workflow...
#KR2019 Beorn explique que la -proba- bonne approche est d'interroger les "upstream" s'ils peuvent être intéresser par votre idée de patch avant de se lancer dans le code, sinon on peut avoir des frustrations en bout de piste.
#KR2019 Beorn explique aussi que le code du kernel ne sont pas les saintes écritures; Utiliser les macros si vous n'êtes pas un guru C et lisez l'historique git pour apprendre plus rapidement et plus facilement.