Лонгене
![]() Лонгене 0.2.1 | |
Разработчик | Технология Инсигма |
---|---|
Написано в | С |
Семейство ОС | Linux с Windows дополнениями, подобными |
Рабочее состояние | Неактивно, последнее обновление в 2014 г. |
Исходная модель | Открытый исходный код |
Последний предварительный просмотр | 1.0-rc2 / 16 января 2014 г |
Репозиторий | |
Маркетинговая цель | Персональные компьютеры |
Доступно в | Многоязычный |
Платформы | ИА-32 , x86-64 |
ядра Тип | Монолитный (производный от Linux ) |
Лицензия | GNU GPL v2 |
Официальный сайт |
Longene ( китайский : 龙井 ) — это Linux, на базе ядро операционной системы предназначенное для двоичной совместимости с прикладным программным обеспечением и драйверами устройств, созданными для Microsoft Windows и Linux. Начиная с версии 1.0-rc2, он состоит из модуля ядра Linux , реализующего аспекты ядра Windows, и модифицированного дистрибутива Wine, разработанного для использования преимуществ более собственного интерфейса. Longene написан на языке программирования C и является бесплатным программным обеспечением с открытым исходным кодом . Он лицензируется на условиях GNU General Public License версии 2 (GPLv2).
Хотя по состоянию на 2015 год проект находится на стадии альфа -разработки, многие программы для Windows уже работают хорошо. [ нужна ссылка ]
Его официальный сайт исчез в августе, но был восстановлен в 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 необходимо добавить в ядро Linux несколько частей:
- Платформа, которая соответствует свойствам и требованиям драйверов устройств Windows (т. е. инфраструктуре драйверов устройств Windows), так что в ядро можно загружать несколько модулей драйверов устройств Windows, сохраняя при этом их взаимосвязь и условия работы, как в Windows.
- Набор функций экспорта, определенный интерфейсом функции экспорта ядра Windows (WDK). Для программ драйверов устройств эти функции подобны библиотечным функциям, предоставляемым ядром.
- Собственный API Windows. Microsoft не раскрыла свой собственный API, но эта информация была раскрыта в «Справочнике по собственному API Windows NT/2000» и других материалах. Реализация системного 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 в собственном пользовательском пространстве (винный сервер) не требуется.
Что касается драйверов устройств, Longene импортирует NDISwrapper в ядро. внесены изменения В NDISwrapper для устранения отсутствующих функций модели драйверов Windows с использованием кода ReactOS в качестве ссылки. Реализация комплекта драйверов Windows основана на коде ReactOS . Он использует комбинацию драйверов перенаправления к ресурсам ядра Linux и дополнительных библиотек, реализующих функции, которые невозможно реализовать в Linux.
История версий
[ редактировать ]Более ранняя версия, unifiedkernel-2.6.13, [3] выпущен 15 февраля 2006 г. В этой версии реализован механизм системных вызовов Windows.
цвет | значение |
---|---|
красный | Релиз больше не поддерживается |
желтый | Релиз, поддерживается |
зеленый | Текущая версия |
синий | Будущий выпуск |
Версия | Дата выпуска | Информация о выпуске |
---|---|---|
0.1.0 | 30 апреля 2006 г. |
|
0.2.0 | 1 декабря 2006 г. |
|
0.2.1 | 4 февраля 2008 г. |
|
0.2.2 | 31 октября 2008 г. |
|
0.2.2-1 | 17 декабря 2008 г. |
|
0.2.3 | 12 февраля 2009 г. |
|
0.2.4 | 22 мая 2009 г. |
|
0.2.4.1 | 31 августа 2009 г. |
|
0.3 | 31 мая 2010 г. |
|
0.3.1 | 26 февраля 2011 г. |
|
0.3.2 | 8 июня 2011 г. |
|
1.0-rc1 | 31 декабря 2013 г. |
|
1.0-rc2 | 16 января 2014 г. |
|
2.0 [4] | 2015 |
Текущее и будущее развитие
[ редактировать ]В настоящее время разработчики работают над Longene 2.0, который будет поддерживать приложения Windows, работающие на оборудовании с архитектурой, отличной от x86, например ARM и Loongson . Кроме того, разработчики работают над поддержкой AMD64 и портируют в проект код NDISWrapper.
Еще не реализовано (но планируется):
- QEMU Интеграция кода
- Структура WDM драйверов устройств
- Windows DPC Механизм
- Экспортированные функции ядра, определенные Windows DDK.
Доступные ресурсы с открытым исходным кодом
[ редактировать ]- Ядро Linux
- 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, использующего функции микроядра для реализации Windows API в пространстве ядра, Wine использует API-интерфейс макро-хоста для реализации Windows API в пользовательском пространстве. Longene предлагает управление процессами Windows, управление потоками, управление объектами и т. д. в ядре; Wine предлагает возможности WineServer, работающие в пользовательском пространстве. Longene зависит от Wine для пользовательских библиотек (файлов .dll). Большинство библиотек Wine могут использоваться Longene напрямую. Код Wine (например, таблица реестра Windows) может использоваться для реализации некоторых функций. В переходном состоянии Longene использует Wine, чтобы предлагать те функции, которые еще не реализованы.
- Ядро-Win32
- Kernel-Win32 — это проект, призванный перенести некоторые функции Wineserver в ядро Linux для ускорения Wine. Проект Longene портировал (и частично повторно реализовал) Kernel-Win32 в Longene для реализации механизма системных вызовов Windows.
- NDISобертка
- NDISWrapper воссоздал часть ядра Windows NT в модуле ядра Linux, что позволило запускать современные драйверы Windows внутри ядра Linux. NDISWrapper состоит из API NTOSKRNL, базового контроллера WDM и набора оболочек вызовов Windows, таких как API Wireless/NDIS/USB/PnP для Linux. 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, предоставляемые 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), компактную версию (компакт-диск с ядром Linux 2.6.25.20) и версию Longene (компакт-диск с ядром Longene). 0.2.2). [5]
Требования к оборудованию
[ редактировать ]Минимальные аппаратные требования для запуска:
- процессор ИА-32
- 128 МБ ОЗУ
- Жесткий диск IDE или SATA
- Видеокарта, совместимая с VGA
- Стандартная (PS/2 или USB) клавиатура
- Мышь, совместимая с PS/2, или последовательная мышь, совместимая с мышью Microsoft Mouse
Поддержка архитектуры
[ редактировать ]- ИА-32 (рабочий)
- x86-64 (не работает, в разработке)
- Loongson 3 (не работает, в разработке)
- ARM (не работает, в разработке)
- Longene также можно запускать на программном обеспечении, которое эмулирует или виртуализирует вышеуказанное оборудование, например VMware и VirtualBox .
См. также
[ редактировать ]- РеактОС
- Кооперативный Linux
- Сигвин
- NDISобертка
- Службы Windows для UNIX
- Подсистема Windows для Linux
- Вино (программное обеспечение)
Ссылки
[ редактировать ]- ^ "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» . Архивировано из оригинала 3 марта 2014 г. Проверено 9 апреля 2014 г.
- ^ Magic Linux 2.5 rc2. Архивировано 20 апреля 2014 г. на Wayback Machine.