вторник, 15 октября 2013 г.

А где Uniform Driver Interface?

Когда-то я уже писал о драйверах для 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