36,0
рейтинг
4 августа 2012 в 15:57

Разработка → Универсальный драйвер, твой выход из сумрака!

Вот есть же на свете люди, которые в одиночку пилят свои гениальные долгострои, бросают, снова продолжают… А об их проектах никто не знает. Alter, автор драйвера UniATA, один из них.

Подготавливая очередной топик с новостями из жизни команды ReactOS, я с изумлением осознал факт, что такая гениальная разработка как UniATA не только ни разу не упоминалась на хабре, но так и пользуется незаслуженным забвением в интернете. UniATA — это универсальный во всех смыслах этого слова драйвер ATA-устройств, разрабатываемый с 2002 года. Ключевой особенностью является то, что драйвер не требует переустановки OS при смене IDE контроллера или мaтеринской платы.

Проект остро нуждается в тестерах!
UPD Alter обнаружил этот топик и получил +10 к морали, в результате вышла
Версия 0.42h
  • Первые тесты AHCI ATAPI прошли успешно.
  • SATA и AHCI ATAPI теперь не переключаются в PIO-режим для исполнения команд отличных от чтения и записи.
  • Добавлена поддержка эмуляции SCSI-команд READ16/WRITE16/VERIFY16/READ_CAPACITY16. Это нужно для расширения адресного пространства LBA до 64 бит, что дает возможнлсть работать с дисками более 2Тб, которые используют более 32 бит для LBA. Note: дисковые драйверы верхнего уровня тоже должны поддерживать эту возможность.



UniATA на данный момент обеспечивает поддержку:

  • NT3.51 (в т.ч. на i386), NT4, 2000, XP, 2003, 2005, Vista, 7, ReactOS
  • всей линейки режимов DMA, UDMA0-UDMA6 (ATA-16/25/33/44/66/100/133) на известных контроллерах и базового DMA — на совместимых
  • жестких дисков объемом больше 128Gb (LBA-48, EnableBigLba)
  • SerialATA (SATA, SATA-2, SATA-3), AHCI rev. 0.95 — 1.30
  • большого списка IDE controllers, а также любых других ATA/ATAPI совместимых контроллеров.
  • горячая замена IDE устройств в OS младше w2k
  • внутреннюю очередь команд и исполнение операций чтения/записи в более оптимальной последовательности
  • user-mode утилиту atactl для управления ATA/ATAPI устройствами. Можно находу менять режим передачи данных (PIO/DMA/UDMA).
  • настройки кеширования, скорости и многого другого в Registry
  • список плохих/ненадежных блоков, чтобы драйвер не мучал диск, а сразу возвращал ошибку (Nikolai Vorontsov).

Зачем и кому нужен такой драйвер? Рассказываю: UniATA имеет смысл поставить, если к новой материнской плате не прилагаются драйвера для вашей старой операционки. Или наоборот — есть старая плата, на которую нужно водрузить новую винду. Конечно, есть стандартные встроенные драйвера, которые наверняка это железо опознают и будут с ним работать. Но как… В PIO режиме, т.е. 0.5-3 Мб/сек. А UniATA будет работать в DMA или UltraDMA режиме, что существенно (иногда даже в 10 раз) быстрее. А вот еще одна проблема — новые винты объемом больше 128 Гб (LBA-48 или BigLba). В старых операционках их поддержка не предусмотрена вообще, а новые требуют последних Service Pack'ов. Поддержка таких винтов в UniATA встроена. И наконец — ситуация смены материнской платы. Обычно это нетривиальная задача. Если просто сделать замену, драйвера от предыдущей платы не опознают новый IDE контроллер и система не загрузится. Придется возвращать плату назад, принудительно менять драйвера на стандартные, снова менять плату и устанавливать новые. О том, чтобы ходить со своим загрузочным винчестеров к друзьям в гости (или на работу) можно забыть (либо довольствоваться скоростью 0.5-3 Мб/сек). Поскольку UniATA поддерживает большой список контроллеров и в дополнение к списку понимает почти любые стандартные (обычные onboard primary/secondary), такая проблема тоже оказывается решенной. UniATA также понимает новые SATA и AHCI контроллеры. Ниже можно почитать более подробный (и более технический) список полезностей.


Скачать сам драйвер, исходники, посмотреть историю версий можно по ссылке
alter.org.ua/ru/soft/win/uni_ata
Речицкий Александр @Jeditobe
карма
29,2
рейтинг 36,0
it-евангелист
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

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

  • –8
    Ключевой особенностью является то, что драйвер не требует переустановки OS при смене IDE контроллера или мaтеринской платы.

    Я не совсем понял, о чем речь, потому что обычный SATA диск с виндой семеркой спокойно заведется в другом компьютере с абсолютно другим железом.

    А с линуксом такой проблемы нет даже с древними ATA-дисками.
    • +23
      Если у винды не будет драйвера на контроллер — не заведется
      достаточно сменить режим работы ahci на ide — уже стоп 7B словите
      • 0
        ХР может и да. А вин7 (которая и упомянута в комментарии выше) прекрасно позволяет менять туда-сюда (с установкой драйверов после первой в её истории загрузки, естественно).
      • +2
        В обратную сторону, с IDE на AHCI — словим. А в Вашем сценарии — нет.
    • +4
      Мне не раз помогал, но с более старыми ОС (2003, XP).
      • –18
        Сам себя не похвалишь, никто не похвалит?
        • +9
          Вы нарочно или прикидываетесь? :)

          Основной разработчик этого драйвера — Альтер.
          Я же, как и другие, в силу своих потребностей отсылал ему патчи, когда нужно было что-то изменить.
  • НЛО прилетело и опубликовало эту надпись здесь
  • +3
    Вещь хорошая, особенно в отношениях с VIAшными контроллерами, где бывают чудеса, вроде:«DMA только для одного устройства в канале...»
  • –14
    Что такое «драйвера для ATA»? Вы имеете в виду модуль ядра? Ну так в чём проблема? Есть и работает.

    … А, догадался. Уровень поддержки windows в reacos дошёл до такого уровня, что теперь reacos страдает той же ерундой, что и винда, требуя установки драйверов по каждому чиху.

    Ну-ну, удачи, виндузятники.
    • –6
      линух тоже требует драйверов на всё подряд. просто они по дефолту вкомпилены все.
      • +2
        Они не вкомпилены, моноядра — это какой-то бред (кроме эмбеддеда). Модули лежат себе мирно в /lib/modules и никому не мешают. Воткнули новое устройство — модули загрузились. Не воткнули — не загрузились.

        И никаких, нафиг, распаковок installshield'а, подтверждений сертификатов, сёрфинга по www в 16 цветах в поисках 300Мб блоба драйверов и т.д. Заметим, речь не только про generic устройства, но и про всякую экзотику, типа разных рейд-контроллеров, HBA и т.д.

        Что мешает сделать MS так же — не понимаю, кстати.
        • +1
          сменил я недавно на гвинпине рут с ext3 на btrfs — и система не загрузилась.
          ибо /boot/ тоже на нем же (ноут, не выделяю) — видите ли, у груба оказалось не вкомпилено btrfs.
          пересобрал образ груба — загрузился, но осадок «а-ля винда» остался.
          • +2
            Ну, могу, конечно, отмазаться, мол, груб — не линукс, но да, всё, что связно с грубом, у меня всегда вызывало некоторое недоумение. Начиная от поведения в многодисковых (>26) конфигураций и заканчивая тем, как он сам из себя ОС изображает.
            • 0
              груб1 лучше был, в общем.
              а так… если в initrd нужный драйвер не сложили — ядро тоже не загрузится на новом железе.
              так что и у ядра есть особенности с дровами.
              • 0
                Ну, насчёт «нового железа» до уровня, чтобы линукс не признал за «своего» AHCI или, там, ATA — это суметь ещё надо.

                А дебиан, кстати, при установке спрашивает — все дрова в initrd класть, или только кастомные. По-умолчанию (т.е. в обычном режиме установки) кладутся все, так что загрузится.
                • +2
                  ну так и сборки типа ZverDVD тоже по умолчанию складывают все дрова на всякие извращения :) пришли к тому же. дрова есть, а как и когда их ставить в систему…
          • 0
            А btrfs уже вышел из бета стадии? Готов к продакшену или ещё нет?
            • 0
              Ещё лет пять, не меньше
              • 0
                в следующем году уже войдет в RHEL.
                • 0
                  да ладно, вот с ЭТИМ?
            • 0
              нет, я как мышки — плакаю колюсь но менять что-то обратно вломы.
              как по мне — тормознее, чем ext4. уж на что ext4 тормоз по сравнению с ext3.
              • 0
                Ну если ставите заведомо тестовый продукт, странно как-то жаловаться на проблемы.

                Помнится при появлении ext4 такие же проблемы были с грабом.

                И с каких это пор ext4 стал тормозом по сравнению с ext3? Я прекрасно помню, что переходил на ext4 исключительно из соображений производительности, и оно так и оправдалось. Чего стоило хотя бы подвисание фс при удалении больших файлов в ext3.
                • 0
                  пока стояло ext4 я раз в 2 недели примерно перезагружался, так как FS вылетала в RO.
                  лечилось ребутом, когда оно автоfsck обнаруживало и фиксило свои пропажи и всё работало дальше.
  • 0
    А как оно с виртуальными дисками, а-ля XEN / VirtualPC / VirtualBox / KVM / QEMU / VMWare?
    • 0
      и как оно с RAID контроллерами «аппаратными»? Типа того же LSI
      • 0
        Очевидно, что «никак». aaacraid с mp2sas не имеют ничего общего.
        • +1
          ну как-то же оно торчит в систему без своих подробностей. хотя бы в таком виде оно с них грузится?
          • 0
            Насколько я понимаю, оно предоставляет старинные BOIS'овские вызовы по чтению секторов. Почему они не используются ОС для работы? Потому что они 16-битные и предоставляются только для одного устройства. Кроме того, разумеется, этот вызов не может обработать современный массив в несколько десятков терабайт.
    • +1
      думаю сможет заменить драйвер стандартного IDE, но не паравиртуальные.
  • +3
    Использовал исходники UniATA для работы с HDD через I/O порты (под виндою). Вырезал только алгоритм чтения IDE_IDENTIFY в PIO режиме.
    В коде есть куски, напоминающие «костыли». Но а как без них, коли костыли есть и в самих железках.
    Вот то что ACHI реализивали — это действительно подвиг.
  • –12
    Вопрос один: НАФИГА? (здесь должна быть баянная картинка с троллейбусом из буханки хлеба)
    Зачем нужно ставить старую ось на новое железо? Так уж захотелось некрофи^Wностальгии — можно юзать виртуалку. А зачем ставить новую ось на старое железо? Оно ж там будет люто тормозить, или не поддерживать половины фич типа Aero. В конце концов, хочется поизвращаться — можно линукс поставить. Для особых извра^Wценителей есть специальный дистрибутив даже — Sex Linux.
    • +6
      Ну елки палки… вариантов миллион (это помимо исследования и обучения), например старый софт дорогой дорогой, сложный сложный, разработчики и саппорт к нему уже давно 'померли', старое железо сдохло туда же, а на новом не запускается, драйверов нема.

      Это кстати вполне обычная ситуация, тьма администраторов по поддержке старого страдают и стонут от этого (а как будут стонать лет через пять).
    • +4
      Навскидку придумал пример (немного синтетический, но всё же) — какая-нибудь учётная система/специфическая программа для медучреждений или драйвер для работы с хитрым станком за миллионы долларов. И заточено это под условную Win98, а в более свежих версиях прикрыты те лазейки, через которые оно работало. Старый комп сдох, а переписывать софт под новую ось — в порядки дороже, чем установить легаси систему на новое железо.
      • +7
        как то немного поработал в конторе, где критерий замены софта и покупки нового железа — невозможность найти запчасти на ebay.

        так вот они до сих пор сидят на альфах 80-х годов и в ус не дуют
      • 0
        Если это станки или мед оборудование, то там довольно специфичные компы, и до сих пор их можно купить вполне новые процессорные платы, например, с embeded 486 и подобными процами. на которых этот софт спокойно продолжит работать.

        Вот с десктопными приложениями всё несколько похуже, хотя и тут можно поставить какой-нить ITX на VIA, на котором прекрасно будет работать win95.
  • 0
    Написано про Vista/7, а инструкция по установке только для XP.
  • 0
    В последней версии UniATA v0.42e2 автор писал, что AHCI ещё не работает как положено. Если получиться реализовать аналогичную Win7 нативную поддержку AHCI — это будет замечательно.

    Что касается синего экрана 0x0000007B при смене контроллера (обычно при замене материнской платы), то он встречается и на WinXP, и на Win7. В обоих случаях легко восстановить загрузку системы, но на Win7 это делается чуть проще.
    • 0
      Версия 0.42h (rar/tgz) — 408.9 Kb/643.4 Kb.
      Первые тесты AHCI ATAPI прошли успешно.
      SATA и AHCI ATAPI теперь не переключаются в PIO-режим для исполнения команд отличных от чтения и записи.
      Добавлена поддержка эмуляции SCSI-команд READ16/WRITE16/VERIFY16/READ_CAPACITY16. Это нужно для расширения адресного пространства LBA до 64 бит, что дает возможнлсть работать с дисками более 2Тб, которые используют более 32 бит для LBA. Note: дисковые драйверы верхнего уровня тоже должны поддерживать эту возможность.
  • +1
    А чем можно помочь проекту? Не программист, просто много вожусь со старенькими компами, типа for fun.
    • +1
      Протестировать на разном железе и операционках и отослать фидбек автору.
  • 0
    FIX HDC из HirenBoot CD уже не в моде?
  • 0
    Прошлый опыт был неудачный, вот такой вопрос — я клонирую образы, где диск стоит в режиме IDE. Установка UniATA даст возможность клонировать и включать ACHI на разных материнках, клонируя один и тот же образ?
    • 0
      в идеале — да.

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