Lorsque l'on souhaite porter Linux sur un nouveau matériel, il est toujours nécessaire d'écrire la description de ce matériel dans le kernel, même si celui-ci n'est qu'une modification mineure d'un matériel déjà supporté. Sur les architectures embarquées comme ARM ou MIPS, Linux n'est en effet pas capable de faire de la détection automatique au démarrage. A l'inverse, sur x86, il existe différentes normes comme ACPI ou Plug'n'Play qui permettent à Linux de s'adapter au hardware automatiquement au démarrage. Cela explique que le dossier arch/x86 semble beaucoup plus propre que arch/arm, qui est rempli de définitions pour s'adapter à chaque carte disponible...
Depuis plusieurs années sous PowerPC, un système appelé Flattened Device Tree est utilisé pour fournir au kernel une description du matériel sur lequel il s'exécute. Celle-ci n'est généralement pas totalement complète et laisse au bootloader la tâche de déterminer la fréquence CPU et la quantité de RAM disponible. Ce device tree se présente soit sous la forme de source (dts) ou sous sa forme compilée (dtb). Le kernel peut accéder au dtb par différents moyens. Le dtb peut être stocké sur une ROM de la carte et c'est le bootloader qui aura la charge de le passer au kernel, ou alors le dtb peut être directement joint à l'image kernel en faisant 'make dtbImage'.
Le système des flattened device tree permet d'accélérer le temps de portage pour un nouveau matériel, notamment en supprimant le code redondant. Jusqu'à présent uniquement disponible sur PowerPC, des implémentations pour ARM et MIPS viennent de voir le jour.
Sur MIPS, le code a été accepté en mainline au mois d'octobre et sera donc utilisable dans la version 2.6.37. Sur ARM, le code est prêt, mais les développeurs, en particulier Grant Likely, se donnent encore un peu de temps avant de de commiter afin de régler les derniers problèmes. Le support des device trees dans U-Boot est opérationnel depuis 2005, époque à laquelle ils ont commencé à être utilisés sur PowerPC.
Côté hardware, seul les plateformes les plus récentes sont supportés pour le moment (OMAP3, mx51...). A noter que QEMU commence lui aussi à supporter les dtb. A terme, l'objectif serait de pouvoir passer un device tree à QEMU et que celui-ci émule le matériel correspondant. Ainsi, le matériel s'adapte au logiciel...