Когда-то я уже писал о драйверах для Linux, давайте вернёмся к этой теме. Слышали ли вы что-нибудь о создании единого интерфейса драйверов для разных ОС?
Ну или хотя бы что-нибудь подобного? Интересуют меня, в первую очередь,
свободные ОС и, соответственно, открытые драйвера. Для тех, кто
считает, что это даже теоретически нереально, расскажу про Project UDI.
Итак, в начале 1998 года компания Intel инициировала разработку UDI (Uniform Driver Interface).
Цель этой инициативы — проектирование стандартного интерфейса драйверов
устройств для высокопроизводительных серверов. Катализатором для
ускорения этого проекта стал, планировавшийся на 1999 год, выпуск
Itanium'а. А вернее, желание Intel видеть единый драйвер устройств для
всех UNIX'ов, которые планировалось использовать на Itanium'ах.
Проект создания унифицированного интерфейса драйверов поддержали как
компании, выпускающими операционные системы (Compaq/Digital,
Hewlett-Packard, IBM, Santa Cruz Operation и Sun Microsystems), так и
разработчики оборудования (Adaptec, Bit3 и Interphase). Свое одобрение
высказали и некоторые разработчики Linux, но FSF выступил с критикой (что естественно).
Первые результаты работы над UDI были представлены уже в том же году:
В первой публичной демонстрации драйвер работал под управлением ОС SCO UnixWare 2, UnixWare 7 и Hewlett-Packard HP-UX. Это было реализовано путем перекомпиляции идентичного исходного кода. Данный драйвер был также протестирован при работе под Compaq Digital UNIX, IBM AIX и Sun Solaris на широком диапазоне процессоров, включая Intel IA32 (x86), Alpha, PA-RISC, PowerPC и др. Тесты показали совместимость драйвера и с 64- и с 32-разрядными процессорами, поддержку адаптеров SCSI Host Bus Adapters и сетевых интерфейсных плат.
А идея то была не плохая, вот бы её «воскресить», но уже в современных
условиях и для свободных ОС. Проблема вот в чем. Сегодня Linux набрал
уже неплохую базу Open Source драйверов (и эта база, неминуемо, будет
продолжать рости), но линукс это не единственная свободная ОС. Было бы
здорово, если бы существовал какой-то простой механизм портирования этих
драйверов на другие системы. Я понимаю, что когда дело касается
UNIX-подобных систем, то там этот вопрос можно решить в какой-то
степени, но что делать, если архитектура ядра совершенно другая/новая?
И тем не менее, я считаю, что эта идея осуществима. Идеальная ситуация,
которую я вижу — написать некий стандарт единого интерфейса с
обязательным требованием предоставления кода на условиях (L)GPL. При
таком раскладе мы получим целый ряд преимуществ:
— Скомпилировать такой драйвер можно будет практически под любую архитектуру железа и ОС.
— Производителям hardware не придется думать о том, ка бы не отвалилось что-то в новой версии ядра.
— Снимается проблема пользователей наличия драйверов для различных ОС.
— Все это послужит дополнительным стимулом к открытию драйверов и распространению СПО.
Вот такая вот мечта… К сожаление, ничего ближе к вышеописанной идеи, чем «Partner Linux Driver Process» от Novell я не нашел. :-( Так может быть я просто не там и не то ищу?
ps: Более подробную информацию об UDI можно почитать на www.projectudi.org/ и projectudi.sourceforge.net
Опубликовано на open-life.org 19.07.2009