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

    Вот есть же на свете люди, которые в одиночку пилят свои гениальные долгострои, бросают, снова продолжают… А об их проектах никто не знает. 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
    Метки:
    Фонд ReactOS 196,17
    Операционная система
    Поделиться публикацией
    Комментарии 46
    • –8
      Ключевой особенностью является то, что драйвер не требует переустановки OS при смене IDE контроллера или мaтеринской платы.

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

      А с линуксом такой проблемы нет даже с древними ATA-дисками.
      • +23
        Если у винды не будет драйвера на контроллер — не заведется
        достаточно сменить режим работы ahci на ide — уже стоп 7B словите
      • +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
                        нет, я как мышки — плакаю колюсь но менять что-то обратно вломы.
                        как по мне — тормознее, чем 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 на разных материнках, клонируя один и тот же образ?

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

                                  Самое читаемое