我的理解是,内核了解如何通过特定的设备树与系统中的不同硬件进行通信。
为什么我可以下载一个版本的 Ubuntu,并且可以将其安装在硬件可能不同的任何系统上?
BeagleBone 嵌入式板也是如此。有一个默认的 Debian 映像,可以闪存到具有不同外设的任何不同类型的 BeagleBone 板。当同一个图像适用于所有人时,它如何知道要使用哪个设备树/设备树覆盖?
答案1
设备驱动程序(即内核中与硬件直接交互的部分)可以编译为内核模块。这些是单独的文件,可以根据系统中的硬件情况,根据需要由内核加载或卸载。
主流 Linux 发行版附带的通用内核往往与编译为模块的每个可以想象的硬件的所有驱动程序一起提供。因此,当内核在给定系统上启动时,它会探测并检测系统上有哪些硬件,然后指示用户空间程序udev
加载特定硬件所需的任何内核模块。