С первых же строк надо оправдать цель этой затеи, ответить на три "почему": почему Windows, и почему именно 7, а также, почему macbook air 2017.

Как бы так зайти, не шибко кружа, к оправданию такого поступка? Windows на macbook это не диковинка, это удобно, надежно и привычно. Ну и позволяет нативно запускать некий специальный софт, который существует исключительно для этой ОС.

Почему Windows 7? Ну есть же люди что увлекаются ретрожелезом? Почему бы не побаловать себя ретро-ОС? Семерка стабильна и очень привычна, всё в ней на местах и не бесит. Пока еще себе можно это позволить, поддержка закончилась сравнительно недавно, и вроде система без обновлений еще не решето.

Теперь о том, что же не так с Macbook air 2017, собственно почему бы просто не поставить "семерку"? Вот тут как раз и суть этой статьи: нельзя просто взять и поставить Windows 7 на свежие макбуки! (боромир.жпг) Настолько нельзя, что на макбуках 2015-2017 годов не запускается даже установщик: висит на черном экране.

Эта статья компиляция личного опыта и перевода удивительно ценной ветки c macrumors. Охватывает позитивный опыт для макбуков с одним видеоядром в до-ретина эпоху. Про более новые модели данных у меня нет.

Проблемы при установке "семерки" сводятся к трем:

  • клавиатура и трекпад сидят на USB3, USB2 хаба нет;

  • накопитель с 2013 года nvme;

  • в EFI макбуков с 2015 года нет ни грамма поддержки legacy BIOS.

Первые две проблемы весьма технически решаются: интегрируются драйвера USB3 и поддержка NVME накопителей. Третьей проблеме стоит уделить больше внимания.

Суть от автора решения вот в чем:

Проблема не в Apple, проблема в Windows, а точнее в таких компонентах:

  1. Предзагрузочная среда из bootmgfw.efi и winload.efi. Для работы требует graphics output protocol (GOP), universal graphics adapter (UGA) или VGA подсистемы EFI для вывода текста для любых не-английских версий ОС, или протокол текстового вывода EFI для английской версии. В основном работает.

  2. Далее, среде требуется GOP с разрешением 1024х768 или 800х600 для отображения заставки с анимированным логотипом Windows. Тут поведение Windows идиотское (термин из оригинального поста), т.к. не стоит делать допущений про конкретные разрешения дисплея в будущем. Apple не предусматривает никаких иных разрешений GOP кроме родного для матрицы (для обсуждаемых макбуков это 1440х900). С другой стороны, если загрузка идет и без отображения логотипа, то исправлять это не обязательно (а загрузка идет).

  3. Главное проблемное место: виндовый GUI которому нужны драйвера. В установщике, Windows будет пробовать использовать для видео любой из встроенных драйверов, но на новом железе встроенных драйверов нет и остается только VGA драйвер. А так как протокол VGA основан на подсистеме BIOS, то работать в EFI он не будет без грязных хаков. Допущение о том, что протокол VGA будет работать на любой не-BIOS системе абсолютно дебильное (опять термин оригинала). Протокол VGA подразумевает использование прерывания int10h и VGA BIOS. Последний, в свою очередь, подразумевает использование реального режима х86, поддержки которого в 64-х битном EFI нет.
    Предположим, мы заставим устанавливаться систему в режиме unattended, и встроим видеодрайвер. Но нет, работать не будет из-за еще одного момента: проблема с регистром VGAE (0x3E) на мосту PCI-E. Даже если драйвера на видеоядро будут установлены, мы ничего на экране не увидим, пока карта не будет в режиме мастера шины PCI Reg (0x04)=7 и в родительском мосту PCI-E регистр VGAE не будет инициализирован значением (0x3E)=8. Если зайти в менеджер устройств по удаленному рабочему столу, то можно увидеть, что видеодрайвер работает нормально, но мониторов в системе нет. Ну и если ДО загрузки Windows установить эти значения в регистрах, а потом передать загрузку bootmgfw.efi, то всё более-менее заработает.

Автор оригинального поста, davidcie написал утилиту, которая:

  1. Разблокирует для записи область памяти C0000:CFFFF где обычно находится VGA ROM. Эта область памяти свободна при загрузке, но заблокирована для записи. Для этого используется EFI_LEGACY_REGION_PROTOCOL,  EFI_LEGACY_REGION2_PROTOCOL или Memory Type Range Registers в зависимости от того, какой метод доступен.

  2. Устанавливается обработчик int10h в область C0000:CFFFF который обрабатывает основные жизненно необходимые вызовы Windows 7 и сообщает об отсутствии поддержки для менее важных.

  3. Заполняет и делает доступной для Windows информацию видео режимов VESA совместимую с используемым адаптером, так ОС получает возможность выводить графику прямо в фреймбуфер, до момента установки полноценного видеодрайвера взамен vgapnp.sys

  4. Блокирует для дальнейшего использования регион памяти C0000:CFFFF

  5. Правит таблицу прерываний чтобы int10h указывал куда надо.

  6. отображает логотип Windows wavy flag или любой другой.

  7. Продолжает загрузку  \efi\microsoft\boot\bootmgfw.efi если такой файл есть на том же разделе, и таким образом загружается Windows.

С теорией всё, перейдем к практике.

Установка может быть выполнена как с флешек (Windows - единственная ОС) так и без флешек вовсе (макось на одном разделе, винда на другом).

Я считаю что удобнее и проще сначала установить MacOS и дальше работать только с встроенным диском, без всяких флешек: это сильно ускоряет все процессы, было бы место. Кстати, о месте: обычный NVME накопитель формата m2 прекрасно устанавливается в macbook с переходником типа такого. Установленная околопоследняя версия MacOS подразумевается.

Шаг 1. Разметка диска.

Утилита Bootcamp весьма успешно разбивает диск на разделы для установки Windows: уменьшает раздел MacOS, создает 10-и гигабайтный ex-Fat раздел для установочного образа и NTFS раздел для Windows. Схема прекрасная, но делать так мы не будем потому, что при первой же загрузке в MacOS этот раздел уничтожается и свободное место присоединяется к разделу MacOS. А перезагружаться придется. Потому в Disk Utility уменьшаем основной раздел MacOS до любого разумного значения и на освободившемся месте создаем ExFAT раздел размером гигабайт 10-16 и NTFS раздел на всё оставшееся место. Если под Windows хочется иметь второй раздел для файлов ака диск D: то стоит создать его прямо сейчас. Будущий системный раздел Windows может быть в любом месте жесткого диска: сразу после раздела с макосью, после загрузочного 10-гигабайтного или вовсе в конце - для EFI загрузки и GPT стиля разметки это не важно.

У меня получилось нечто такое:

Шаг 2. Поиск и подготовка дистрибутива Windows 7

Есть большой соблазн сходить на какой-нибудь трекер и утащить подготовленный дистрибутив семерки с уже интегрированными драйверами USB и поддержкой NVME. Однако, у меня не получилось найти ни одного рабочего: самый большой успех - удачная установка системы и невозможность её загрузки (зависание на disk.sys в безопасном режиме). Потому я прошел долгий и тернистый путь ручной подготовки дистрибутива из "чистого" образа. И упс, а на этом пути потребуется еще один Windows для работы с образом. Можно сходить на другой компьютер, а можно накатить десятку на подготовленный раздел, и сделать всё на самом макбуке, разницы нет.

Установить Windows 10 - просто

Ничего проще установки Windows 10 (а то и 11) нет: нужно содержимое установочного ISO как "есть" перебросить на раздел exFat, можно просто перетащить из Finder'а. В меню Bootcamp выбрать "скачать ПО поддержки Macbook" и закинуть на тот же раздел. После перезагрузки жмем левый Alt во время "тадам" и выбираем загрузку с Windows раздела. После установки Windows находим файлы bootcamp на установочном разделе и всё, система готова.

Для дальнейшей работы нужен дистрибутив Windows 7 "чистый SP1" и набор драйверов/исправлений:

  • Intel USB 3.0 Windows 7 x64 drivers (файлы сейчас бывают пропадают из интернетов, на момент написания статьи рабочая ссылка вот, для поиска по названию можно использовать такую фразу: Intel® USB 3.0 eXtensible Host Controller Driver for Intel® 8/9/100 Series and Intel® C220/C610 Chipset Family

  • Хотфиксы для поддержки NVME: KB2775511, KB2990941, KB3087873. Первый хотфикс содержит много чего, но нам от него надо принятие цифровой подписи Apple bootcamp drivers. Скачать их (хотфиксы) еще тяжелее, на сайте microsoft они уже не доступны, но по названию гуглятся.

  • Утилита VgaShim.

  • Структура папок: в любом удобном месте создать папки inject, inject\drivers и inject\hotfixes. В папку inject положить файлы boot.wim и install.wim из дистрибутива Windows (лежат в папке Sources). Туда же положить

  • Два скрипта интеграции:

do_boot.wim.bat и do_install.wim.bat

do_boot.wim.bat

@echo off
ECHO Preparing folders...
mkdir mount
mkdir mount\winpe
mkdir mount\setup
mkdir drivers
mkdir hotfixes
ECHO (WinPE) Mounting image
dism /mount-wim /wimfile:boot.wim /index:1 /mountdir:mount\winpe /quiet
ECHO (WinPE) Adding drivers
dism /image:mount\winpe /add-driver /recurse /forceunsigned /driver:drivers
ECHO (WinPE) Adding hotfixes
dism /image:mount\winpe /add-package /packagepath:hotfixes
ECHO (WinPE) Commiting changes
dism /unmount-wim /mountdir:mount\winpe /commit /quiet
ECHO (WinPE) Done!
ECHO (SETUP) Mounting image
dism /mount-wim /wimfile:boot.wim /index:2 /mountdir:mount\setup /quiet
ECHO (SETUP) Adding drivers dism /image:mount\setup /add-driver /recurse /forceunsigned /driver:drivers
ECHO (SETPUP) Adding hotfixes dism /image:mount\setup /add-package /packagepath:hotfixes
ECHO (SETUP) Commiting changes
dism /unmount-wim /mountdir:mount\setup /commit /quiet
ECHO (SETUP) Done!
PAUSE

do_install.wim.bat

@echo off ECHO Preparing folders...
mkdir mount mkdir mount\system mkdir mount\winre mkdir drivers mkdir hotfixes
ECHO (SYSTEM) Listing install.wim images
dism /get-wiminfo /WimFile:install.wim set /p image_index="Which image do you want to modify? Please give me a number: "
ECHO (SYSTEM) Mounting selected image
dism /mount-wim /wimfile:install.wim /index:%image_index% /mountdir:mount\system
ECHO (SYSTEM) Adding drivers
dism /image:mount\system /add-driver /recurse /forceunsigned /driver:drivers
ECHO (SYSTEM) Adding hotfixes
dism /image:mount\system /add-package /packagepath:hotfixes /quiet
ECHO (WinRE) Mounting Windows Recovery
dism /mount-wim /wimfile:mount\system\Windows\System32\Recovery\winRE.wim /index:1 /mountdir:mount\winre /quiet
ECHO (WinRE) Adding drivers to Windows Recovery dism /image:mount\winre /add-driver /recurse /forceunsigned /driver:drivers
ECHO (WinRE) Commiting changes to Windows Recovery
dism /unmount-wim /mountdir:mount\winre /commit /quiet
ECHO (SYSTEM) Copying bootmgfw.efi to your inject folder /y mount\system\Windows\Boot\EFI\bootmgfw.efi
ECHO (SYSTEM) Commiting changes to system
dism /unmount-wim /mountdir:mount\system /commit /quiet
ECHO (SYSTEM) All done!
PAUSE

У меня получился такой минимально работоспособный комплект. В этом комплекте также содержатся скрипты интеграции.

После выполнения скриптов мы получаем модифицированные файлы boot.wim и install.wim, копируем на их место на загрузочном разделе с заменой.

Теперь надо разместить VgaShim на системном EFI разделе. Подмонтировать его в MacOs можно командами:sudo mkdir /Volumes/esp
sudo mount -t msdos /dev/disk0s1 /Volumes/esp

В Windows: mountvol P: /S

В папке EFI/Boot необходимо заменить файл bootx64.efi на VgaShim: файлы VgaShim.efi и VgaShim.bmp переименовать в bootx64.efi и bootx64.bmp соответственно, и ими заменить содержимое папки Boot.

На установочном разделе (флешка или exFat раздел нашего диска) необходимо создать папку efi\boot и скопировать туда файлы VgaShim bootx64.efi и bootx64.bmp с раздела ESP. В папку efi\microsoft\boot необходимо скопировать файл bootmgfw.efi который возник в папке inject после выполнения скриптов интеграции.

Ну, вроде бы всё готово для загрузки установщика Windows 7. Если на целевом компьютере еще нет установленного Windows, то можно загружаться, удерживая alt: загрузка пойдет с раздела с установщиком. Если уже установлена десятка/одиннадцатая windows, то надо создать запись BCD для установочного раздела. Я использовал утилиту EasyBCD где создается новая запись WIM Image примерно так:

Если всё сделано правильно, то при загрузке с Windows раздела ноутбук ускоренно проиграет анимационную заставку Windows 7. Ура! Для первого запуска стоит использовать безопасный режим VgaShim, когда работает текстовый вывод. Для этого при старте системы с Windows раздела необходимо жать F8. После знакомого прогрессбара "loading files" и минутного ожидания с черным экраном должна возникнуть среда установки с курсором мыши. Если мышь и клавиатура не работают, то что-то пошло не так на этапе интеграции драйверов. Дальше еще один костыль: установщик windows хочет драйвера CD-ROM, и не пускает дальше. Чтобы обойти эту проблему нужно вызвать консоль комбинацией Shift-F10 и выполнить команду  setup /installfrom:<your letter>:\sources\install.wim, где <your letter> буква диска с образом установки (может быть любая, найти букву можно перебором или утилитой diskpart командой list volume. Тернисто, правда? Но по идее дальше никаких подводных камней и Windows установится куда прикажете.

Шаг 3. Драйвера.

Теперь пора устанавливать драйвера. Файлы драйверов для семерки приходится собирать из разных выпусков bootcamp, автор поста для macbook Air 2015 собрал пак. Для моего не подошли драйвера клавиатуры и трекпада, их я взял отдельно из BootCamp5.1.5640.

Ну, вот вроде и победа? До окончательной победы нужно привести Windows в актуальное состояние обновив WindowsUpdateAgent, и потратив вечер-два на самообновление и отключить гибернацию (powercfg -h off).

Итоги таковы: работает всё на 99,99% с легкими неудобствами:

Первое неудобство заключается в том, что любые стартовые сообщения Windows не видны. И, если, например, ОС хочет режим восстановления, то этого не видно за черным экраном. Ситуацию помогает решить нажатие F8 на этапе работы VgaShim.

Второе - не работает толком панель управления Bootcamp, ругается на старте о невозможности сменить загрузочное устройство. Из настроек там (мне) нужно только поведение функциональных кнопок F1-F12, вручную изменить можно в реестре HKEY_CURRENT_USER\Software\Apple Inc.\Apple Keyboard Support\OSXFnBehavior.

В device manager мылит глаза Mobile 5th Generation Intel(R) Core(TM) Premium SKU LPC Controller без драйвера.

Из удобств можно отметить куда как большую отзывчивость системы как по сравнению с MacOS так и с более свежими Windows. Загрузка от нажатия на кнопку питания до состояния "можно работать" секунд 8-15, и это неплохо. Работа от батарей точно не хуже чем в родной ОС или десятке, расход зависит только от прожорливости приложений. Кнопки управления - работают. А собственно, что еще надо?

Данная статья будет полезна не только маководам-ренегатам с новыми макбуками и ностальгией по "семерке", а и всем владельцам относительно нового железа с UEFI - принцип тот же.

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


  1. s_so
    17.09.2021 19:38
    +4

    Отлично ! Следующий этап садо-мазо экспириенса - установка wn i2K на мак бук про 2020 с SoC M1 ( чисто ради ностальгии , разумеется )


    1. Mako_357
      17.09.2021 20:29
      +1

      Лучше Windows 8 RT


    1. VTH Автор
      18.09.2021 08:57
      +2

      Между прочим любимая ОС времен 200ых пней. Может бы и ностальгнул бы


  1. WicRus
    17.09.2021 19:41

    некий специальный софт, который существует исключительно для этой ОС.

    Вот тут самое интересное, по подробней бы. Что за софт? Почему ему нужна именно вин7? Как этот софт себя ведёт под вином из пингвина или яблока?
    В одно время тоже пришлось решать проблемы софта под вин7. Часть пошла под виртуалкой, а часть просто под вином. В итоге получилось избежать использования не обновляемой системы.


    1. VTH Автор
      18.09.2021 09:01
      +1

      Нет нет, не прямо специфичный для Win7, а специфичный для Windows в общем. Конкретно - софт для настройки камер, который в принципе под другие ОС не существует, и еще не очень классно/удобно работает, когда запускается в виртуальной машине. К примеру, подключенный USB девайс по командам от софта переподключается уже другими VID/PID и надо не зевать, и пробрасывать новое устройство в виртуалку.

      Вин7 - это о ностальгии, а не о рациональности. На маке отлично работает 10/11 и настанет время с семерки слезть. Но пока не слезу.


  1. Mako_357
    17.09.2021 20:31

    нельзя просто взять и поставить Windows 7 на свежие макбуки! (боромир.жпг) Настолько нельзя, что на макбуках 2015-2017 годов не запускается даже установщик: висит на черном экране.

    Где то тут противоречие


  1. unclegluk
    18.09.2021 00:50

    Но зачем? Да еще и с неудобствами. За потраченные деньги за Эйр 17-года можно было купить очень приличный Писишный ноут с Виндами на борту, заточенными под железо. Или у производителей ноутов не принято полировать систему под железо на котором она будет работать?


    1. VTH Автор
      18.09.2021 09:09
      +3

      Вот сейчас будет религиозный спор.

      Мои аргументы - макбуки являются лучшими винбуками в принципе, ну а то, что там еще можно MacOS использовать - это бонус. Железо макбуков лучше заточено под винды, чем у 99% винбуков, так как есть отличная поддержка от bootcamp.

      Я на эир 2017 года пересел с эира 2012 (там семерка еще без бубна устанавливается), и все эти долгие года он работал, работал, работал. Вот реально ноль проблем, кайф от магсейфа и микроскопического веса. Эироподобные буки появились сравнительно недавно, и при таком же качестве стоят столько же, и смысл в такой замене?

      Есть боль от ноутов эппл с 2018 года и старше, где magsafe исчез, и USB исчез, и слот SD исчез..


      1. Gordon01
        20.09.2021 03:26
        +1

        Откройте для себя MS Surface хотя бы...


      1. unclegluk
        27.09.2021 15:14
        +1

        Со мной спора не будет. Мне приехал на днях Миник на М1. И я на него перешел полностью.


  1. Clubber_77
    18.09.2021 09:01

    Я конечно может быть не прав, но сколько себя помню, ещё со снежного барса был в макоси буткамп, который практически все делал за пользователя, единственное ,то нужно было, это образ Windows x64, потому что в каких-то версиях (с Vista вроде) поддержка EFI у форточек была только в 64-х битных версиях ОС.


    1. VTH Автор
      18.09.2021 09:11
      +1

      Всё так и есть, но буткамп не устанавливает не подходящие Windows, и Windows 7, хоть и х64 - не подходящая для данной модели. Ну и в статье есть агрумент против установщика bootcamp, он раздел уничтожает с установщиком.


  1. PEACE_dez
    18.09.2021 09:05
    +2

    Щаз поясню зачем это м быть полезно.

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

    Установил.

    И на этом макбук окончательно сдох.

    ПОСЛЕ этого я решил все таки почитать в тырнете что это за проблема такая и нашел, что лажа — в видеокарте ( чипе) от АМД.
    В целой серии Макбуков этот чип со временем отслаивался и мак сдыхал.
    (Эппл даже какое то время бесплатно ремонтировала/заменяла такие дефектные компы
    но пока я нашел эту статью, пока прочел, то-се, поезд ушел).

    Если бы я не поторопился сносить прежнюю операционку, а СНАЧАЛА прочел бы о проблеме, то решение было — надо было исхитриться поймать момент, когда комп кое-как работает — и просто в самой операционке, банально в сетапах, даже не в окне терминала, запретить работу с чипом АМД и принудительно включить ТОЛЬКО интегрированную графику ( т, е, на самом процессоре Ител).

    Но поезд ушел.

    (Чуть отвлекаясь: сейчас есть решения для этой проблемы, но геморное — надо покупать чип-патч от неких умельцев и впаивать его на материнку итд итп).
    ( И на вс случай: есть куча советов в сети, как при ВКЛЮЧЕНИИ Мака зайти через терминал и добавить магические строки кода, которые запишут в NVRAM установку работать ТОЛЬКО с интегрированной графикой, но ни один совет не помог).

    В общем, я таки оживил этот Мак, установив некую версию Линукса ( Майнт? уже не помню..), и то, после танцев с бубнами, перебрав кучу Линуксов, пока не нашел такой, который сам, на старте, НЕ юзает чип АМД.

    Так вот, приближаясь к развязке.

    Я пробовал устанаавливать Вин 8 ( не люблю его), но все глючно, даже если устанавливается с н-го раза — то потом то работает, то нет.

    А вот Вин7 вообще не ставится — доходит до экрана установки, чтото там даже вроде устанавливается, а потом вуаля — черный экран.

    Так что вот для таких случаев ( таких дефектных макбуков) этот пост может оказаться оч полезным.
    ( помимо тех извращенцев, которые ( о боже!) ставят Винду — на Маки).


    1. Gordon01
      20.09.2021 03:34

      Зачем использовать неисправное железо?


  1. YuriyPashkov
    18.09.2021 22:28

    Зачем всё это, если есть VirtualBox или VMWare Workstation? Особенно учитывая, что обычно в windows запускать приходится одно-два приложения.
    Там семёрка прекрасно живёт себе без всяких костылей.


    1. VTH Автор
      19.09.2021 09:08
      +1

      Ради позитивного юзер-экспириенса, конечно. Я попользовался и макосью, и виндой на вышеозначенном ноутбуке. Так вот винда работает стабильнее, быстрее (и привычнее).

      Смысла ставить виртуалку и дважды страдать - нет. В виртуалке у меня XP есть для кое-чего, и то, сходить на железо с установленной ХР лучше и надежнее.


  1. Busla
    19.09.2021 12:49

    Описанные проблемы с установщиком Windows - правда ...но установщик не нужен. Всё что делает установщик, это:

    1. размечает диск

    2. распаковывает архив install.wim

    3. ставит в EFI bootmanager и нацеливает на инстанс из второго пункта

    с 1 и 3 вы уже успешно справляетесь внешними средствами, 2 тоже уже почти делаете в скриптах интеграции


    1. VTH Автор
      20.09.2021 10:18

      Осознаю. Однако сильно устал от установок типа "всё включено интегрировано и установщик от десятки". Все они устанавливаются, но не запускаются. А так, запустился установщик и увидел диск - дело в шляпе и интеграция прошла успешно.