Делаем Asrock Instant Boot своими руками

27 апреля 2012, пятница 14:13
для раздела Блоги
С материнскими платами Asrock поставляется утиль Asrock Instant Boot, который уменьшает время загрузки венды до трех секунд без применения SSD. Утиль работает только на материнских платах Asrock. В статье я расскажу, как сделать подобную фишку на любой материнской плате стандартными средствами венды. Способ рассчитан на настольные компьютеры, для ноутбуков он не актуален.

Сначала нужно разобраться в алгоритме, по которому работает Instant Boot. К счастью, долго скрипеть мозгами не придется, алгоритм прост как валенок. Пользователь нажимает кнопку для выключения компьютера и уходит, например что бы спокойно пропустить рюмашку вдали от монитора. Компьютер вместо выключения перезагружается. После загрузки Рабочего стола венда отправляется в сон. Отдохнувший пользователь приходит и тычет кнопку включения компа. Венда просыпается и через три секунды готова к работе. Таким образом мучительно долгий процесс загрузки проходит без присутствия пользователя.

Вы спросите: а почему просто не отправить венду в сон, зачем перезагружать? Причин для этого может быть много. Я не буду ничего расписывать, каждый сам решит, какие плюсы и минусы несет описанный способ и стоит ли его использовать. Скажу только, что сон почти не расходует электроэнергию. В рекламе Асрока указано потребление 3 Ватта. Скорее всего так оно и есть. Так же в качестве бонуса заснувший компьютер несложно программно включать по расписанию, например с помощью Планировщика заданий.

Прежде чем переходить к практической части, нужно уточнить два момента. Первый: в какой сон отправлять венду. Существует три основных типа сна:

  • Обычный сон, он же Sleep, он же Standby, он же Suspend to RAM, он же S3. Все устройства отключаются кроме памяти и части чипсета (зависит от модели матери и настроек BIOS). Данные сохраняются в памяти.
  • Гибернация, он же Hibernation, он же S4. Все устройства отключаются кроме части чипсета (зависит от модели матери и настроек BIOS). Данные сохраняются на диске.
  • Гибридный сон, он же Hybrid Sleep. Недоступен в Windows XP. Все устройства отключаются кроме памяти и части чипсета (зависит от модели матери и настроек BIOS). Данные сохраняются в памяти и на диске.

Для нашей цели больше всего подходит первый вариант по нескольким причинам:

  • Сразу после загрузки компьютера нет данных, которые нужно сохранять на диске.
  • В Windows XP нет гибридного сна, а обычный сон существенно быстрее гибернации.
  • Во время записи данных на диск, венда пытается освободить память, выталкивая из нее часть программного кода. После пробуждения этот код придется снова считывать с диска, что заметно ухудшит «отзывчивость» венды.

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

Переходим к практической части. В Windows 7 отключаем гибридный сон в настройках электропитания. Жалко конечно его отключать, может пригодиться. В теории можно обойтись без отключения, просто неохота с этим разбираться. Если кому гибридный сон очень нужен, то скажите, что-нибудь придумаем.





В Windows XP отключаем гибернацию в настройках электропитания. Если в системе установлен PowerShell, то можно оставить гибернацию включенной.



В обеих системах отключаем ввод пароля во время загрузки венды. Для этого отдаем команду
control userpasswords2
снимаем флажок и вводим имя и пароль загружаемого пользователя.



Теперь скачиваем командный файл:
Командный файл для Windows 7
Командный файл для Windows XP
Командный файл для Windows XP с установленным PowerShell


Вместо выключения компьютера запускайте скаченный файл. Права Администратора для этого не нужны. Пользователям Windows XP я рекомендую по возможности использовать версию для PowerShell, иначе усыпленную венду нельзя будет разбудить программно, например из Планировщика заданий.

Расшифровка командных файлов

title Instant Boot
Изменить надпись в заголовке окна на Instant Boot. Необязательная «косметическая» команда.

if not [%1]==[] goto stage2
Если файл запущен из автозагрузки, то перейти к строке :stage2.

reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v «Instant Boot» /d "\"%~f0\" CoolCmd" /f
Добавить запуск командного файла в автозагрузку. Для записи в HKCU не нужны права Администратора, но с другой стороны добавляется ограничение: использовать командный файл, а значит и Instant Boot, может только один пользователь — тот, у которого мы отключили ввод пароля во время загрузки венды. Что бы обойти ограничение, необходимо запускать командный файл не из автозагрузки, а из Планировщика задач с правами Администратора.

Windows 7: shutdown /r /t 0
Windows XP: tsshutdn 0 /reboot /delay:0
Перезагрузить компьютер. В Windows XP используется tsshutdn, которая не требует для перезагрузки прав Администратора, по крайней мере на моем компьютере.

pause
Приостановить выполнение командного файла до нажатия любой кнопки. Полезно для просмотра содержимого окна если «что-то пошло не так».

goto :eof
Завершить выполнение командного файла и закрыть окно.

reg delete HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v «Instant Boot» /f
Удалить запуск командного файла из автозагрузки.

Windows 7: timeout 30 /nobreak
Windows XP: ping 127.0.0.1 -n 30
Ждать 30 секунд пока загружаются приложения из автозагрузки. Можно изменить цифру 30 на другую в зависимости от количества установленного софта. В Windows XP нет специальной команды для задержки, поэтому приходится извращаться с пингом.

Windows 7: powershell Add-Type -AssemblyName 'System.Windows.Forms'; [System.Windows.Forms.Application]::SetSuspendState(0, 0, 0)
Windows XP: rundll32 powrprof.dll,SetSuspendState
Усыпить венду. Спи глазок, спи другой… Версия для Windows 7 загружает оболочку PowerShell, которая вызывает метод .NET SetSuspendState(), а тот в свою очередь вызывает функцию Win32 API c аналогичным названием. Версия для Windows XP вызывает ту же Win32 API функцию с помощью rundll32.exe через жопу, и вот почему.



Обсудить статью можно здесь или на нашем форуме.
Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают