jeudi 4 juillet 2013

Mumuse avec le kernel...

Je viens d'avoir le + gros problème de kernel que j'ai jamais eu jusqu'ici avec linux, et pourtant ça fait un bout de temps que j'en fais ! Heureusement aucune conséquence grave, juste impossible d'installer le 3.10 pendant très longtemps.
La cause : une nouvelle option dans "executable formats", "support for scripts starting by #!". Comme y a énormément d'options dans le kernel, je lis en diagonale, celle là je l'ai activée en module pour la tester et la configurer éventuellement + tard. Pas de chance, on est obligé de l'intégrer au kernel en fait, faut répondre yes. Je ne sais pas pourquoi mais maintenant le kernel intercepte les executions de scripts et si cette option n'a pas été intégrée, et bin tout script est impossible à executer, du coup le boot ne va pas loin, ça plante généralement à "Failed to run /init" dans le initrd...

En tous cas ça m'a permis de faire le tour des options de débugage, et le moins qu'on puisse dire c'et que la console est inutilisable dans ce cas là maintenant. On se retrouve dans un pseudo shell fourni par busybox, mais le clavier est désactivé. Je me suis dit que c'était peut-être parce que c'était un usb, mais non, même en ps2 le clavier reste désactivé, donc totalement inutile. Le pire c'est que les messages défilent tellement vite qu'on ne voit rien, et on ne peut même pas remonter. C'est là que ça se voit que les dévs du kernel n'utilisent plus la console, probablement des machines virtuelles maintenant...
Bon. 2ème option : netconsole, ça permet d'envoyer les logs kernel sur le réseau, ça a l'air bien surtout que j'ai plus de port série sur ce pc, donc ça rend bien service... sauf que pas de bol : le machin s'initialise juste avant le crash, et de toutes façons il semblerait que ma carte réseau a besoin d'un firmware pour réussir à prendre la ligne, du coup j'ai jamais réussi à l'utiliser vu que le firmware est insaccessible. Ca doit pas être facile de la faire booter en nfs celle là... il parait qu'il y a moyen d'inclure le firmware directement dans le vmlinuz, mais ça doit être assez prise de tête...

Bon j'ai laissé passer un peu de temps et ce soir j'ai décidé de tester quand même l'option de la machine virtuelle pour voir. J'ai pris une machine virtuelle virtualbox que je m'étais fait avec une ubuntu 13.04 en 64 bits. Je l'ai montée en utilisant qemu-nbd (j'ai trouvé une page web très utile qui explique qu'il faut utiliser ça pour monter les images vdi et ça marche super en effet). Après installation de mon kernel et de ses modules sur l'image, édition du grub.cfg, et boot de la machine virtuelle...
Et bin ça marche remarquablement bien en fait ! Bon le kernel a planté, évidemment, à ce niveau là j'avais toujours pas pigé qu'il fallait que cette foutue option soit intégrée. Mais par contre c'est à des années lumières de la console qu'on a normalement. Ce coup là la clavier marche, et on peut remonter en + jusqu'à la toute 1ère ligne émise par le kernel à l'écran ! La classe totale quoi ! Après ça j'ai fini par trouver l'info comme quoi il fallait intégrer cette option, donc fin du problème, mais conclusion c'est vraiment pas mal d'utiliser une machine virtuelle pour tester un kernel, les machines modernes n'aiment pas les reboots à répétition et c'est vraiment beaucoup + pratique. En + le montage de l'image vdi est rapide, donc ça peut se tester rapidement sans problème, et ça simplifie bien la vie !

Assez excellent en fait !