是否可以将驱动程序从 Windows 复制到 Linux?

是否可以将驱动程序从 Windows 复制到 Linux?

我有一个蓝牙适配器,它在我的 Windows 7 (x64) 上运行良好。但在我的 Fedora 24 (x64) 上,它一直向我显示“蓝牙已关闭“即使当我试图打开它时。

我从昨天开始就试图解决这个问题,并且这是没有用的!我已经安装了这些:bluez-hidhcibluez-utilsgnome-Bluetooth他们都不适合我

有任何想法吗?谢谢!

更新:

$ lsusb
...
Bus 001 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd 
$ rfkill list
...
2: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
$ dmesg | grep -i blue
[   12.067177] Bluetooth: Core ver 2.21
[   12.067212] Bluetooth: HCI device and connection manager initialized
[   12.067218] Bluetooth: HCI socket layer initialized
[   12.067221] Bluetooth: L2CAP socket layer initialized
[   12.067232] Bluetooth: SCO socket layer initialized
[   18.619866] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   18.619871] Bluetooth: BNEP filters: protocol multicast
[   18.619876] Bluetooth: BNEP socket layer initialized
$ hciconfig
hci0:   Type: BR/EDR  Bus: USB
    BD Address: AE:2D:22:00:FF:00  ACL MTU: 344:12  SCO MTU: 180:16
    DOWN 
    RX bytes:461 acl:0 sco:0 events:17 errors:0
    TX bytes:296 acl:0 sco:0 commands:17 errors:0
$ uname -a
Linux local.arfed 4.5.5-300.fc24.x86_64 #1 SMP Thu May 19 13:05:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

答案1

回答标题中的问题:是否可以将驱动程序从 Windows 复制到 Linux?

不,不是没有(相当多的)额外工作。

驱动程序挂接到操作系统的内核中,允许它“驱动”某些硬件。

可以理解的是,Linux 内核和 Windows 内核有很大不同(或者它们都被称为“Windows”或“Linux”)。因此,人们不能指望能够简单地从 Windows 获取驱动程序(即使它以源代码形式提供)并将其与 Linux 内核链接,甚至不能在 Linux 系统(或任何系统上)合理干净地编译它这不是它所针对的特定 Windows 版本)。

您甚至无法从表面上相似的操作系统(例如 BSD 系统)获取驱动程序,然后将其导入到另一个 Unix 系统中,而无需进行一些精细的编码。话虽如此,“设备级别”上的代码共享确实在自由 Unix 系统之间时常发生,但并非没有将代码安装到新的内核基础设施中的额外工作。

我确实相信,在某些情况下,人们编写了内核代码来访问驱动程序的反向工程二进制 blob。这显然需要有人坐下来查看二进制驱动程序,弄清楚它在做什么,并编写适当的 Linux 内核代码来挂钩它,所以这仍然不仅仅是一个问题复制驱动程序

相关内容