Пользователь
0,0
рейтинг
21 июля 2009 в 09:55

Администрирование → Microsoft хочет внести свой код в ядро Linux — давайте разберёмся

В этой статье я хочу развеять всеобщее помешательство насчёт того, что Microsoft хочет внести свой код в ядро Linux. Для начала давайте посмотрим, что это за код. В пресс-релизе [1] Microsoft как всегда лукавит, заявляя, что это код драйвера, написанный для сообщества Linux: Microsoft Contributes Linux Drivers to Linux Community — название пресс-релиза. Формально это так, но на самом же деле, в ядро вносится «система поддержки штанов» для улучшения производительности при работе Linux внутри Microsoft-освской виртуальной машины Hyper-V. Для сравнения, другие виртуальные машины (VMware и VirtualBox) тоже имеют свои модули ядра и инструменты, устанавливаемые в гостевую ОС. Однако VMware и Sun поддерживают их самостоятельно, в vanilla ядро этот код не входит.

Тем не менее, виртуальные машины от VMware и Sun вполне могут полноценно запускать Linux в качестве гостевой ОС даже если гостевые инструменты не установлены (работает сеть, X сервер прямо после установки гостевой ОС). Учитывая критическую концентрацию евангелистов от MS на хабре, хочу у них спросить: а в Hyper-V если не собирать драйвер для гостевой ОС сеть работать будет?

Зачем же Microsoft вносить свой код в ядро? Ведь out-of-tree модули для поддержки виртуальных машин имеют большое преимущество: код таких модулей распространяется вместе с соответствующей версией виртуальной машины и таким образом может включать поддержку всех новых функций этой версии ВМ. А если код включён в ядро, виртуальной машине придётся работать с той версией кода, которая включена в конкретную версию ядра гостевой ОС. Это вполне может сильно усложнить код ВМ, если протокол обмена данными будет меняться или расширяться в будущем. Или решение будет в стиле Microsoft: ограничить круг «пригодных» для запуска ядер на данной версии ВМ ядрами, выпущенными после ВМ (и, соответственно, включающими поддержку функций новой ВМ).

Здесь [2] можно найти сам код, предлагаемый для включения в ядро. В код Microsoft принесла все лучшие традиции WinAPI:
  • все typedef'ы BYTE, LONG, ULONG, ULONG_PTR, DWORD, и другие друзья
    WinAPI'шника на месте. HANDLE на месте. Я вам даже больше скажу — в их коде даже NULL определён! (Если кто не знает, то в ядре Linux есть все необходимые typedef'ы и #define'ы аналогичного назначения)
  • "#ifdef __cplusplus" (напомню, что C++ в ядре Linux отродясь не было)
  • тип «NTSTATUS» вместе с «STATUS_SUCCESS» и «STATUS_FAILURE»
  • сомнительные трюки с упаковкой структур "#pragma pack(push,1)", "__attribute__((packed))"
  • "#pragma once"
  • List.h — собственный велосипед для работы с двусвязным списком (в Linux есть linux/list.h с аналогичными возможностями)
  • InterlockedIncrement, BitTestAndSet, Sleep и прочие обёртки стандартных функций для того, чтобы писать код для ядра Linux как для ядра Windows
  • "#if defined(KERNEL_2_6_5)" и прочие проверки версий ядра (но код-то предназначен для включения в новое ядро!)


Кроме того, игнорирование правил Linux kernel coding style: код написан в том стиле, в котором написано ядро NT. Хотя отступы сделаны табуляцией, во многих местах кода явно видно, что «TAB = 4 пробела» по мнению авторов. Присутствуют строки кода длиной 300+ символов. Используется CamelCase. Комментарии оформлены не так (причём в коде присутствует несколько разных стилей). В некоторых местах наблюдаются поползновения в сторону венгерской нотации (когда в имя переменной префиксом добавляют тип, PFN_ON_OPEN — pointer to function ...).

Для сравнения предлагаю посмотреть два недавних пачта для поддержки HTC Dream: lkml.org/lkml/2009/6/29/163 и lkml.org/lkml/2009/6/29/148 Про оба патча пишут, что нужен cleanup кода. Тем не менее, если посмотреть непосредственно на сам патч, то видно, что стиль кода везде соответствует требуемому Linux kernel coding style и явных велосипедов (типа своих связных списков) нет. Тем не менее, этот код тоже написан сторонней компанией со своими наработками в области software (в коде стоят копирайты Google), но они со своим уставом в ядро Linux не лезут.

Конечно, прежде чем явные недостатки кода не будут устранены, код не попадёт даже в staging в дереве Линуса. Но, на это устранение ошибок тратит силы уже не только Microsoft, но и сообщество. Возникает вопрос, почему и, главное, зачем? Ведь можно элементарно найти пример, когда сырой драйвер не включали в ядро и отправляли разработчика шлифовать код до блеска и соответствия CodingStyle).

Даже когда (если?) код от Microsoft будет натёрт до блеска, и даже покинет staging и будет включён в основное дерево драйверов, на этом проблемы разработчиков ядра не закончатся, а только начнутся. Теперь, по правилам разработки ядра, если кто-то меняет интерфейс какой-то подсистемы ядра (например, SCSI), то он обязан обеспечить работоспособность всех драйверов, использующих эту подсистему, в том числе и драйвер для ВМ Hyper-V. Microsoft получает бесплатные человеко-часы для поддержки своего драйвера в современном состоянии. Profit!

Для справки: VMware поддерживает свои VMware guest tools самостоятельно более 6 лет, при этом в VMware guest tools входят и модуль ядра, и несколько приложений.

[1] www.microsoft.com/presspass/features/2009/Jul09/07-20LinuxQA.mspx
[2] www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-05-staging
gribozavr @gribozavr
карма
219,7
рейтинг 0,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (169)

  • +32
    Да вроде благие намерения, а на самом деле первосортная «свинья»
    • –1
      Ну конечно, да разве ж может Microsoft сделать что-нибудь хорошее…
      • –10
        windows 3.1
        • –6
          чем минусовать обоснуй
          • +7
            а че обосновывать, глючная надстройка над досом.
            • –7
              на сегодня да а в свое время
              • +7
                в свое время ее протолкнули на рынок вместо OS/2, попутно кинув IBM
                • 0
                  бимеров кинули с 95 виндой
                • 0
                  Есть версия что MS дочка IBM, пруфлинк нужен?
                  • 0
                    да желательно пруфлинк
                    • 0
                      Господин Громов очень интересную статью с указанием источников написал.
                      abcdefgh.livejournal.com/918512.html

                      Рекомендую.
              • 0
                Она глючит только сегодня, а «в своё время» не глючила? :)
                • +2
                  я не по глюки, я про то что эта программная попса существенно ускорила компьютеризацию мира и развитие технологий, спасибо за такое внимание к вопросу, за ссылки!
      • +8
        Ну, мне Flight и Train Simulators нравились :-)
      • +1
        Речь идет транснациональной корпорации. Категории «хорошее» и «плохое» уместны в детском саду.
        • 0
          Согласен это сравнимо с процессом эволюции животного мира, и человека в частности; вспомнить вымершие ветви австралопитека массивного или неандертальца, им на смену пришли австралопитек грацильный и хомо сапиенс соответственно
  • +2
    NT уже испоганили. неужели майкрософт вместо того, что бы сделать хорошо работающую с другими ос виртуальную машину, пытаются подстроить другие ОС под неё?
    • –1
      пытаются хоть как то остановить рост пользователей линукс… боятся)) А этот рост происходит, хоть и медленно но уверенно
      • НЛО прилетело и опубликовало эту надпись здесь
        • +20
          Фокус в том, что практически на всех рынках за исключением домашних и офисных десктопов, Линукс уже много лет как вытеснил остальные Юниксы и уверенно держит большую часть рынка. Серверы, топ500 суперкомпов, кластеры, графические кластеры…

          И вот сейчас речь уже действительно начинается идти о рынках, близких простому пользователю. Юбунту и прочие дистрибутивы появляются и активно используются в офисах; версии Линукса в мобильниках и нетбуках; гугловские предложения.

          Другое дело, что это ведь не вопрос большой рекламной компании, вроде майкрософтских или эппловских, такого быстрого проникновения на рынок быть не может.
          • –12
            >>… топ500 суперкомпов, кластеры, графические кластеры…

            В топ500 одни линуксы вероятней всего только потому, что первая ось от мс, которя специально создана для кластеров это Windows HPC Server 2008, хотя до этого был какой-то специальный пак для 2003 сервера, но реально за высокопроизводительные вычисления мс взялся только с выпуском винсервер2к8
            • +7
              Фактологическая ошибка. Цитирую с Вики:

              «Microsoft Cluster Server (MSCS) is software designed to allow servers to work together as computer cluster....»

              "....Windows NT Server 4.0, Enterprise Edition was the first version of Windows server to include the MSCS software"

              Тадам. Больше десяти лет на рынке?

              • –3
                Мне о HPC рассказывал Всеволод Украинский ( ukrainsky.ru ), он в мс занимается продвижением HPC, и он мне говорил, что именно с выпуском HPC Server 2008 мс СЕРЬЕЗНО взялся за высокопроизводительные вычисления
                • +7
                  Мало ли, кто, чем и насколько серьезно занялся. Они на серверном рынке и рынке БД тоже уже довольно давно, но тем не менее конкурирующие решения по-прежнему ведут.

                  А представитель МС, разумеется, будет уверять, что вот НА ЭТОТ РАЗ все очень серьезно; как Джобс уверял, что переизобрел телефон.

                  Однако, кто собирает топовые компы? IBM? Экс-Sun? Институты? А кто из перечисленных, напомните, является сторонником Мс?
            • +1
              Нет, потому что построение кластера предполагает доступ к исходникам ядра, так как необходима оптимизация под конкретные задачи. Об этом неплохо написано в Beowulf HOW-TO.
          • –1
            Удивительно, откуда тогда в компаниях входящих в Fortune 1000 около 80% веб-серверов крутятся на IIS-е?
            Или он теперь под линух? =) Опять происки MS? :)
      • –13
        какой такой рост?
        с 2.6% до 4.2% за 6 лет? ну ну

        www.w3schools.com/browsers/browsers_os.asp
        • +8
          эм… молодой человек, а мы все еще про сервера и виртуализацию? или вы просто решили по клавиатуре постучать?
          • –7
            даже и не знаю, решайте уж сами, но просто мне кажется что весь этот ваш «рост пользователей линукс» существует только у вас в голове, ну и на сайте линукс.орг.ру
            • 0
              Все же на рынке виртуализации решения от МС не лидируют! Тот же вмваре готовые решения на линуксе предоставляет (практически все).
            • +2
              Товарищ прозрачно намекнул на процент использования Линукса в серверной нише. Хотя тут он конкурирует скорее с БСД, чем с НТ. По сути конкуренция весьма условная, Вин снимают и заменяют на Лин, когда он жестоко облажался, как с Лондонской биржей.
            • +4
              Рост конечно есть, но мал. А хотелось бы больше. У нас в офисе не осталось не одной виндовой машины. (107 машин (вкл. сервера)).
            • +2
              >этот ваш «рост пользователей линукс» существует только у вас в голове

              Да я тоже так думал, пока как-то незаметно не оказался на линуксе, и главное не чувствую никакой разницы.
              • 0
                Врядли разницу можно не почувствовать :) возможно вы перепутали понятия «разница» и «дискомфорт».
                • +1
                  Видишь ли в чём дело, меня на протяжении долгого времени к этому приводили, например, дали мне файерфокс. Догадайся что я увидел, когда захотел в линуксе в интернет зайти. В линуксе поставили более удобное расположение менюшек в кнопке пуск. Причём пока линукс стоял на виртуальной машине, я смекнул, что такая организация гораздо удобнее, чем сваливать всё в кучу и переделывал винду под новые потребности.

                  А на линуксе поставил всё так же как в винде, там действительно нет разницы. Файловые менеджеры подгоняются под привычный проводник, правда мне больше нравится, что ещё есть возможность открытия вкладок. Плюс ntfs-3g позволяет работать с теми же дисками, что и в винде.

                  У меня в файерфоксе scrapbook, так вот когда я захожу в винду и в линукс с одного компьютера, я вижу одно и тоже. И диски настроены одинаково. Я конечно сам виноват, что всё сделал одинаково, эти и многие другие настройки, и тем не менее получилось именно так.

                  Кое-что совпадает полностью, тот же psi для джаббера и много всего. Кое-что заменяет одну программу на другу, trix на vypress, Microsoft Office на OpenOffice и так далее. В общем, я жму на кнопки в тех же местах, пользуюсь преимущественно теми же программами с теми же настройками, и часто забываю, что уже не в винде.
                  • 0
                    Люблю иногда погонять Prototype -))
        • +2
          виртуализация вообщето интересна совсем другим пользователям линукс :)
          смотрим топ-500 суперкомпутеров к примеру :) а в доле вебсерверов? :) и тп :)
          • 0
            Ну не совсем, виртуализация прежде всего нацелена на корпоративный рынок, на сервера среднего ценового диапазона(и производительности), чтобы более полно использовать их возможности.
            • 0
              и как там рост доли линуха в серверах среднего ценового диапазона? :)
  • –11
    У людей, бизнес, достаточно большой, что бы…
    Опять же вспоминается «Не можешь, победить взоглавь»

    ЗЫ: чет все больше волн из редмонда в сторону линукса.
  • +9
    >Зачем же Microsoft вносить свой код в ядро?
    наверно, дабы его осквернить…
    • +2
      Угу, так и вижу мс-программистов-сатанистов с торчащими клыками, красными глазами, обляпанными кровью, мечтающих осквернить holy kernel =)
      • 0
        На сколько я знаю, они индуисты. Так что, наверное, они поклоняются вот этой тёте:
    • –13
      Дёготь мёдом не испортишь…
      • –9
        спасибо за карму! ыыы
      • +3
        Вы мёдом называете майкрософтский код ??? :-)
    • +4
      Я все понял! Чтобы потом кричать на каждом углу, что в ядре Linux-а есть код от микрософта! =) А дальше уже как повернешь…
  • +1
    А я говорил, что МС не знает куда деть этот хлам. Адекватные люди берут нормальные системы виртуализации.
    • –1
      У вас конечно большой опыт виртуализации. Например, как у parking.ru.
      • 0
        Моего опыта хватает, чтобы понять, что hyper-v до xen или esx с ее memory overcommit шагать и шагать. Кстати, hyper-v transparent page sharing научился? или до сих пор уныл?
        • +1
          page sharing фича для презентаций. При нынешних ценах на оперативку она нужна только для того, чтобы сказать «А мы ещё и так умеем».

          Давайте вспомним действительно важные вещи. Например, у VMWare своя кластерная файловая система… Гордо звучит, правда? Гордо и несовместимо ни с чем абсолютно. Даже бекап виртуального диска нельзя сделать. Вернее, можно, но для этого нужно покупать отдельный софт. Отдельный софт — Veem для простого копирования файла с луна на лун, вот уж и правда венец эволюции.

          Мерятся письками можно долго. Гораздо важнее, что Hyper-V решение того же функционала обходится куда дешевле ESX, и не уступаем ему в стабильности.
          • +1
            Нe если уж взялись серьезно за виртуализацию, то цена тут наверное не самый главный фактор. А вот наличие DRS, VMotion + те факторы, что я перечислил идут в актив esx. Конечно, hyper-v займет свое место среди тех, кто уже взял Win Server 2008 и кто как истинный пользователь МС может просто сходить и купить еще оперативки, потому как не тянет.
            • 0
              Цена, а вернее полная стоимость владения, самый главный фактор за чтобы мы ни взялись.

              VMotion это симпатичная фича, в Hyper-V есть даже аналог (Live Migration), но она не важна, потому что не влияет на цену. Гораздо важнее уметь перезапускать виртуальную машину после сбоя физической. Это уменьшает unplanned downtime и, следовательно, уменьшает упущенную от простоя выгоду, удешевляет disaster recovery, потому что с одной стороны не требуется вмешательство человека, с другой стороны не тратятся физические машины на кластеризацию.

              Это кстати важный момент. Скажем у нас есть 10 серверов базы данных. В невиртуальной среде вы должны купить минимум 20 компьютеров, объединить их в failover кластеры. В виртуальной среде вы покупаете 11 физических машин, на 10 запускаете свои сервера (по одному виртуальному на одном физическом, passthough диски, оверхед минимален), а одинадцатый ставите как global spare. Экономия на компьютерах даже не 45%. Скажем если брать blade enclosure HPc7000, то в него 16 серверов влезает. 20 серверов это два энкложура, а 11 — один энкложур. Цена падает нелинейно.
              • 0
                Да, ещё по поводу «уметь перезапускать виртуальную машину после сбоя физической».

                Есть некластеризуемые в формате active-active сервисы. Кластеризуется, фактически только терминал. Сервера баз данных требуют второго сервера в простое. Дальше хуже, большинство серверов приложений не кластеризуютсяв режиме failover вовсе (пользуясь случаем, передаю привет 1С). Не кластеризуется большиство почтовых серверов. Контроллёры домена и DNS сервера по большому счёту тоже не кластеризуются, потому что после сбоя основного сервера система переходит в read-only режим. Даже если сделать какое-то решение на основе ПО третьих фирм, надо разделять конфигурацию между узлами кластера, а это кривые решения на скриптах и т.д.
      • 0
        А теперь найдите отношение количества провайдеров, использующих HyperVM к количеству провайдеров, использующих Virtuozzo/Xen/KVM/OpenVZ/VDSmanager/VServer/кучу_всего_прошлого. Для эффектности можете находить отношение не количеств, а сумм их возрастов.
        • –1
          Учитывая возраст Hyper-V и Virtuozzo сравнение будет неадекватным.
          • +1
            Следуя Вашей логике, все хостеры с огромным опытом виртуализации должны были пересесть на Hyper-V сразу же после его выхода :-)
            • –1
              Зачем? На Hyper-V имеет смысл делать только новые проекты, в старые уже вложены деньги, переезд на Hyper-V для них экономически не оправдан. Другое дело, что многие хостеры параллельно со старыми системами начали ещё и Hyper-V запускать.
  • +9
    Удобный топик для холивара:-)
  • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      Ага, и драйвер просто выкинут из ядра. Если он туда вообще попадёт.
  • +11
    А сообществу вообще нужна поддержка этого драйвера в ядре?
    • –4
      Да ну вряд ли, если уж ProWindows то ProWindows, так проще. Использовать все от MS в комплексе намного удобнее, чем пытаться прикрутить костыли к другим, а остальное вопросы безопасности и железа
    • –3
      Ну смотрите, даже, если мы очень сильно не любим МС, то всеравно понимаем, что в корпоративный сектор решения по виртуализации свое они продвинут неплохо. И что будет, если при этом не будет поддерживаться линукс? Корпоративщики выбрав решение от МС (по ряду причин), будут вынуждены часть своих серверов(ну которые у них под линуксом), переводить тоже под винду. И линукс начнет терять корпоративщиков. Так что поддержка нужна.

      А для МС это хороший пиар, да и дополнительный плюс для системы виртуализации.
      • +2
        Почему VMware и Sun могут обеспечить отличную поддержку Linux как гостевой системы без включения своего кода в vanilla ядро? Они разрабатывают свои модули, но out-of-tree. И это, кстати, может дать им преимущество перед Hyper-V. Смотрите, выйдет Hyper-V 2012 (например), в котором реализована фича X. Для этой фичи нужна поддержка со стороны ядра. В ядре 2.6.32, в которое планируется включить текущий патч после доработки, этой поддержки нет. А VMware в аналогичной ситуации просто предложит пользователю «установить последние VMware tools».
        • 0
          Как я понимаю, все же hyper-v корректнее с xen сравнивать.
          • 0
            Между VMWare ESX и Xen разницы кот наплакал. Hyper-V одинаково далёк от обоих. Ну или близок к…
            • 0
              Я не очень глубоко в этой теме разбираюсь. Но разве Xen — это не паравиртуализация, т.е. аналогично хайпер-в, похожая система с гипервизором?

              Хотя в xen`е есть и хардварная виртуализация.
              • –1
                Xen Server полноценная система виртуализации за счёт аппаратных возможностей. По внутренностям тот же Linux, что и ESX.
        • 0
          VMware таки протолкнула свой станадрт на виртуализацию в ядро. VMWare tools — это всяки фишки и украшательства. Виртуализация низкого уровня (таймеры, память, режимы процессора) уже включены в ядро. Не понимаю, чем это отличается от идеи микрософта (не счита того, что у микрософта Hyper-V намного обширнее и мощнее). Более того, сам стандарт от микрософта открыт и может применяться для виртуализации линукса под другими системами.
          • –1
            Что-то я нахожу только 2 файла, специфичных для VMware (arch/x86/kernel/cpu/vmware.c и arch/x86/include/asm/vmware.h) суммарной длиной 139 строк, включая комментарии.

            Ссылку на стандарт Microsoft в студию, кстати.
            • +1
              VMI — разработан и поддержимается VMWare. Включен в ядро начиная с 2.6.21.
              Описания и стандарты виртуализации от Микрософт распространяются с Microsoft Open Specification Promise.
              Например Hypervisor Functional Specification

                • 0
                  Просмотрел я спецификацию и не нашёл описания того, что собственно предлагается включить в ядро — спецификация, которой должны соответствовать драйверы для синтезируемых устройств.
                  • 0
                    так это стандарт на Hyper-V. Он, собственно, позволяет реализовывать собственную хот-манишину для Hyper-V и не бояться, что потом придёт злой микрософт и скажет, что все права на эт утехнологию принадлежат ему.
                    Сам же код распространяется под GPLv2 — это написанно по ссылке в статье.
                    Внимание вопро с- так что плохо в том, что в ядро будет включена поддержка ещё одного открытого стандарта виртуализации?
                    • 0
                      Внимание вопрос: где спецификация на тот код, который предлагается закоммитить (драйверы для синтезируемых устройств)? Именно драйверы без спецификаций (по крайней мере пока что я их не увидел) составляют практически весь код. Инфраструктурный код, которого касается спецификация, на которую вы указали — не бОльшая часть кода.
        • –1
          Вообще-то, у вас налицо полное отсутствие опыта работы с системами виртуализации. VMWare и Xen это самые настоящие линуксы, чтобы вам ни говорили про железный гипервизор, так что ничего удивительного нет, что они с линуксами общаются без проблем. 2008 внутри 2008 тоже живёт припеваючи.
          • –1
            Вообще-то, у вас налицо полное отсутствие опыта работы с системами виртуализации.

            О-да, а вы наверное, стоите просто у истоков всех виртуализации? Будем дальше переходить на личности или попробуем по существу ответить?
      • 0
        Я бы скорее сказал Microsoft потеряет позиции на рынке виртуализации. А то, насколько Microsoft способен подвинуть корпоративный сектор в виртуализации, покажет только время…
  • НЛО прилетело и опубликовало эту надпись здесь
    • +2
      > Пусть либо переписывает зависимый код, либо пишет адаптер.

      ну вот пусть микрософт и переписывает… в виде стороннего модуля, а не виде кода в ванила ядре)

      а то все свои наработки по виртуализации пилят сами, а эти все хотят чужими руками делать.
      • НЛО прилетело и опубликовало эту надпись здесь
        • +5
          Святая дискета…

          >Это принципиальный вопрос и Microsoft со своей виртуализацией тут не при чем.

          www.mjmwired.net/kernel/Documentation/stable_api_nonsense.txt

          на будущее, когда залезете в чужой монастырь, хотябы устав почитайте…

          Там ничего не меняют из-за почеса левой пятки, а поддержкой работоспособности стороннего проприетарного ПО должны заниматься программисты этого ПО, а не разработчики ядра.

          модуль Нвидиа пилит Нвидиа, модуль виртуал бокса — Сан(покойся с миром), все довольны, все счастливы… не будем нарушать эту славную традицию по самостоятельной поддержке своих изделий. Когда Hyper-V станет _свободным_ ПО, тогда можно и по-другому.
        • +2
          Тут вопрос накой этот код от MS нужен в ядре? Пусть лучше будет отдельным модулем, как делают VMware или Sun, и разработчикам ядра будет меньше проблем.
    • +3
      Проблема в том, что исправлять эти проблемы должно комьюнити ядра Linux. А фактически, это поддержка кода для платного проприетарного продукта — Hyper-V. Если каждый производитель ПО захочет что-то добавить в ядро (например, Maya может хотеть добавить какой-то специализированный код для ускоренного вывода 3D графики, какой-то производитель антивирусов недавно хотел добавить возможность перехвата всего и вся в ядре чтобы потом выпустить «антивирус для Linux» и т. д.), то разработчики ядра будут заниматься поддержкой чего угодно, но не драйверов устройств.
      • НЛО прилетело и опубликовало эту надпись здесь
        • +1
          Речь идёт о любых реальных проблемах, которые могут возникнуть с кодом, в котором почти нет документации, много велосипедов и отсутствует какая-либо спецификация, которой этот код должен соответствовать (кроме критерия «кажется гипервизор перестал падать после этого патча...»).
          • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Microsoft Hyper-V Server 2008 является хоть и проприетарным продуктом, но бесплатным. www.microsoft.com/hyper-v-server/en/us/how-to-get.aspx

        Ну и плюс в сервер 2008ой встроена.
      • 0
        Все делается сугубо добровольно. Хотят сделать сделают, не хотят не будут делать. Это сам MS должен чесаться о актуальных спецификациях и своевременном обновлении кода. Если он этого не будет делать, то код особо никто править не будут и он может умереть еще на стадии staging
  • +4
    я не знаю как VMware Infrastructure, но при Hyper-V система на которой крутиться гипервизор, сама становиться гостевой.
    вот чтобы все работало как надо MS и пишет этот код в ядро. Sun Virtualbox и VMware Workstation работают не так: они эмулируют устройства, а hyper-v синтезирует устройства.
    • 0
      А что значит синтезирует?
      • 0
        я не силен в английском, поэтому приведу оригинальный текст:
        Synthetic Device

        Synthetic devices are the new high performance devices that are available with Hyper-V. Here, rather than emulating an existing hardware device we expose a new hardware device that has been designed for optimal performance in a virtualized environment (I will not go into a performance discussion of synthetic versus emulated devices here — as that is quite a lengthy discussion and can wait for another day). Generally speaking you will never see reference to a «synthetic» or «emulated» device in our user interface as we have tried to hide this from the user as much as possible.

        Most of our devices (IDE, video, mouse, etc...) support booting in emulated mode, but then switching across to synthetic mode once appropriate drivers are loaded. There are some exceptions to this though. On networking you have to choose to use a «Network Adapter» or a «Legacy Network Adapter». The former is a synthetic device while the latter is an emulated device. With storage the «SCSI controller» only exists as a synthetic device. And finally there are a handful of devices where performance is not really a problem (like COM ports) so we only offer emulated devices for them.
        • 0
          Разница очевидно такая — эмулированное устройство — это виртуальной машине подсовывается устройство, драйвер для которого уже есть, а гипервизор имитирует поведение реально существующего в кремнии оборудования; синтезированное — это для виртуальной машины сделано новое устройство, драйвер для него, и всё это сделано таким образом, чтобы гипервизору был легче имитировать поведение никогда не существовавшей «железки». Второй путь, несомненно, производительнее.

          Правда, ничего тут такого сверхнового не изобрели — VMWare уже сто лет как использует этот подход для организации виртуальной видеосистемы.
    • 0
      В VMWare ESX и Xen управлялка тоже в нулевом домене.
  • +2
    А можно на пальцах объяснить? Благодаря этому коду Linux будет работать лучше\стабильней\быстрей в своей машине Hyper-V?
    • +1
      просто будет полноценно работать, иксы, сеть
  • 0
    Вам самим не надоело про «патентами задушат, убьют изнутри, Hyper-V — неадекват»...? Большие дяди соберутся и сами всё решат
  • +4
    насчет «все typedef'ы BYTE, LONG, ULONG, ULONG_PTR, DWORD, и другие друзья
    WinAPI'шника на месте. HANDLE на месте. Я вам даже больше скажу — в их коде
    даже NULL определён!» и остальных «традиций»:

    я думаю все проще — просто взяли кучу наработок, чтобы не писать заново, ну и поставили заглушки чтобы оно работало. ничего плохого в этом нет, если код много раз проверен и доказал свою работоспособность.
    насчет соответствия kernel coding style — ну это решать менторам
    • +1
      Тогда возникает вопрос, почему до сих пор всех отправляли исправлять код при намного более мелких проблемах, а тут такой энтузиазм у Greg KH появился?
      • +3
        Значеит Грегу интересно, он же сам вызвался поправить все. Плюс надо понимать, Грег работает в Новелл, ему платят деньги, поэтому компания может наверное своему сотруднику давать определенные направления.
  • 0
    Хотелось бы увидеть в топике раскрытие темы «Индийский код в исходниках Микрософт», а про отличия в Linux-style и Microsoft-style давно известно всем заинтересованным.

  • 0
    А сколько пробелов, по-вашемУ, равен таб?
    • +3
      он равен 1 символу табуляции
      • 0
        «Обычно равна по ширине 4 или 8 пробелам»
        Про это я и спрашивал. Из контекста статьи не понятно, что имелось в виду.
        Отображение на экране таба ли, либо замена в исходном коде таба на N пробелов.
        • 0
          неписаное (а иногда и хорошо задокументированное) правило — 4 пробела заменяют 1 таб
          • 0
            Гхм… с таким подходом… Код может быть отформатирован или с применением табуляции или без. Все «4 пробела=1 таб» это мягко говоря непрофессионально. Если у вас «4 пробела=1 таб» и на это завязан формат кода, то используйте пробелы, а не табуляцию. Благо, что все нормальные оболчик и редакотры умеют эмулировать табы. Иначе, единственное назначение таба — сдлать так, чтобы программисту пробел меньше нажимать было. Т.е. у вас форматирование не для читающего делается, а для пишущего, что есмь ересь и бред.
            • 0
              я о том и говорю: пробелы заменяют таб, а не таб заменяет пробелы. таб — зло :)
    • +1
      По Linux Kernel Coding Style — 8 пробелов.
  • 0
    Разве Линус поддержал внесение этого полена в ядро?
  • +24
    А ничего, что Грег (Greg Kroah-Hartman), объявляя об открытии кода прямо говорит о том, что
    1) код нуждается в доработке,
    2) доработку, в первую очередь, будут возглавлять он и Hank Janssen,
    3) есть список изменений, которые нужно внести прежде, чем двигаться дальше:
    + — fix checkpatch warnings/errors
    + — fix sparse issues
    + — remove compatibility layer
    + — fix HANDLE usage to be «real» pointers
    + — audit the vmbus to verify it is working properly with the
    + driver model
    + — see if the vmbus can be merged with the other virtual busses
    + in the kernel
    + — audit the network driver
    + — audit the block driver
    + — audit the scsi driver

    Далее Ханк говорит примерно о том же:
    Now, my team and I will be responsible for further developing this code going forward.

    Is this a Dump and Run from Microsoft? Absolutely not! We plan to enhance the functionality of this code, and we will continue to work with the Linux Community to support the drivers and to ensure continued interoperability.


    Наконец, если покопаться дальше по патчам, там уже есть куча патчей, которые как раз убирают NULL, некорректные типы и т.д.

    Все не так плохо. Разработкой ядра и драйверов занимаются не слепые люди. Включать плохой код — себе дороже. Проблемы открыто признаются. Есть конкретные люди, в том числе из Microsoft, которые занимаются доводкой кода до нужного уровня/стиля. Это только начало, а вы тут уже целый холивар развели :)
    • –1
      Я это читал и патчи видел. Но остаётся вопрос, почему Greg должен заниматься доработкой кода для проприетарного продукта? Greg — мейнтейнер стабильной ветки ядра и ещё кучи всего остального, он занят и без этого. Раньше в аналогичных случаях разработчиков безоговорочно отправляли допиливать код самостоятельно.

      К тому же вы не ответили на мой вопрос в том числе и к вам:
      в Hyper-V если не собирать драйвер для гостевой ОС сеть работать будет?

      • +7
        Если вы об этом читали и видели, зачем же писать как все плохо, если знаете, что уже все начали исправлять? Излить яду? :))))

        Зачем это нужно Грегу? Может он решил помочь Microsoft, может ему понравилась эта инициатива, может он хочет, чтобы линукс хорошо работал под hyper-v, а может потому что Novell? Чем фантазировать и решать за него, какие у него приоритеты, лучше спросить напрямую, по-моему это не слишком сложно (gregkh at suse.de) ;)

        Про особенности hyper-v не хочу вводить в заблуждения, т.к. не разбираюсь. Могу предположить, что это связано с тем, что в hyper-v виртуализация требует аппаратной поддержки и соответствующих драйверов («paravirtualized device drivers») для ускорения I/O и работы по сети.
        • –3
          Я смотрел тот код, который был «щедрой рукой открыт под GPLv2». А там оказалось такое месиво. Понимаете, просто наблюдатели могут сделать некоторые выводы. Если MS открыла такой код в надежде на включение в ядро, значит в MS считается нормальным в каждой подсистеме по поводу и без повода дефайнить свой NULL, смешивать разные стили кода, и т. д. К тому же, с моей точки зрения, это демонстрация неуважения — предлагать в проект с устоявшимся стилем написания кода код в совершенно другом стиле.
          • +2
            Да может они просто решили обстановку прощупать, прежде чем глобальный рефакторинг начинать. Собрали из готового что было и опубликовали. Теперь ситуацию прощупали — будут к принятому стандарту приводить. А так привели бы, а им отказали, а все время на рефакторинг — на смарку? Вполне нормально. Меньше яду надо…
            • –4
              Когда кто-то пришел к тебе в гости, небритый, помятый, грязный и сразу начал передвигать мебель по своему фен-шую, это «вполне нормально»?

              Похоже они сразу на отказ расчитывали. Вот только зачем?
      • +8
        Но остаётся вопрос, почему Greg должен заниматься доработкой кода для проприетарного продукта?

        Ему дали денег за это. К.О.
    • –1
      Я вот тоже не понимаю. Перечислили кучу всего, а у меня в голове только один вопрос: а порефакторить нам что, запрещают? Половину проблем за пару дней решить можно, если среда разработки нормальная. С детекторами версий ядра надо аккуратнее: посмотреть, зачем они там, и если получится, попрятать или локализовать в одном месте.
      • +1
        А оно вам надо? =)

        Статья не о том что нельзя, а о том почему кто-то должен допиливать «это» вместо Майкрософт
        • +3
          Ви слепой? Вас лично кто-то что-то заставляет допиливать? Или вообще кого-то заставляет? Есть вполне конкретные люди, которые вызвались всё допилить. Или вы думаете их пытками заставляют? Я, вот, например, думаю, что им просто денег дадут. Причём пропрционально объёму допиливания. Если бы вам Микрософт предложили денег за правку их кода, то вы наверняка бы незаивисимо от суммы не просто отказались, а ещё и месяц после этого трижды день соврешали намаз на исходниках линукса и совершили паломничество к прподобмному Торвальду, чтобы он очистил вас от скверны? По-моему очень благое начинание. Если MS хочет чтобы кто-то привёл их код в порядок и они готовы этого кого-то заинтерсовать, да ещё и код становится обедоступным, то по-моему это прекрасно.
          • 0
            Речь не о коде как таковом. Очень даже прекрасно, если МС просто опубликует свой код в виде модуля под GPL. Кому нужно, всегда могут взять и вкомпилить этот код в ядро.
            Однако речь о другом. Речь о внесении кода в главную ветку ядра. А это уже несколько другая вещь.
            Причем если этот код публикуется отдельно, весь геморрой, связанный с поддержкой и совместимостью кода ложится на производителя кода. А вот если код включается в ядро, здоровенная часть ответственности перекладывается на других разрабочиков ядра.
            Поэтому нужно семь раз отмерить, а потом уже включать. Или не включать.
            А еще, в детстве я читал сказку, в которой были такие слова:
            «Бабушка, бабушка, а зачем у тебя такие большие зубки?»
            • +2
              По вашей логите вообще не нужно включать никакой код в ядро — а то ответсвенность перекладывается. где граница. А отмерить нужно несомненно. Ибо микрософт контора в целом свинская и и свиню теоритически подложить могут.
              • 0
                Да я в общем-то тоже про границу.
                Ну и кроме всего прочего, это не совсем тот код, который обязательно должен быть в ядре. Особенно в «ванилла» ядре. Для такого кода, собственно, есть другие пути включения, которыми и пользуются другие фирмы.
  • +4
    Пусть MS тоже в свое ядро что-то от линукса внесет ;)
    • +1
      мечты :)
    • +3
      лицензия не позволит
    • +3
      кажется, лицензия линукса не позволяет это делать. Используешь открытый код — открывай свой.
    • –1
      они и так кой-чего взяли из FreeBSD
      • 0
        тисипи стек они взяли.

        только не путайте бсд лицензию (делай что хочешь, код свободен) и гпл (код конечно свободен, но не совсем, так как… и дальше пункты)
        • 0
          Я просто хотел сказать что МС используют сторонние разработки в своем ядре. Про лицензии я и слова не сказал, т.к. это и ежу понятно — gpl не позволит.
  • +5
    В древности случилась одна интересная история. От нее осталась поговорка:

    Бойтесь данайцев, дары приносяших!

    Короче: семь раз отмерь, один раз отрежь!
  • +4
    Зная Торвальдсовскую политику, могу предположить, что он не побоится внести код в ядро при 1) условии его готовности; 2) при наличии реального технического преимущества; 3) отсутствии лицензионных проблем. И ведь запросто наплюет на любые возражения со стороны Free Software Foundation! Ох. Ух-ох. Чем такой шаг может закончиться — фиг знает.

    • 0
      Главное — лицензия. В крайнем случае, если МС начнут создавать проблемы, код можно из ядра и удалить, или перестать поддерживать.
      А чтобы не было проблем, нужно становиться сильнее. Тогда и МС и другие производители/монополисты будут становится все более гладкими и пушистыми.
    • 0
      С таким code style — не возьмёт, это точно.
  • 0
    Пост, в котором каждый имеет свой ответ на вопрос «что вообще происходит?» :)
  • 0
    Не понял чем недоволен автор? Самим фактом — так это холивор и ограниченность мышления.
    Тем, что код неправильно отформатирован? Дык в исходниках линукса такие перлы встречаются… Я согласен, что нужно настаивать на приведение кода к общепринятому формату, но точно так же уверен, что это для микрософта не проблема.

    typdef'ы не нравтся? У вас аллергия на слово Handler? Или на слово BYTE? Есть список запрещённых к использованию слов? Опять сплошная истерика на ровном месте — в чём конкретно проблемма?

    Комментарии не нравтся? Разные стили? Эээээ… в коде линукса и ядра вообще туго с комментариями, а со стилями совсем бардак. Не думаю, что в данном коде ситуация хуже. Более того, подозреваю, что лучше.

    А вот это вообще перл: «Теперь, по правилам разработки ядра, если кто-то меняет интерфейс какой-то подсистемы ядра (например, SCSI), то он обязан обеспечить работоспособность всех драйверов, использующих эту подсистему, в том числе и драйвер для ВМ Hyper-V. Microsoft получает бесплатные человеко-часы для поддержки своего драйвера в современном состоянии. Profit!» Гхм… ну тогда вообще давайте не будем никакие новые драйвера в ядро включать. Хотите дрова Intel? А хрен вам — там же сплошной профит. NVIDIA/ATI — туда же! не фиг тут профит получать! И вообще, не надо новый драйверов, а то не дай Бог профит случиться — будем на старый сидеть.
    Короче, говоря, воплей много, слюней много — чем именно не доволен автор не ясно.
    • 0
      драйвера интел, ати и нвидиа, включеные в ядро — свободное по, те которые закрыты в ядро не входят.

      • –1
        Драйвера MS — закрытое ПО? :)
        • +1
          Под GPL — нет, это не закрытое ПО. Но драйвера Intel — вполне открытое, если вы не знали, они менеджер памяти для графической системы ядра написали вообще-то. Ни о какой закрытости и «непопадании» речи не идёт.
        • 0
          Hyper-V закрытое по, один сферический драйвер вроде как никому не нужен.

          у закрытых драйверов есть «свободные» модули

          не я ж первая начала с передергивания «ну тогда вообще давайте не будем никакие новые драйвера в ядро включать» =)
    • +1
      typdef'ы не нравтся? У вас аллергия на слово Handler? Или на слово BYTE? Есть список запрещённых к использованию слов? Опять сплошная истерика на ровном месте — в чём конкретно проблемма?

      Проблема в велосипедах. Все нужные typedef'ы уже в ядре есть. Предлагать свой код прежде чем разобраться в остальном проекте — просто не уважать разработчиков. А название типа NTSTATUS на что намекает? На ядро NT? Почему IBM ещё не закоммитила тип AIXSTATUS? А hp — HPUXSTATUS?

      Гхм… ну тогда вообще давайте не будем никакие новые драйвера в ядро включать.

      Не включать эти драйверы в ядро — это win-win ситуация для Microsoft с одной стороны и для разработчиков ядра с другой. Для разработчиков ядра — ясно почему (меньше кода, тем более завязанного на проприетарный софт — проще поддерживать). А почему это win для Hyper-V я ответил тут: habrahabr.ru/blogs/linux/64986/#comment_1814554
  • –14
    Ну вот, теперь видно, что в майкрософте работают быдлокодеры. Они всему миру показали, какой они код пишут — теперь уже не отмоются.
  • +10
    В таких холиварных топиках всегда интересно посмотреть анкеты людей, которые высказываются за ту или иную сторону… Печально видеть, что большинство высказывающихся тут людей, судя по анкете, никоим образом не относятся к системным программистам. Так что о какой-то адекватной оценке говорить сложно. Особенно печально это вглядит со стороны Microsoft.
    Так же поставленные минусы(в самом начале жизни топика) противникам введения этого кода в Linux ядро… Microsoft тут проводит целенаправленную политику? Или это просто фанаты Microsoft? Зная всё серьёзность подхода Microsoft ко всему что связано с пиаром, продвижением своих продуктов(на что собственно и направлено продвижение этого кода) мне больше верится первое.
    PS: Это всего лишь мои мысли вслух. Возможно я неправ… Возможно я параноик :) В этом случае примите мои извинения, если кого обидел.
  • +2
    Кстати, интересно почитать в самой рассылке про это: lkml.org/lkml/2009/7/20/167 — Грегу намекнули, что DWORDы и прочая «чушь», как выразился Jan Engelhardt, неуместны и избыточны в ядре, и Грег на это ответил, что «это я уже убрал, посмотри более новую версию».

    А ещё ему предложили «а ты вычисти драйверы и тогда уж запость — всем будет легче хотя бы читать этот код».
  • –4
    Бред и провакация.
  • –1
    Вообще-то прежде, чем обсуждать, необходимо хорошо усвоить одну вещь. Майкрософт это не софтверная компания, а прежде всего финансовая.
  • 0
    >> а в Hyper-V если не собирать драйвер для гостевой ОС сеть работать будет?

    Q. What is the list of guests that will be supported on Hyper-V? When can we expect support for key operating systems like Windows Vista, Windows XP, Linux, etc.?

    A. Microsoft supports a number of guest OS environments including Windows Server 2008, Windows Server 2003, Windows 2000 Server, Windows Vista, Windows XP and Novell SUSE. For the complete list of operating systems that will be supported with Hyper-V, please refer to

    Q. Will Microsoft continue to support Linux operating systems with Hyper-V?

    A. Yes, Microsoft will provide integration components and technical support for customers running select Linux distributions as guest operating systems within Hyper-V. Beta Linux integration components are now available for SUSE Linux Enterprise Server 10 SP2 and SP1 x86 and x64 Editions. These integration components enable Xen-enabled Linux to take advantage of the VSP/VSC architecture and provide improved performance. Beta Linux Integration components are available for immediate download through connect.microsoft.com.

    Q. What about other Linux distributions?

    A. We continue to listen to customer feedback and are working with the other Linux distributors. Please check the Supported Guest OS page for more information and updates

    Взято с www.microsoft.com/windowsserver2008/en/us/hyperv-faq.aspx
    • –2
      Так да или нет? Текста много, конкретного ответа нет.
      • 0
        Насколько я понимаю да, иначе что означает supported?
        • 0
          Там не написано networking without custom drivers supported, а просто supported. Что в переводе с маркетологического языка вполне может означать «поддерживается без сети, без иксов и не более 256 Mb RAM» — ведь не уточняется, до какой степени supported.
          • 0
            Есть Legacy Network Adapter. 100Mbit и PXE.
  • +3
    Кстати, лучше бы они сделали винду работающей в Xen паравиртуальном. Опыты такие были, существует порт Windows XP на Xen, так что это возможно.

    Только этому не бывать :(
  • –2
    пресвятая мария, надеюсь нихера у них не получится
  • 0
    MS уже давно пытаются сыграть роль в Open Source движении. Вот мотивацию я пока не могу понять. Да и могу поспорить что вносят свой код в ядро Linux не для оптимизации работы последнего в окружении Hyper-V, а для поднятии шумихи о их «благородном» деле, дабы подняться в глазах того же Linux сообщества.

    ЗЫ Возможно я не прав, просто это ИМХО
    • +1
      Читайте внимательнее пресс-релизы — Майкрософт в них, как ни странно пишет правду :)

      Есть пользователи которые хотят использовать гипервизор — при этом они же хотят использовать Линукс — у них будет такая возможность — мы слушаем своих пользователей и пытаемся им помогать. все просто
      • 0
        И всё же, почему не out-of-tree драйвер? Это же win-win ситуация: habrahabr.ru/blogs/linux/64986/#comment_1814614
        • 0
          я не великий специалист в ядре линукса и не великий специалист в виртуализации — если Вы хотите предметного содержательного ответа то лучше спрашивать не здесь а в блогах соответствующих специалистов — думаю этому есть какие-то объяснения.

          Тут где-то выше была фраза про то, что это связано с стандартом виртуализации, который реализован в гипервизоре, который отличается от того, который реализован в других гипервизорах и уже поддержан в ядре линукса. А, например, out-of-tree драйверы от VMWare реализуют просто некоторые сервисные функции. Хотя еще раз — лучше спросить у специалистов.
  • +1
    Занес топик в избранное и буду его показывать всем кто спрашивает «зачем пересобирать ядро?».
    • 0
      м, причем здесь пересборка ядра?
      • 0
        догадаетесь сами — с меня симпа
        • +3
          Чтоб наглядно продемонстрировать что в ядро может быть вкомпилено много лишнего кода и незачем его в памяти держать.
          • 0
            Точно!) Симпа в карме)
  • 0
    А что плохого в #pragma once?
    • 0
      Прагмы непортабельны и каждый компилятор вправе интерпретировать их как ему захочется. Например, Intel C++ Compiler software.intel.com/en-us/articles/cdiag1782/ заявляет, что "#pragma once is obsolete. Use #ifndef guard instead" (хотя в комментариях говорят что currently not deprecated...) В общем противоречивая штука.
  • +1
    офигенная новость )
    давно я с таким удовольствием не читал комментарии!
  • 0
    Ой, было бы из за чего шум подимать. Ну напишет Майрософт что-то. Пусть себе будет, жалко, что ли? Не нравиться — ну скомпиль себе ядро без этого кода, это ж Линукс. А кому-то, может, правда поможет, порадуйтесь за них.
  • 0
    Мы, линуксоиды, как-нибудь без чужого быдлокода проживём. Не очень-то верится в искренность желания Microsoft «помочь» Linux, зная их многолетнюю подкупно-монополистическую политику. Но, даже если и так, то, непонятно, какая им-то от этого польза.
    Не думаю, что стоит опасаться этих попыток «помощи», ведь всегда есть Линус, GPL и Столлман (|:
  • +1
    Интересный нюанс выяснился.

    После шокирующего известия об открытии 20 тыс. строк кода и предложения внести их в ядро Линукса под, разумеется, GPLv2 выясняется, что они были обязаны это сделать. Фокус в том, что в своей разработке они использовали другой GPL-код, после чего выбора просто не оставалось.

    Тута небольшая заметочка по этому поводу.
  • +1
    Есть большие подозрения что Hyper-V это велосипед на кодовой базе XEN. Пруфлинк.

    Поэтому вообще весь пафос майкрософт у меня ничего кроме усмешки не вызывает.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.