Выживание Windows XP x32 на современных ПК c процессором Intel

Речь пойдет про платы периода 2016-2021+, т.е. процессоры Skylake и выше. На платформах AMD почти те-же проблемы, но проблем чуть меньше. Все что относится к Windows XP также применимо к Windows 2003 Server за исключением мелких деталей. C Windows XP/2003 x64 ситуация тоже схожа, но изначально условия несколько благополучнее (нет проблем с драйверами в системах с памятью выше 4Гб). Статья не является "пошаговой инструкцией", в основном теория и способы решения проблем. На вопрос "Да кому сейчас нужен этот XP?" мой персональный ответ - это хобби, протащить алмаз код 2001 года через паутину современного железа...

Если попытаться установить XP c установочного носителя(cdrom/usb/hdd), установщик вывалится в BSOD 0xA5.

Этот код ошибки относится к подсистеме ACPI, которая выбирается установщиком как приоритетная. В установщике можно выбрать режим без использования ACPI, затем это отразится на работе Windows - 1) ограниченное управление питанием процессора/частоты и возможное ограничение на кол-во обнаруженных ядер, 2) часть устройств содержит код инициализации/управления/... в ACPI таблицах DSDT/SSDT, этот код никогда не будет задействован. Я режим "без ACPI" никогда не использовал и не тестировал, возможно есть и другие ограничения (самое известное - отсутствие программного способа выключить компьютер).

Вернемся к приоритетному режиму, с активным ACPI. Cтандарт менялся, выходило несколько версий, для нас ключевые версии ACPI 1.0b и ACPI 2.0, разница между ними существенная, а вот разница между ACPI 2.0 и например ACPI 6.1 со стороны Windows я подозреваю отсутствует (imho). Windows XP поддерживает только версию 1.0b, Vista и выше поддерживают обе версии. Производители мат. плат ориентируются на актуальные версии Windows, совместимость с Windows XP больше не требуется, поэтому код bios реализует только версию 2.0(или одну из последующих версий). Основные отличия стандарта 2.0 от 1.0b:

  1. синтаксис ACPI Source Language (ASL) расширен на ~13 новых комманд

  2. появился 64-битный доступ к памяти/полям структур

  3. на хранение/арифметику всех целых чисел выделяется 64 бита вместо 32 бит.

Причина почти всех BSOD 0xA5 это пункт 1) ACPI Source Language (ASL), для решения этой проблемы существует два различных файла ACPI.sys реализующих новый синтаксис. Второй файл взят из бета версии Longhorn и имеет также реализацию пуктов 2) и 3)

Итак, установщик более не радует нас BSOD 0xA5, можно устанавливать Windows c активным ACPI. Для управления используется клавиатура, после первой перезагрузки включается графическая часть установщика и можно использовать еще и мышь. Эти устройства давно с USB интерфейсом и у большинства пользователей с ширпотреб. материнскими платами подключены к портам южного моста. Южный мост у Intel еще с предыдущих платформ переименован в PCH (Platform Controller Hub) и на микросхеме H110(и выше) содержит только USB3 контроллер (в предыдущих платформах Ivy/Sandy/??? был совмещенный USB2/USB3 контроллер). Windows XP имеет встроенные драйвера только на USB1/USB2, для USB3 встроенные драйвера появились только в Windows 8. Так как же управлять USB-клавиатурой подключенной к USB3 контроллеру в установщике без драйверов? Помощь приходит со стороны мат. платы, почти во всех BIOS есть эмулятор PS/2 клавиатуры/мышь. Это программный эмулятор, работающий на уровне SMM (System Management Mode), он преобразует аппаратные события со стороны USB3 контроллера в виртуальный IO порт 0x60-0x64, для Windows и даже DOS это выглядит как аппаратное устройство и они активируют свои PS/2 драйвера. Эмулятор ущербный, с клавиатурой еще как-то можно работать, но мышь эмулируется на уровне "если прицелится, то можно нажать где-то на экране", но для установщика этого эмулятора хватает.

Управлять установщиком теперь возможно, далее будет BSOD 0x7B, про эту ошибку все и так знают - Windows не может найти ни одного поддерживаемого контроллера дисков(накопителей), решение тоже всем известное - в файлы установщика интегрировать AHCI драйверы производителя, для Intel есть много вариантов:

  1. простой и супер универсальный iaStor v11.2.0.1006

  2. продвинутые Intel RST/RSTe

  3. StorAHCI из Windows 8 как в виде портированных исходников от минимум двух авторов так и в двоичном виде

  4. MS AHCI из Windows 7

  5. опенсорсный UniATA

Для NVMe накопителей также есть несколько вариантов универсальных драйверов: open source OFA 1.3/1.5, Windows 7 NVMe Driver, Samsung NVMe Driver

В итоге мешающие препятствия преодолены, Windows можно установить и загрузить до состояния графического рабочего стола. Но работать в такой системе некомфортно, решаемые(-частично) проблемы:

1) по прежнему используется неэффективнaй PS/2 эмулятор мыши/клавиатуры

2) некоторые приложения ведут себя странно, рывки анимации или похожие глюки

3) процессор всегда потребляет существенную мощность

4) доступно 1.5-3.2Гб ОЗУ при установленном размере физической памяти 4Гб и выше

5) нет доступа к дополнительным накопителям с GPT разметкой

6) расширенные инструкции AVX/AVX2/AVX-512

По каждому пункту:

1) Вместо эмулятора нужен драйвер USB3 контроллера, Intel для XP драйвер не выпускала. После ряда экспериментов выяснилось что для Intel USB3 контроллера подходят три различных драйвера с разной стабильностью и совместимостью, самый лучший это портированный из Windows 8 драйвер от Microsoft. Для активирования более быстрого UASP режима накопителей есть три драйвера почти одинакового качества: а)VIA uas б) Microsoft uaspstor в) Etron uas. USB3 драйвер можно также интегрировать в установщик, но процесс достаточно сложный. Драйвера сторонних производителей USB3 для Windows XP это отдельная тема, "кто у кого что украл и при чем здесь индусы"

2) Проблема связана со счетчиком производительности. В разных версиях Windows для этого счетчика разный выбор из доступных аппаратных способов. Даже между Windows XP SP1 и SP2 выбор разный. Для SP3 выбор состоит из двух вариантов: а) ACPI Timer б) TSC процессора. Выбор определяет BIOS. С этим счетчиком актуален вопрос "Кто же напортачил, авторы спецификации ACPI 2.0, которые сэкономили на одном бите регистра и этим сломали совместимость c пред. стандартом или это авторы современных BIOS, которые своенравно интерпретируют назначение этого бита ?" Мое маленькое расследование почему важен этот бит:

Аппаратный таймер ACPI и предположительно часть других аппаратных ACPI-блоков на современных Intel-мат. платах отключены за ненадобностью (не используются в Windows 7-10, но могут использоваться в Vista или других "не windows" ОС). Этот бит говорит операционной системе можно ли вообще использовать таймер ACPI. Логично не устанавливать этот бит поскольку таймер отключен, но BIOS по прежнему устанавливает этот бит , так как в ACPI 2.0 за ним закрепили еще одну функцию - индикатор наличия рабочего HPET таймера. От таких "оптимизаций" у Windows XP сносит крышу и она использует выключенный ACPI таймер как счетчик производительности(прошедшего времени). Решение проблемы - один из системных файлов патчится чтобы состояние этого бита интерпретировалось всегда как "0" и выбор счетчика был только один - TSC. Еще один камень в сторону авторов BIOS - на плате Gigabyte H110 при отключении HPET в bios этот бит по прежнему равен "1", т.е. явная ошибка

3) Проблема снова связана с отключенными аппаратными ACPI блоками. В стандарте ACPI описаны два режима пониженного потребления мощности С2 и С3, для перехода процессор должен записать определенные значения в определенные порты ACPI железа, потом происходит БАХ и наступает мрак, на процессор тактовые импульсы больше не подаются + остальная магия, связанная с состоянием внутреннего кэша и т.д. Поскольку теперь ACPI на плате в урезанном режиме, Windows XP в режимы С2/С3 не переходит, хоть и записывает все что нужно в порты. Мрак не наступает, процессор крутится как ни в чем не бывало. Логично спросить - а как же экономят энергию Windows 7-10? Очень просто - они используют только возможности центрального процессора без задействования подсистемы ACPI.

От центрального процессора можно добиться два варианта:

  • классическая инструкция hlt, можно переключится только в режим С1

  • инструкции monitor/mwait, переключается в С7 или С10.

    Решение для Windows XP - патчим один файлик чтобы вместо ACPI С2/С3 использовались те-же два процессорных способа

4) Проблема давно известная, это программное ограничение появилось в Windows XP SP2. Для решения существует несколько известных утилит, PatchPae или более поздний комбайн "fix128" (все они некорректно меняют DMA функции, см. далее). Потом выяснилось что проблема зарыта гораздо глубже и виной тому Microsoft - она не смогла сделать удобное API для программирования DMA-передач. Вместо этого был монстр, который состоял из закрытых абстракций, коллбаков и подобных трюков. В теории через такой API все равно можно правильно программировать, но так смогли не только лишь все. Когда у вас менее 4Гбайт памяти, то драйвер какого-то устройства работает нормально, но если память переходит за эту границу, драйвер начинает вести себя по другому. Вместо того чтобы заменить API и мотивировать сторонних разработчиков исправить существующие драйвера, Microsoft пошла короткой дорогой - в SP2 вырезана поддержка памяти выше 4Гбайт, все DMA-передачи теперь также ограничены максимальным 32-битным адресом, система сертификации драйверов дает добро на драйвера, которые даже не работают с памятью > 4Gb, разрабы больше не парятся на тему "а как наш драйвер поведет себя на >4Гб ?"

Полноценного решения проблемы нет в принципе, если у вас есть некое устройство, но его драйвер некорректно работает с памятью >4GB, то устройство "в пролете", надо возвращать обратно лимиты по памяти. У Microsoft тоже есть такой драйвер - печально известный драйвер USB2. Тот же драйвер для Windows 2003 не имеет подобной проблем, но внутри он "другой", с корректным программированием DMA.

Вместо старых утилит снятия ограничений, обновилась WinXPPAE v3.5 от Daniel K., только она содержит правильный патч DMA-передач, восстанавливающий эквивалентный код из SP1 и при этом не создающий новых проблем.

5) Когда-то Paragon Software выпустил GPT драйвер для Windows XP, с тех пор его и используют. Альтернативный вариант это файлы из Windows 2003 поверх встроенных в XP. Для загрузки с GPT раздела этого не достаточно, так как необходима сквозная поддержка начиная с кода бут сектора, есть удачные эксперименты с использованием сторонних загрузчиков

6) AVX и выше требуют поддержки со стороны ОС так как нужно сохранять куда-то новые регистры при переключении контекста. Решение частичное - когда то Microsoft расщедрилась и заранее добавила новые поля как резервные в область сохранения контекста. Этих полей достаточно для сохранения всех AVX регистров в x32 режиме, но уже не хватает для всех AVX-512 регистров. Если речь про Windows XP x64, то места по-моему не хватит даже для всех AVX регистров, их там банально больше в два раза.

А теперь время "печали", список нерешаемых(нерешенных) проблем:

  1. Отcутствие WINE for Windows XP (есть конечно One-Core-API, но у него реализация на мой взгляд безкомпромиссная - заменять существующий код XP на код ReactOS/Wine ). Это самая существенная проблема выживания Windows XP, из-за неё почти все новые версии выпускаемого ПО не работоспособны(функция xxx не найдена в библиотеке yyy)

  2. существующие ACPI.sys не дотягивают до уровня хотя бы vista

  3. загрузка Windows 32бит из современного 64-битного UEFI режима

  4. установка/загрузка с GPT накопителя

  5. нет TRIM "на лету" для SSD, можно только периодически запускать сторонние утилиты для принудительного "маркирования" всех неиспользуемых секторов как свободных

  6. поддержка DirectX 10/11 видео-драйверов с более поздних Windows

P.S. Есть пара законченных проектов для ковыряния в кишках ядра XP и портирования драйверов:

Комментарии 50

    +1

    Объясните, а как на XP поставить все доступные обновления? С мелкософта больше не ставится, а на старых машинах переодически возникает необходимость переустановки винды.

    +6
    Но ведь можно поставить гипервизор и запустить XP внутри него, при этом производительность почти никак не упадет(сомневаюсь что портированные драйверы настолько эффективны).
      0
      А можно подробнее про запуск в гипервизоре? Какое конкретно ПО имеется ввиду?
      А то я запускал winxp и в VMware, и в Виртуалбоксе, но в некоторых древних играх все-равно были артефакты и т.п.
      +7
      Вроде ж сливали исходники XP, нет? Можно много чего пофиксить…

      А вообще — тут как нельзя уместен анекдот про стюардессу, имхо )
        +4

        Исходники далеко не полные. Нет, к примеру, кода oleaut32.dll. Это, конечно, не относится к описанным здесь проблемам, но и части ядерных вещей недосчитаешься.

        Про стюардессу не поддерживаю

          +1
          Сливали SP1. Это кодовая база ещё до пресловутого W32/Blaster с компанией и, соответственно, до субботника месячника годичника безопасности в MS, после которого SP3 уже местами сильно другой продукт.
            +1
            А вообще — тут как нельзя уместен анекдот про стюардессу, имхо )
            В бюджетке вообще не уместен — ХРюша повсюду.
            +1
            Вы вкратце обмолвились про Windows 2003, в котором вроде как меньше проблем. Может, проще использовать его вместо ХР, или там есть какие-то проблемы совместимости.

            Почему спрашиваю, дома был не очень мощный комп, на котором во времена Vista/7, что называется «до упора» стояла 2003, и вроде никаких проблем с совместимостью с ХР, включая бухгалтерское ПО замечено не было.
              +1
              Я в XP-шные времена пытался пользоваться 2003 в качестве десктопной системы. Основной проблемой для меня оказалось то, что энное число производителей запрещали установку своих десктопных версий софта на серверные системы, требовали покупать соответствующие серверные версии, которые а) были на порядки дороже и б) все как один обладали кошмарнейшим интерфейсом в стиле «кровавый энтерпрайз».
                +2
                в Windows 2003 нет некоторых типично-XP проблем:
                1) Не вырезан доступ к памяти выше 4Gb, т.е. со сторона ядра нет ограничений, но проблема со сторонними «недоделанными» драйверами никуда не делась
                2) Вместо устаревшего scsiport есть родной storport, большинство портированных драйверов накопителей требуют storport
                3) Поддержка GPT разделов для незагрузочных дисков
                4) Ядро новее, содержит больше функций которые не нужно эмулировать на XP
                В целом Windows 2003 лучше, но среди моддеров она непопулярна, также непопулярны x64 версии XP/W2003
                +6

                Господи, это конечно челендж, но зачем всё это? Если уж приспичило запустить XP — запустите её на виртуалке.

                  –1
                  Приспичило? А это вполне насущные задачи при современном уровне нашего образования. Преподавателям по 70 лет — это далеко не редкость сейчас.
                  Несколько лет назад Win3.11 ставил в виртуалке DOS. А как быть, если преподаватель в Бауманке знате только эту версию Spice (древний симулятор электрических цепей, если кто не в курсе), что работает на 3.11
                  С Turbo Pascal 6 было проще — прикрутил запуск Dosbox в Notepad++ по F9, stderr перенаправил в файл и его открываем отдельным окном по завершению компиляции — все в одном скрипте. Ну то есть и его можно было запустить в виртуалке XP, но IDE там, по сравнению с современными… не будем о грустном.
                  Проектирование АЛУ микропроцессора на 556РТ5 на бумаге. Еще много всего было интересного
                    +1
                    значит ему порабы давно на покой, а не сидеть до последнего не пуская аспирантов и современные технологии.

                    лично у меня поэтому средний выпускник бауманки и тд вообще не котируются, слишком уж много примеров дуб-дубов…
                      0
                      Пора бы, только на замену из молодых и умных идти работать на такие зарплаты и такие условия как предлагаются сейчас в большинстве ВУЗов обычно желающих идти вообще нет. Поэтому работают «те кто еще остались в живых».
                        +1

                        Проблема со старыми преподавателями существует практически везде в ExUSSR, вне зависимости от ВУЗа. Разве что в нескольких ВУЗах, например, в ИТМО ее решили как-то.

                        Сам по себе возраст - не всегда плохо, тот же матан или ТБ. Есть фундамент и есть инструменты. С первым у нас все нормально, а со вторым - полный швах.

                    0

                    А про One Core API что скажете? Оно больше решает проблем или создаёт? И как его вообще устанавливать? Не нашел ни одной инструкции

                      0
                      Насчет проблемы №4 и «загрузка Windows 32бит из современного 64-битного UEFI режима»:
                      у Windows XP есть 64-битная версия:

                      ссылка
                        +1

                        Это по сути Win2003 под видом WinXP...

                        +9

                        И эти люди говорят что с линуксом "надо трахаться"...

                          +1
                          Думаете если ставить линукс с ядром версии эдак 2.4 проблем было бы меньше?
                            +1

                            Во первых зачем, во вторых думаю меньше, да.

                              0

                              Последние полгода бился над запуском специфического железа на новом компе. Старый сдох, а железо нужно. Проблема в том, что для относительно свежих матплат (~10 лет давности) требуется относительно свежее ядро (как минимум того же срока), но поддержка нужной железяки из них уже выпилена.

                              Трахаться с ядром и драйверами приходилось практически во всех позах из камасутры. Ничего не вышло, в итоге купили ретро-комп на авито, вот такая история...

                            +1
                            Смотря с каким. Однажды лично наблюдал, как простое скидывание чего-то там на флешку превратилось в долгую и сложную процедуру. Насколько я помню, это была Fedora, и на ней не было нужных драйверов.
                            +1
                            Использовал ХР долго, но купил недавно 1050Ti и драйвера под ХР не нашёл. Пришлось отказаться от этой ОСи, заменил на 32х битную 7-ку, в общем то устраивает. Мне надо что ДОС программы без всяких проблем запускались.
                              0

                              Не пробовали DOSBox? Тогда не будет проблем с х64 семеркой.

                                0
                                Мне надо что ДОС программы без всяких проблем запускались.

                                Так ведь это… Последняя версия Windows, запускаемая поверх DOS была 98SE. И то не сказать чтобы всё запускалось ещё тогда.

                                Вы бы лучше в сторону Линукса смотрели и DosEMU, по моим ощущениям гораздо лучше работало чем даже DosBox.
                                  0
                                  Так ведь это… Последняя версия Windows, запускаемая поверх DOS была 98SE.

                                  В ХР был очень хороший ntvdm, который выполнял программы DOS, пожалуй, ничуть не хуже, чем нативно в Вин9х. DOSBox/DosEMU — это не то. Там ведь нельзя запускать DOS-программы просто как «родные» в ОС, прозрачно для пользователя.
                                0
                                Я не знаю, зачем вам это надо. Разве что для удовольствия :D
                                  +1

                                  Одна из причин - софт, который работает только на ХР. Есть у меня знакомый, работает админом в строительной компании. Купили они когда-то софт, а контора его родившая позже развалилась. Переводить проекты на другую платформу - не вариант, вот и приходится тащить это легаси, работающее только на ХР.

                                    0
                                    Ну а с практической точки зрения не лучше ли просто запустить ХР в вмвари какой-нибудь, нежели кропотливо собирать нечто по драйверу, по файлику, работающее на современном железе? По-моему, так делать — это только for fun можно :)
                                      0

                                      Если когда-то купленное ПО работает только в XP, гораздо логичнее купить сборку, которая адекватно тянет XP. Вроде ещё продают платы под 775-й сокет новые. Там хоть все работать корректно будет. А тут что - сплошные костыли, один костыль на другом с хз каким результатом.

                                        0

                                        Хр и на 1155 вполне работает

                                    +1
                                    И ладно бы с патчами и обновлениями… Другое дело, что теперь её активировать можно не во всех странах… Вот например старый добрый «XP Mode» из-под Hyper-V, выбираешь активацию «По телефону», а предлагает позвонить на уже давно несуществующий номер, а то и кодом города, типа 7-095-…
                                    Или придётся ключ продукта менять
                                    Где-то на дисках-реаниматорах валялся какой-то «крекер» (или крэкер?), не помню название…

                                    Останется разобраться, как снова задействовать этот сканер на ней, ведь это ж не Virtual PC, где всё работало через меню [ USB ] – [device_name – Подключить] (используя «доп. USB 1.1 или 2.0» из PCI), а Hyper-V :(
                                    В любом случае, XP не умрёт до тех пор, пока не воскреснут производители оборудования, написавшие драйвера только для XP, и не перепишут их хотя бы для Vista/7 32/64-bit
                                    кстати, у одного лазерника почему-то драйвера исключительно 32-разрядные, об этом даже упомянуто в Руководстве по установке
                                    При использовании 64-разрядной операционной системы
                                    В зависимости от страны и региона драйвер MF и средство MF Toolbox могут не поддерживаться 64-разрядными операционными системами
                                    Собственно, теперь я сомневаюсь, что 32 бит когда-либо умрёт…
                                    0
                                    установка/загрузка с GPT накопителя

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

                                    Для этого можно взять драйвер дисков из ReactOS (он портирован с десятки). Поддержка TRIM нужна со стороны драйвера ФС тоже, тут пока не так всё хорошо, в ReactOS это умеет только драйвер FAT32 и Btrfs.


                                    загрузка Windows 32бит из современного 64-битного UEFI режима

                                    С этим должен помочь сторонний загрузчик Quibble. Правда, там не хватает драйвера NTFS. Можете дописать :)


                                    Отcутствие WINE for Windows XP (есть конечно One-Core-API, но у него реализация на мой взгляд безкомпромиссная — заменять существующий код XP на код ReactOS/Wine )

                                    А что не так в этом подходе? Можно патчить бинарники, но бесконечно это делать невозможно, в какой-то момент патч будет больше самого бинарника :)

                                      0
                                      Проблема с TRIM вообще сильно преувеличена. На SSD cо встроенной функцией «сбора мусора» (а это почти все более-менее современные модели умеют) он в общем-то и не нужен — диск сам регулярно расчищает в фоновом режиме неиспользуемое место под последующую запись и без «подсказок» со стороны ОС и ФС в виде TRIM. Поддержка TRIM была действительно важна только на самых ранних моделях SSD, которые такого еще не умели.

                                      Единственная разница — сборщиком мусора «зачищается» не все свободное на диске пространство, как при корректной работе TRIM, а только какой-то объем — порядка 5%-15% от общего объема диска обычно. Но эту разницу можно заметить только если записывать за раз (без пауз в работе под фоновое обслуживание) очень большие объемы данных — превышающие объем расчищаемый сборщиком.
                                        0
                                        он в общем-то и не нужен — диск сам регулярно расчищает в фоновом режиме неиспользуемое место под последующую запись и без «подсказок» со стороны ОС и ФС в виде TRIM

                                        Мне кажется, вы что-то путаете. Я не специалист по SSD, но чисто по здравому смыслу, каким образом диск может узнать, что какое-то место неиспользуемое, без подсказок со стороны ОС? Вы вот записали файл на диск, он выделил под него несколько страниц, закинул туда данные. А потом вы взяли и удалили этот файл. Всё, место-то свободное, но файл ведь лежит там же, где и лежал, и что он уже дохлый, знает только файловая система. Как диск догадается, что эти страницы можно переиспользовать, если ему TRIM не отправить?
                                          0

                                          Есть таблица индексных дескрипторов и карта блоков - в них 0ки поставили и все.

                                            0
                                            Но она же есть только для файловой системы, а SSD про неё ничего не знает. Может, его вообще под FAT32 разметили :)
                                            0
                                            Не путаю. Это стандартный тест во многих обзорах SSD, где такая работа проверяется на практике (да и сам проверял — у меня как раз на XP еще несколько машин с SSD имеется). Например на 3Dnews во всех обзорах раньше был обязательный пункт в тестировании всех SSD на предмет наличия и корректности работы «сборщика мусора» без команд TRIM (наверно и сейчас продолжают тестировать, но просто давно свежих обзоров SSD не читал).

                                            А работает это за счет того простого факта, что реальный объем всех современных SSD, т.е. суммарный объем всех ячеек установленных в нем микросхем флэш памяти, существенно больше чем объем доступный хосту (ФС/ОС и в конечном итоге пользователю). Небольшая часть этого «запасного» объема используется под хранение прошивки и для «подменного фонда» (замещения вышедших из строя блоков флэша), но большая его часть просто держится в резерве заранее очищена, стерта и подготовлена под немедленную запись без дополнительных задержек.

                                            А так же за счет таблицы трансляции адресов, которой так же пользуются все(кроме опять же может самых первых неудачных моделей) SSD — контроллер SSD всегда записывает данные туда, куда ему «удобнее» (по возможности уже в пустые и «стертые» блоки если такие еще есть в наличии) независимо от того, в какой сектор пыталась записать данные ОС. А по таблице потом уже разбирается где и что лежит.

                                            За счет того, что физический объем флэш памяти всегда больше, чем объем адресуемый ОС, по этой таблице контроллеру SSD всегда видны все страницы памяти которым не соответствует вообще ни один сектор со стороны ОС, даже если со стороны ОС заполнен вообще весь доступный объем. Включая вариант, когда он на самом деле уже НЕ заполнен, а хранившиеся данные удалены, но из-за отсутствия ТРИМ, контроллер об этом просто не знает. И которые он может «собрать» (т.к. запись идет по странично, а стирание — по блокам) в фоновом режиме «в одну кучку» и стереть соответствующие блоки флэша и без подсказок со стороны ОС.

                                            Для довольно типового случая SSD объемом в 240 ГБ (причем десятичных, как принято указывать объемы у производителей дисков, т.е. 240*109), реальный объем флэша составляет 256 ГиБ (двоичных, т.е. 256*230 )
                                            Разница около 13%, из которых почти 10% (~25 ГБ) это тот свободный объем, про который контроллер знает, что он свободен, независимо от информирования со стороны ОС.
                                            Просто с таким информированием (через TRIM) этот объем будет больше — к нему прибавится еще и все незанятое место в ФС. А без TRIM через какое-то время (после того как все сектора будут перезаписаны хотя бы по разу) останется только «гарантированный минимум».
                                              0
                                              А, если иметь в виду сборку мусора в этом смысле — про это я в курсе, но это вообще не альтернатива TRIM, а просто дополнительная оптимизация. В таком режиме диск даже при половинном заполнении и более-менее активной работе за пару лет загадится до существенной деградации производительности без TRIM. А если он хоть раз забьется под завязку, даже если вы потом и почистите его в файловой системе, все равно для контроллера SSD он будет полным.
                                        0
                                        файлы установщика интегрировать AHCI драйверы производителя

                                        Мы в ReactOS используем UniATA в основном (с некоторым количеством патчей), однако у нас есть недописанный драйвер storahci.sys, который писался чисто под w2k3.
                                        Не смотрели в эту сторону?

                                          +1
                                          Риторический вопрос: а насколько он недописанный? Если даже вы сами его не используете, пригоден ли он к эксплуатации?
                                          0
                                          Интересно, а не получится использовать что-то типа OpenCore, чтобы создать подходящее окружение? Если эта штука МакОсь загружает — то может и с WinXP справится? Хотя подозреваю, для ХРюши надо будет делать какие-то специфичные модули…
                                            0
                                            Для win98 существует драйвер на основе WINE, загружающий в ядро дополнительные функции, не изменяя при этом системные файлы.

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

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