Его официальный сайт исчез в августе, но был восстановлен в 2019 году. Между тем, исходный код остается доступным на GitHub . [1]
Функции
Longene стремится добавить все механизмы ядра Windows, включая системные вызовы, реестр Windows , модель драйверов Windows , отложенный вызов процедур и другие, в ядро Linux, чтобы сформировать новое ядро. Новое ядро позволит приложениям и драйверам устройств Linux и Windows работать без виртуализации или эмуляции. Чтобы предотвратить раздувание, если функция доступна как в ядре ReactOS, так и в ядре Linux, используется реализация Linux. Функции реализуются с использованием загружаемых модулей ядра Linux, поэтому их можно легко загружать и выгружать.
Longene имеет два набора системных вызовов и соответствующих им таблиц: набор системных вызовов Windows и набор системных вызовов Linux. Приложения Windows вызывают таблицу системных вызовов через программное прерывание "int 0x2e". Приложения Linux вызывают таблицу системных вызовов через "int 0x80".
Проект Longene не разрабатывает пользовательские библиотеки Windows и Linux. Эти библиотеки предлагаются другими проектами, такими как Wine , ReactOS , GNU и NDISwrapper . [2]
Разработка
В сентябре 2005 года проект Longene получил спонсорскую поддержку от Insigma Technology (浙大网新), китайской консалтинговой корпорации в области информационных технологий. Руководитель проекта Декао Мао (毛德操) предложил идею и маршрут Longene. Он написал серию статей о рынке, правах интеллектуальной собственности и методах, чтобы объяснить, почему людям нужен проект и как реализовать Longene. Статьи, написанные Мао, затем были объединены в белую книгу проекта.
Согласно техническому документу, для внедрения Longene необходимо добавить несколько частей в ядро Linux:
Фреймворк, который соответствует свойствам и требованиям драйверов устройств Windows (т. е. фреймворк драйверов устройств Windows), так что в ядро можно загрузить несколько модулей драйверов устройств Windows, сохраняя при этом их взаимосвязь и условия работы, как в Windows.
Набор экспортных функций, определяемых интерфейсом экспортных функций ядра Windows (WDK). Для программ драйверов устройств эти функции подобны библиотечным функциям, предоставляемым ядром.
Windows native API. Microsoft не раскрывала свой собственный API, но "Windows NT/2000 Native API Reference" и другие материалы раскрыли эту информацию. Реализацию системного API Windows в ядре Linux можно сравнить с реализацией языка высокого уровня на ассемблере, поскольку внутри ядра используемые функции больше не реализуются внешним API ядра Linux, а реализуются внутренними функциями ядра Linux.
Проект Longene выпускает патчи для ядра Linux для достижения своей цели. Разработчики проекта ожидают, что эти патчи в конечном итоге сольются с основным деревом ядра Linux. [ необходима цитата ] Те, кто программирует на платформе Windows, затем смогут разрабатывать приложения и драйверы устройств для платформы Linux или переносить свои продукты на платформу Linux с низкой стоимостью.
Стратегия развития
Longene использует Wine в качестве основы для реализации Windows API. Проект повторно реализует модули Wine для использования в качестве части совместного ядра. Longene воздерживается от использования модулей Wine, которые недостаточно реализованы для проекта. Версии Longene выпускаются, когда несколько модулей Wine успешно реализованы в ядре. Новая стабильная версия затем будет использоваться в качестве основы для реализации будущих модулей. Windows API, которые не были реализованы Wine, разрабатываются в модули с нуля. Поскольку ядро Longene выполняет работу ядра Windows NT, собственная эмуляция ядра пользовательского пространства Wine (wineserver) не нужна.
Для драйверов устройств Longene импортирует NDISwrapper в ядро. В NDISwrapper вносятся изменения для отсутствующей функциональности модели драйверов Windows с использованием кода ReactOS в качестве ссылки. Реализация комплекта драйверов Windows основана на коде ReactOS . Она использует комбинацию перенаправления драйверов на ресурсы ядра Linux и дополнительные библиотеки, реализующие функции, которые не могут быть реализованы в Linux.
История версий
Более ранняя версия, unifiedkernel-2.6.13, [3] выпущена 15 февраля 2006 года. Эта версия актуализировала механизм системных вызовов Windows.
цвет
значение
красный
Релиз больше не поддерживается
желтый
Выпуск, поддерживается
зеленый
Текущий выпуск
синий
Будущий релиз
Версия
Дата выпуска
Информация о выпуске
0.1.0
30 апреля 2006 г.
kernel-win32 портировано
Механизм системных вызовов Windows, основанный на «int 2e»
0.2.0
1 декабря 2006 г.
Реализовано создание процессов/потоков Windows
частичная реализация механизма Windows APC
0.2.1
4 февраля 2008 г.
Управление процессами/потоками Windows
управление виртуальной памятью
синхронизация
управление объектами
встроенная функция загрузки EXE
0.2.2
31 октября 2008 г.
Механизм токенов
Программа установки графического интерфейса
0.2.2-1
17 декабря 2008 г.
исправления ошибок
0.2.3
12 февраля 2009 г.
Механизм реестра Windows, перенесенный из Wine
0.2.4
22 мая 2009 г.
Управление файловой системой перенесено из Wine
частичная реализация API управления реестром
предоставлены бинарные пакеты для популярных дистрибутивов
0.2.4.1
31 августа 2009 г.
на основе ядра Linux 2.6.30
поддержка новых файловых систем (ext4 и другие)
0.3
31 мая 2010 г.
переместить все функции wineserver в пространство ядра и избавиться от wineserver
0.3.1
26 февраля 2011 г.
поддержка пользователей без прав root
поддержка приложений китайский путь
0.3.2
8 июня 2011 г.
поддержка wineconsole, консольные приложения Windows, такие как cmd.exe, могут работать следующим образом: wineconsole cmd.exe
Улучшить способ создания процесса, чтобы собственные приложения Windows и встроенные приложения Wine могли создаваться друг другом.
1.0-rc1
31 декабря 2013 г.
полная модификация фреймворка, Longene больше не нужен патч ядра
Longene поддержал SMP
более удобная установка, лучшая совместимость, лучшая стабильность
1.0-rc2
16 января 2014 г.
обновить Wine до версии 1.7.10
решить проблему обычных пользователей после перезагрузки
поддержка приложений Windows, работающих на машине ARM
Текущее и будущее развитие
Разработчики в настоящее время работают над Longene 2.0, который будет поддерживать приложения Windows, работающие на оборудовании с архитектурой, отличной от x86, таком как ARM и Loongson . Кроме того, разработчики работают над поддержкой AMD64 и портированием кода NDISWrapper в проект.
Longene основан на ядре Linux. Он реализует свои функции в загружаемых модулях ядра Linux (LKM). В отличие от ReactOS, реализующего функции с нуля, Longene использует обильный код и документацию ядра Linux для создания своих функций. Вот основные подходы к реализации механизмов Windows в Longene:
Интерфейс системных вызовов – Некоторые из них могут быть взяты из соответствующих системных вызовов Linux или частично повторно использовать код из соответствующих системных вызовов Linux. Остальные, не имеющие аналога в Linux, должны использовать низкоуровневые функции ядра Linux в своей реализации.
Структура драйвера устройства – регистр службы прерывания драйвера устройства использует механизм прерывания Linux, драйверы устройств воспринимают работающее ядро Windows, которое сопоставляется с работающим ниже ядром Linux. Запросы DPC драйвера устройства транслируются в функции Linux-bh.
Собственные системные файлы Microsoft Windows, защищенные авторским правом Microsoft — категория модулей .sys, используемых для обычных внешних устройств, таких как диск, USB, графические устройства, сетевое оборудование и т. д., для которых в ядре Linux есть соответствующие функции. Для управления этими устройствами требуется только построить мост, и нет необходимости создавать модули .sys. Для остальных модулей .sys, не имеющих соответствующих объектов в ядре Linux, требуется эмуляция.
Windows DDK – Большинство функций интерфейса драйвера устройства и структур данных имеют аналоги в ядре Linux. Некоторые функции не имеют точного эквивалента в ядре Linux, и необходимо создать оболочку с использованием возможностей ядра Linux. На практике некоторые вызовы ресурсов и ссылки можно перенаправить или адаптировать к аналогам ядра Linux, а остальные необходимо реализовать с нуля.
ReactOS — это клон MS Windows, написанный с нуля. Longene использует код ReactOS в качестве справочного материала для реализации некоторых базовых механизмов операционной системы Microsoft Windows. Это включает реализацию фреймворка драйверов устройств Windows, NDIS, интерфейса системных вызовов, управления процессами и ресурсами, интерфейса драйверов устройств и т. д.
Wine реализует уровень совместимости, предоставляя альтернативные реализации DLL, которые вызывают программы Windows, и процессы для замены ядра Windows NT. В отличие от Longene, использующего функции микроядра для реализации API Windows в пространстве ядра, Wine использует API макрохостовой ОС для реализации API Windows в пространстве пользователя. Longene предлагает управление процессами Windows, управление потоками, управление объектами и т. д. в ядре; Wine предлагает их с помощью wineserver, работающего в пространстве пользователя. Longene зависит от Wine для пользовательских библиотек (файлов .dll). Большинство DLL Wine может использоваться Longene напрямую. Код Wine (например, таблица реестра Windows) может быть использован для реализации некоторых функций. В переходном состоянии Longene использует Wine для предоставления тех функций, которые еще не были завершены.
Ядро-Win32
Kernel-Win32 — проект, направленный на перемещение некоторых функций из Wineserver в ядро Linux для ускорения Wine. Проект Longene перенес (и частично перереализовал) Kernel-Win32 в Longene для реализации механизма системных вызовов Windows.
NDISWrapper воссоздал часть ядра Windows NT в модуле ядра Linux, что позволило выполнять современные драйверы Windows внутри ядра Linux. NDISWrapper состоит из API NTOSKRNL, базового контроллера WDM и набора оболочек вызовов Windows, таких как Wireless/NDIS/USB/PnP to Linux API. NDISWrapper не ограничивается выполнением только драйверов NDIS; можно использовать и другие драйверы WDM, если только драйвер не вызывает нереализованные функции Windows API. Первым шагом реализации WDM в Longene будет импорт NDISWrapper в Longene. Затем команда проекта Longene реализует свой WDM путем изменения NDISwrapper и добавления функций в NDISWrapper с кодом ReactOS в качестве ссылки.
Для запуска бинарных приложений Windows x86 непосредственно на архитектуре ARM, конечно, нужна эмуляция. QEMU — это эмулятор с открытым исходным кодом в Linux, который может запускать Wine, но результат неприемлемо медленный. QEMU интерпретирует все инструкции x86 в пользовательском пространстве (включая код Wine); только в случае системных вызовов Linux приложение работает на полной скорости. Результат медленный, потому что приложения проводят большую часть времени в эмулируемом пользовательском пространстве и меньше времени в ядре. Но если бы библиотеки Win API DLL, предоставляемые Wine, можно было бы использовать вне QEMU, они бы работали на полной скорости, потому что их можно скомпилировать изначально, и общая скорость работы должна значительно улучшиться. Этот способ объединения Wine и QEMU и помещения функций Wineserver в ядро — это идея Longene 2.0.
Пользователи
Magic Linux – Magic Linux – китайский дистрибутив Linux на основе Red Hat Linux. Версия 2.1 Magic Linux, выпущенная 15 декабря 2008 года, включает в себя основную версию (DVD, с ядром Linux 2.6.25.20), компактную версию (CD, с ядром Linux 2.6.25.20) и версию Longene (CD, с Longene 0.2.2). [5]
Требования к оборудованию
Минимальные требования к оборудованию для запуска:
Процессор IA-32
128 МБ ОЗУ
Жесткий диск IDE или SATA
VGA-совместимая видеокарта
Стандартная (PS/2 или USB) клавиатура
Мышь, совместимая с PS/2, или мышь с последовательным портом, совместимая с Microsoft Mouse
Longene также можно запустить на программном обеспечении, которое эмулирует или виртуализирует вышеуказанное оборудование, например, VMware и VirtualBox .
^ "longene-archive/longene-1.0-rc2" . Гитхаб . Проверено 21 августа 2018 г.
^ Унифицированное ядро Linux 0.2.4.1 «Проект LUK не разрабатывает пользовательские библиотеки Windows и Linux. Эти библиотеки предлагаются проектом Wine (или Microsoft Windows/ReactOS) и проектом Linux».
^ унифицированное ядро-2.6.13
^ "Longene 2.0 будет поддерживать приложения Windows, работающие на машинах с архитектурой, отличной от x86". Архивировано из оригинала 2014-03-03 . Получено 2014-04-09 .
^ Magic Linux 2.5 rc2 发布 Архивировано 20.04.2014 на Wayback Machine