К сожалению, приведенный ниже метод не работает для Windows 2000. Данный метод тестировался на ОС Windows XP и Windows 2003 Server. Принцип создания один и тот же, но если на Windows XP все работает на 100%, то при использовании данного подхода на Windows 2003 Server EN возможны проблемы с отображением экрана приветствия (черный фон вместо картинки).
Boot Screen - это экран, который вы видите при загрузке системы. Непосредственно изображение содержится в файле ядра Windows ntoskrnl.exe. Вообще, Windows использует четыре уникальных файла ядра:
- ntoskrnl.exe - однопроцессорное ядро Windows
- ntkrnlmp.exe - многопроцессорное ядро Windows
- ntkrnlpa.exe- однопроцессорное ядро Windows с более чем 3 Гб оперативной
памяти (RAM) - ntkrpamp.exe - многопроцессорное ядро Windows с более чем 3 Гб оперативной
памяти (RAM)
На сегодняшний момент процессоры как от AMD, так и от Intel могут быть одноядерными или двуядерными, так что настоятельно рекомендую вам создавать Boot Screen для двух типов процессоров, чтобы избежать дальнейших ошибок и проблем при установке на другие компьютеры.
Данная статья рассказывает как об одно-, так и о мультипроцессорных системах. Для работы вам понадобится:
- Файлы ntoskrnl.ex_ и ntkrnlmp.ex_ (находятся в корне папки i386 установочного дистрибутива, если вы обнаружили эти файлы в директории, отличной от данной, то настоятельно рекомендую Вам обзавестись другим дистрибутивом, обо к этому уже была приложена чья-то рука)
- BootEditor - программа для создания и редактирования Ваших собственных загрузочных экранов
- Любой графический редактор. В данной статье я буду ссылаться на Adobe Photoshop CS2).
Подготовка к созданию файла ядра
Распакуйте BootEditor и запустите его. Если появится ошибка об отсутствующем файле, то скорее всего вам нужны msvbvm60.zip и comctl32.zip. Распакуйте их в ту же папку, что и BootEditor.
После первого запуска вы увидите окно, предлагающее ознакомиться со справкой к программе:
Нажмите Нет (No).
Следующий диалог будет таким:
Нажмите Close.
Вы вошли в BootEditor. Окно будет выглядеть примерно так:
Для начала произведем небольшие настройки программы. Нажмите сочетание клавиш Ctrl+O. Вы должны увидеть окно настроек программы:
В поле Program to start for image editing указываем путь к программе для работы с графикой (в моем случае я буду указывать путь к программе Photoshop). Для более корректного отображения цветов, после обработки необходимо в Настройках также отметить опцию Type of palette in Main и присвоить ей значение Photoshop. Остальные настройки программы на ваше усмотрение, однако новичкам я не рекомендую трогать остальные опции.
Итак, все готово для творческого процесса. Из меню File выберите New Boot Screen. Должно появиться такое окно:
Введите имя Вашего будущего загрузочного экрана. Для наглядности я введу имя Desperate.
Теперь мы будем изменять изображение. В последней версии ядра Service Pack 2 внутри только четыре рисунка, в то время как в Windows 2003 и более ранних NT системах более четырех рисунков.
Выберите изображение, которое Вы хотите заменить, нажмите кнопку Load Image или просто щелкните на нем два раза левой кнопкой мышки, и данное изображение откроется в графическом редакторе, где Вы смело можете делать с ним все, что Вашей душе угодно.
Примечание. Для корректного отображения цветов старайтесь использовать индексированные цвета и сохранять Ваш проект не для Windows, а для OS/2.
Выберите Ваше изображение, которым Вы хотите заменить оригинал. Когда Вы заменяете изображение Main - #1, также нажмите Move, чтобы исправить цветовую гамму файла.
Если Вы хотите переместить полосу прогресса то, при просмотре изображения Main - #1, нажмите на изображение полосы прогресса и перетащите вверх или вниз. Вы не можете переместить влево или вправо.
Давайте сохраним то, что у нас уже получилось. Нажмите кнопку Make расположенную наверху экрана.
Если Вы хотите изменить название, дважды щелкните на теге Name и введите свое название.
Следующий экран предоставит Вам дополнительные опции сохранения файла.
Если Вы модифицируете одно из более старых ядер, в нем могут быть различные изображения, относящиеся к версии ОС (Professional, Home, Server, Media Center и т.д.). Вы можете удалить эти изображения - они просто не будут отображаться в процессе загрузки. Поясняю: речь идет о надписи под полоской прогресса загрузки (или над полоской, не помню уже :); до Service Pack 2 там отображалась версия ОС. Дважды щелкните в столбце Put it и выберите No.
Нажмите ОК, когда закончите, а затем ещё раз ОК для подтверждения.
Файл, который вы создали, будет сохранен в той же директории, что и Boot Editor. Файл представляет собой zip архив с расширением bootscreen. Забудем на время, о программе BootEditor, но позже мы еще вернемся к ней, т.к. нам еще предстоит превратить наш BootScreen в файл с расширением *.ехе
Создание исполняемого файла
Теперь надо создать фактический файл ядра. Поскольку мы будем создавать как одно-, так и многопроцессорное ядро, то придется заняться рутинной работой по перемещению файлов туда - сюда, их переименованием и замещением. Надеюсь, файлы ntoskrnl.ex_ и ntkrnlmp.ex_. Вы успешно нашли и приготовили для работы. Эти файлы сжаты, для дальнейшей работы их необходимо распаковать куда Вам удобно. Как их распаковать смотрите тут. После распаковки вы должны получить два файла с теми же именами, но уже с расширением *.ехе
Для того чтобы нам не делать резервную копию файла ntoskrnl.exe, мы начнем работу с файлом для многопроцессорных ядер. Берем распакованный файл ntlkrnlmp.exe и переименовываем его в ntoskrnl.exе. Затем нам необходимо скопировать его в папку %SystemRoot%\system32. На вопрос системы о перезаписи файла ответьте Да.
Настало время вернуться к BootEditor, выбираем в программе созданные нами BootScreens (левый столбик):
и жмем кнопку Test.
Вы увидите такое окно:
Нажмите Нет (No), т.к. мы на самом деле ничего не тестируем тут, а создаем файл ядра.
Следующие диалоговое окно сообщает Вам, где создается новый файл и что если бы вы действительно тестировали его, то он бы стал файлом по умолчанию.
Нажмите ОК, и сделайте это еще раз в заключительном окне.
Поздравляю, вы только что создали файл для многопроцессорных ядер. Забираем его из каталога system32 (файл называется NewBoot.exe) и копируем в папку $OEM$\$$\system32 вашего будущего диска и переименовываем его в dualkml.exe
Теперь нам необходимо создать файл для однопроцессорных систем. Берем файл ntoskrnl.exe, который Вы получили при распаковке файла ntoskrnl.ex_, не переименовывая, его кладем в Ваш каталог system32. Все остальные действия проделываем точно так же, как и с файлом для многопроцессорных ядер. На выходе, в Вашем каталоге system32 мы вновь получим файл с именем NewBoot.exe, с той лишь разницей, что данный файл предназначен для однопроцессорных ядер. Точно так же копируем его в папку $OEM$\$$\system32 и переименовываем в singkrnl.exe
Поздравляю! Вы только что создали два файла ядер с вашим собственным загрузочным экраном.
Создание пакетного файла для выбора надлежащего ядра
Следующий пакетный файл, является простым сценарием, который считывает параметр NUMBER_OF_PROCESSORS из системного реестра, а затем выбирает соответствующий файл ядра.
FOR /F "tokens=3 delims= " %%A IN (`REG QUERY "HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v NUMBER_OF_PROCESSORS`) DO SET NUMBER_OF_PROCESSORS=%%A
bootcfg /copy /D "Windows XP Professional" /ID 1
if %NUMBER_OF_PROCESSORS%==2 goto DUAL
REM ----For Single proc
bootcfg /RAW "/Kernel=singkrnl.exe" /A /ID 2
goto End
:DUAL
REM ----For Multiprocess/Hyperthread proc
bootcfg /RAW "/Kernel=dualkrnl.exe" /A /ID 2
:End
bootcfg /Timeout 2
bootcfg /Default /ID 2
Этот сценарий делает копию оригинальных параметров входа в систему, находящихся в boot.ini, и озаглавливает их как "Windows XP Professional". Затем добавляет в конец /kernel, чтобы использовать другой файл ядра, затем устанавливает задержку на 2 секунды, и, наконец, устанавливает новое ядро по умолчанию.
Если Вы хотите использовать другие названия для ваших файлов ядра, я уверен, что Вы сообразите, где изменить их. Если вы хотите установить другую задержку, только измените число после ключа /Timeout. Если вам не нужна задержка времени введите 0.
Сохраните этот пакетный файл как bootscreen.cmd, скажем, в $OЕМ$ директории. Если Вы хотите, чтобы bootscreen.cmd сработал при первом входе в систему, то запускайте его из [GuiRunOnce] или при помощи RunOnceEx.
Возможные проблемы с Boot Editor
Иногда при длительном использовании Boot Editor зависает и не реагирует ни на что. Просто перезапустите Boot Editor и продолжайте работу.