Linux 驱动程序是否依赖于 Linux 内核?

Linux 驱动程序是否依赖于 Linux 内核?

我有 Ubuntu 14.04 LTS。我的外部蓝牙适配器在此版本的 Ubuntu 中无法工作,但在 Ubuntu 12.x 版本中工作得很好。所以我在 Ubuntu 14.04 LTS 中下载并安装了 Ubuntu 12.x 内核。我的外部蓝牙仍然无法工作。内核是否存储 Linux 驱动程序?那么我如何才能找到 Linux 特定硬件的驱动程序?(如外部蓝牙设备)如何解决这个问题?

答案1

您说得对:Linux 内核附带驱动程序(又名modules),如果某些驱动程序无法正常工作,您可以尝试安装或启动(如果有)其他内核。例如,在 14.04LTS、内核 3.19 上,我的 Virtual box 内核模块出现了问题。但使用 14.04LTS 和内核 3.13 时,就没有问题了。但是请注意,如果 Linux 内核不包含您的设备的驱动程序,您可能需要从制造商或开源存储库中找到它。

要尝试不同的内核,首先使用终端中的命令找出您正在使用的内核uname -r。然后重新启动机器,选择Advanced Options for Ubuntu,并选择任何具有不同内核编号(与uname -r命令显示的内核编号不同)且不显示 的选项( recovery mode )

如果您的蓝牙适配器可以在较旧的内核上运行,那么这肯定是驱动程序问题。

要让 Ubuntu 使用您想要的内核启动,首先要记住您从 中选择的项目Advanced Options menu。例如,我希望始终使用 3.13 内核启动,并且我选择使用 启动Ubuntu, with Linux 3.13.0-62-generic

接下来运行此命令:

awk '/menuentry/ && /class/ {count++; print count-1"****"$0 }' /boot/grub/grub.cfg | less

记住您想要的条目旁边的数字。

最后,运行以下命令。将 GRUB_DEFAULT=X 中的 X 替换为您记得的数字

sudo sed -i  's/GRUB_DEFAULT=0/GRUB_DEFAULT=X/g' /etc/default/grub; sudo update-grub

现在,当您重新启动时,您应该使用较旧的、可以正常工作的内核进行启动。

相关内容