Гони микроядро в дверь, оно лезет в окно
Dec. 15th, 2006 11:15 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
По наводке
lqp почитал дискуссию в lkml которая привела к идее что через год бинарные драйвера перестанут грузиться в ядро.
Больше всего меня в этом заинтересовали не копирайтные соображения или расширительная трактовка понятия derived works, а то техническое решение, с которого начался весь сырбор.
Greg KH засабмитил патч, который добавляет в ядро userspace driver infrastructure.
Некий интерфейс, который позволяет user-space процессу обрабатывать прерывания и работать с memory-mapped IO. Патч, конечно представляет собой первый блин, который комом, но сама идея интересная. Фактически это возможность для разработчиков всяких редких PCI-карт поставлять драйвера не в виде ядерных модулей, а в виде userspace программ.
Если подумать, то это далеко не первый такой интерфейс в ядре linux.
Есть SCSI generic, есть USB generic (и libusb), есть TUN/TAP сетевые драйвера, есть FUSE.
Чем дальше, тем больше возникает ситуаций, когда относительно редко используемая железяка или какая другая функциональность (вроде специфических файловых систем или VPN, или виртуальных сетей во всяких эмуляторах) вместо добавления специального модуля в ядро, реализуется пользовательским процессом. Вот был в 2.4.x модуль scanner.o для поддержки USB-сканеров, да сплыл. libusb обходимся.
C NTFS многие работают через FUSE, да и с SMB тоже, несмотря на все усилия разработчиков cifs.
Похоже, что архитектура микроядра от которой Линус в своё время отказался, не мытьем так катаньем пробивается в Linux.
Что характерно, это позволяет писать драйвера не OS-специфик. Например, libusb имеет один и тот же интерфейс в Linux, FreeBSD и Solaris 10.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Больше всего меня в этом заинтересовали не копирайтные соображения или расширительная трактовка понятия derived works, а то техническое решение, с которого начался весь сырбор.
Greg KH засабмитил патч, который добавляет в ядро userspace driver infrastructure.
Некий интерфейс, который позволяет user-space процессу обрабатывать прерывания и работать с memory-mapped IO. Патч, конечно представляет собой первый блин, который комом, но сама идея интересная. Фактически это возможность для разработчиков всяких редких PCI-карт поставлять драйвера не в виде ядерных модулей, а в виде userspace программ.
Если подумать, то это далеко не первый такой интерфейс в ядре linux.
Есть SCSI generic, есть USB generic (и libusb), есть TUN/TAP сетевые драйвера, есть FUSE.
Чем дальше, тем больше возникает ситуаций, когда относительно редко используемая железяка или какая другая функциональность (вроде специфических файловых систем или VPN, или виртуальных сетей во всяких эмуляторах) вместо добавления специального модуля в ядро, реализуется пользовательским процессом. Вот был в 2.4.x модуль scanner.o для поддержки USB-сканеров, да сплыл. libusb обходимся.
C NTFS многие работают через FUSE, да и с SMB тоже, несмотря на все усилия разработчиков cifs.
Похоже, что архитектура микроядра от которой Линус в своё время отказался, не мытьем так катаньем пробивается в Linux.
Что характерно, это позволяет писать драйвера не OS-специфик. Например, libusb имеет один и тот же интерфейс в Linux, FreeBSD и Solaris 10.