Windows XP для бедных = Windows PE?
Windows XP для бедных = Windows PE?
Проходя мимо лотка с компьютерными дисками, я обратил внимание на незнакомое название на обложке одного из дисков. Надпись крупными буквами гласила: "Windows XP Preinstallation Environment". Заинтересовавшись, взял диск в руки и стал изучать подробнее. Развернутый русский комментарий на задней обложке выглядел таким образом:
"Microsoft Windows Preinstallation Environment (Windows PE) минимальная версия операционной системы на основе ядра WinXP SP1. Запускается полностью с загрузочного CDROM и заменяет MSDOS при необходимости подготовки диска к установке операционной системы (format и др. операции). Windows PE также позволяет автоматизировать установку Windows, предоставляет доступ к NTFS дискам, файлам и registry для резервного копирования и восстановления работоспособности системы, поддерживает работу в сети."
Любопытная штука, подумал я, купил диск и отправился домой разбираться. Итак, диск ложится в лоток CDROM'а, и первым делом я начинаю разглядывать, что именно на нем записано.
Первый опыт
Внешне структура диска ничем особенным не отличается от порезанного пиратами загрузочного диска Windows XP. В корне лежат обычные для такого рода дисков файлы. Флажки-идентификаторы "win51", "win51ip" и "win51ip.sp1" гласят о том, что мы имеем дело с Windows XP SP1. Лежащий рядом файл bootfont.bin указывает на то, что версия эта локализованная (русская). Есть некая папка UTIL, в которой свалена куча явно не относящегося к делу постороннего софта типа "Acronis Boot Mana-ger". Присутствует папка i386, заглядываем в нее... О-о-опс — 132 Мб! Маловато будет для нормального дистрибутива, да и структура вложенных папок не похожа на обычное расположение файлов Windows XP! Для сравнения: обычный дистрибутив Windows XP Corporate Edition, с интегрированным в него Service Pack 1, занимает около 600 Мб. Отложим подробное изучение этой папки на потом и продолжаем беглый осмотр диска. Помимо уже просмотренных папок, на диске оказалась еще одна, называющаяся "WINPE". Заходим и оглядываемся. Все ее содержимое занимает объем около 5 Мб. Состоит она из некоторого количества утилит и файлов данных, явно не являющихся загрузочными и уж тем более системными. Хотя... Ну ладно. В общих чертах все понятно. Давайте попробуем загрузиться с этого диска и посмотрим, что получится.
Перезагружаем компьютер, заходим в BIOS, устанавливаем в качестве первого загрузочного устройства CDROM. Сохраняемся, выходим. Компьютер пересчитывает память и пытается загрузиться с компакт-диска. На экран выводится привычная надпись с просьбой нажать любую клавишу для того, чтобы начать загрузку c CDROM. Нажимаем пробел, и в ответ на наши действия возникает не менее привычный экран начальной загрузки установщика Windows XP. Интересное начинает происходить сразу после него. Вместо того, чтобы предложить мне мастер выбора активного раздела, экран переключается в графический режим 640x480x16(?). На нем появляется фоновый рисунок рабочего стола Windows XP. Ну, тот самый, с полем, небом и облаками. Помедлив некоторое время, экран переключается в режим 800x600x16(?), вместо ожидаемого уже мной таскбара с дектопом на экран выскакивает консольное окно. В нем быстро пробегают какие-то незнакомые мне команды, и через некоторое время появляется обычное командное приглашение консоли. На этом загрузка системы и заканчивается.
В торчащей в центре экрана консоли моргает курсор, явно ожидая ввода каких-либо команд. Начинаем осматриваться. Последовательностью команд C:, dir, D:, dir, E:, dir пытаюсь отыскать свой обычный системный диск с Windows XP. Ага — вот он! Заходим в папку Program Files, затем в Far manager и запускаем Far. Теперь мы можем работать в более комфортных условиях. Пробуем запустить WinRar — запускается совершенно нормально. Уже хорошо. На глаза мне попадается папка с софтом для CD-рекордера Nero. Ехидно усмехнувшись, захожу в нее и пытаюсь запустить программу. К моему удивлению, Nero благополучно стартует, находит рекордер и предлагает записать диск. Очень хорошо!
Продолжаем исследование. Пробуем запустить Partition Magic 8.0. Работает! Acrobat Reader? Тоже все в порядке. А вот посмотреть банальные файлы справки *.hlp не получается. Нет, говорят, у меня файла win32help.exe.
Пробуем запустить Internet Explorer — не хочет. А как поведет себя браузер Mozilla 1.2? Исправно работает. Переходим в папку Office XP и пытаемся запустить Word. На экране практически мгновенно показывается окно редактора, но вслед за ним также мгновенно выскакивает сообщение о том, что Word не обнаружил пользовательского профиля и в этой связи работать не будет. Надо будет потом поковыряться.
Тут мне на глаза попадается папка с альтернативной оболочкой для Win32-систем Talisman.
Для тех, кто не знаком с этой чудесной программой, расскажу, что она подменяет собой explo-rer.exe и позволяет вам создать собственный интерфейс для любой операционной системы семейства Windows (если у вас на компьютере их несколько — то единый для всех). Оболочка не требует установки, не привязывается к реестру, все настройки хранит в конфигурационных текстовых файлах, лежащих в ее собственной директории. Рабочая область может быть полностью перепрограммирована под ваши нужды. Этакая маленькая альтернативная графическая среда в стиле "Линукс", только работающая в Windows. Для фэнов "Линукс": там даже имеются готовые темы, эмулирующие KDE и QNX. Темы вы можете создавать сами, в том числе и полностью футуристические (автор статьи долго работал в XP, пользуясь подсмотренным на скриншотах Longhorn интерфейсом). Если же вам лень рисовать интерфейс, можете взять готовый в Интернете: их там пруд пруди.
Программа платная, впрочем, для России ее цена составляет сущие копейки. Также можно зарегистрировать ее привычным для нашего пользователя образом — через платежную систему www.astalavista. box.sk. Забегая вперед, сообщу, что в обсуждаемом случае нам это не потребуется.
Итак, вернемся к Windows PE и запускаем Talisman. При старте он ругается на то, что у него возник "Runtime Error 216". Но тем не менее исправно запускается и даже вроде вполне корректно работает. Эврика — лапочка ты моя! Закрываю ставший теперь ненужным Far manager. Набираю "exit" в оставшейся после него консоли. Тут происходит неожиданное. Талисман, не говоря ни слова, схлопывается вслед за консолью, и машина уходит на обычную перезагрузку! В смысле, не падает по ошибке, а именно уходит на перезагрузку, словно мы выбрали пункт Завершение работы в меню Пуск! Анализ происходящего навел меня на мысль о том, что Windows PE использовала в качестве рабочего шелла именно это консольное окно. Закрыв его, я инициализировал конец сеанса меня как пользователя.
Воспользовавшись вынужденным перерывом в исследованиях, загружаюсь в обычные Windows XP и приступаю к более детальному изучению содержимого компакт-диска. Как показал ранее проведенный мной эксперимент, софтина этого достойна. В одной из папок обнаружился файл справки, называющийся winpe.chm. Открываю его и как истинный программист только теперь приступаю к изучению документации.
Читая документацию
Если верить введению, Windows PE — это минимальная Win32-подсистема с ограниченным набором служб, базирующаяся на ядре, работающем в защищенном режиме. Она реализует минимальную функциональность, достаточную лишь для того, чтобы проверить совместимость вашего железа с Windows XP и установить обычную Windows XP с сетевого диска. Также с ее помощью можно автоматизировать и обычную установку с компакт-диска...
Ну, что с ее помощью можно сделать, мы только что видели в ходе эксперимента. Поэтому перейдем от этой главы со сказками к пункту с интригующим названием "Ограничения Windows PE".
Ограничения Windows PE
Так как исходный документ написан на английском языке и поэтому многим русскоязычным читателям будет непонятен, приведу перевод этого раздела целиком, со своими попутными комментариями. Согласно тексту этого раздела, Windows PE обладает следующими ограничениями по сравнению с полной Windows XP:
1. C целью уменьшения размера операционной системы она включает неполный набор функций Windows API. В наличии имеются только функции дискового ввода-вывода и функции базового ядра Win32 API.
Реализация "расширенных" функций API происходит, как правило, в отдельно регистрируемых DLL. Поэтому данное ограничение не выглядит серьезным для опытного пользователя.
2. Для того, чтобы предотвратить использование OS компьютерными пиратами, система автоматически перезагружается после 24 часов непрерывной работы.
Этот пункт мне больше всего понравился! Не могу не отдать должное чувству юмора составителя этого документа из "Майкрософт". Эвона как они нашего брата прищучили! Ну ладно, хоть будет повод вспомнить о существовании жены, книг, друзей и того, что людям надо регулярно спать.
3. Невозможно получить доступ к файлам и папкам Windows PE с другого компьютера в сети.
Говоря русскими словами, это только клиент. Сервером ей не быть. Крамольную мысль о том, а что будет, если мы оденем на нее альтернативный (не "Майкрософт") софт типа MySQL или Apache, мы отбросим как не подобающую торжественному случаю данной презентации.
4. Distributed File System (DFS) не поддерживается.
Правда, в прилагаемом к пакету файле README говорится, что это неправда — все поддерживается.
5. По сети можно ходить только с помощью протоколов TCP/IP и NetBIOS через TCP/IP. Протокол IPX/SPX не поддерживается.
Интересно, а кому он в наше время вообще нужен? Игрокам в ДОСовский DOOM по сети? Дык! Майкрософтовская реализация этого протокола никогда с ним и не работала — приходилось отдельную от Netware ставить.
6. Порядок расположения логических дисков и записи в реестре не сохраняется между перезагрузками.
Говоря русскими словами, система каждый раз строит реестр заново в момент загрузки!!! Шоколадный торт тому, кто это придумал!!! Прощай проблема замусоренности реестра левым софтом! Прощай отказ нелицензированного программного обеспечения работать до пор, пока мы не заплатили им денег! Прощай само понятие запорченного неумелым редактированием реестра! Здравствуй открытая для всевозможных низкоуровневых модификаций система. Забегая вперед, замечу, что вычислить файлы, в которых хранится реестр, и средства для его редактирования оказалось совсем нетрудно. В принципе, с помощью современных бут-менаджеров (к примеру, System Commander или Acronis Boot Manager) можно даже организовать загрузку одной и той же системы с разными реестрами.
Значимость такой возможности сравнима лишь с возможностью загрузки разных кернелей в "Линукс".
7. Windows PE требует VGA-совместимого устройства и работает в разрешении 800x600. Если Windows PE не смогла определить ваше видеоустройство, она сваливается в разрешение 640x480.
Вот это очень плохо. Плохо не столько то, что работа ведется с разрешением 800x600, а то, что рефреш экрана для драйвера VGA в "Майкрософт" равен 60 Гц. Работу именно этого драйвера вы наблюдаете, когда загружаетесь в режиме Safe Mode. И если заставить его работать в любом произвольном разрешении достаточно легко (лишь бы видеокарта тянула), то установить рефреш, отличный от 60 Гц, мне пока не удалось. Работы в этом направлении мной ведутся, и я поделюсь результатами с вами чуть ниже по тексту. Авось кто что подскажет.
8. Windows PE слишком велика, чтобы ее можно было записать на дискету.
Думаю, мы это легко переживем:).
9. Вы не можете построить пользовательскую версию Windows PE с помощью дистрибутива Windows XP Home Edition.
Любопытный пункт, особенно в части "пользовательской версии". Вернемся к нему чуть позже.
10. Windows PE не поддерживает Net Framework.
Очень плохо. Надеюсь, со временем мне или кому-нибудь еще удатся с этим разобраться.
11. В среде Windows PE отсутствует возможность запускать старые MSDOS и Win31-приложения в связи с отсутствием механизма WOW32 (Windows внутри Windows32).
Говоря другими словами, это чисто 32-битная среда. Неприятно, конечно, но вполне терпимо. Может быть, это даже и к лучшему — меньше глюков будет. Также в этом пункте содержится любопытное замечание. Говоря о невозможности запуска 16-битных программ в 32-битной среде, автор статьи замечает, что также невозможен запуск 32-битных программ в 64-битной среде. Читая это, легко сделать вывод, что Windows PE предназначена не только для 32-битных версий Windows, но и для 64-битных ее вариантов. Дальнейшее чтение документации подтвердило этот факт.
Функции Windows API, не поддерживаемые Windows PE
Ниже приводится полный список того, что было исключено из WinAPI в этой версии системы. Многое из этого траурного списка в принципе жизненно необходимо, многое совершенно, на мой взгляд, не нужно. Что из указанного нужно (не нужно) именно вам, судить также именно вам. Я надеюсь, что по мере широкого распространения системы народ найдет способ все это вернуть назад.
1) Windows Management Instrumentation (WMI)
2) Windows Multimedia
3) Still Image
4) OpenGL
5) NetShow Theater Administration
6) Windows Shell
7) Access Control
8) Power Options
9) Printing and Print Spooler
10) Window Station and Desktop
11) Terminal Services
12) User Profile
13) Tape Backup
Чуть ниже по тексту этой главы документации расположена ссылка, озаглавленная "Создание пользовательской версии Windows PE". Будучи заинтригован рассказами о 64-битных версиях Windows и "невозможности создания Windows PE с помощью Windows XP Home Edition" (казалось бы, а при чем тут она?), я по этой ссылке и отправился. То, что я вычитал в этой главе, заставило меня отвесить челюсть ниже колен!
Как выяснилось, никакой такой отдельной операционной системы Windows PE просто не существует. Windows PE — это набор утилит размером около 5 Мб (тех самых, что мы видели на компакт-диске). Для своей работы он требует наличия у вас дистрибутива Windows XP SP1. Программа стартует, вытягивает необходимые файлы из дистрибутива и в качестве результата своей деятельности формирует:
1. ISO-образ диска, приготовленный для записи на загрузочный компакт-диск.
2. Структуру каталогов с файлами, которые можно просто переписать на логический диск и таким образом установить дополнительную сервисную систему на ваш жесткий диск. Ну просто MSDOS какой-то!!!
Таким образом, пираты сделали мне любезность, заранее сформировав для меня загрузочный компакт-диск Windows PE из русской версии Windows XP SP1. В конце концов, не продавать же им на компакт-диске программу размером всего 5 Мб!
Зачем она такая кастрированная нам нужна?
Думаю, этим вопросом зададутся многие читатели.
Ну, первой причиной, безусловно, являются требования к аппаратному обеспечению. Для нормального развертывания данной системы требуется всего около сотни мегабайт дискового пространства и 40 Мб памяти. Причем даже эти, довольно незначительные, требования совсем не окончательны. Вы можете удалить из системы поддержку сети и многие другие ненужные вам функции, и требования дополнительно сократятся. Информация о назначении большинства используемых системой файлов есть в прилагаемой документации. При этом вы получаете на руки современную 32-битную (или 64-битную, по вашему выбору) систему.
Вторая причина, а для меня, пожалуй, первая, единственная и основная, заключается в том, что данная система представляет из себя уникальный полигон для возможности изучения самой современной из операционных систем "Майкрософт".
Изучая реакцию пользователей "Линукс" на серию моих статей "Расхожие мифы о "Линукс" и Windows", я сделал вывод, что основной причиной перехода очень многих из них на альтернативную платформу была "закрытость" майкрософтовских операционных систем. Они не знали, как можно изменить тот или иной аспект работы ОС, и ушли на более простой ее эквивалент. Windows PE — это также более простой эквивалент Windows XP. В ней можно ковыряться сколько душе угодно, не боясь что-либо испортить. Ставьте ее второй системой и смело экспериментируйте! Благодаря простоте ее развертывания вам достаточно лишь переписать из архива измененные вами файлы обратно, и все.
Третья причина заключается в том, что данная ОС находится еще в самом начале своего пути. Готовя материал к этой статье, я прочесал Интернет в поисках каких-либо материалов по Windows PE и… ничего не нашел. Так что вы сейчас читаете эксклюзивный материал. На сайте самой "Майкрософт" упоминается лишь о том, что они планируют выпустить такую штуку в обозримом будущем. Новостные ленты русскоязычных сайтов дружно повторяют это заявление "Майкрософт". Единственное упоминание об этой ОС я нашел в недрах русскоязычного сайта "Майкрософт" для ОЕМ-поставщиков. Там говорилось, что данная ОС "прикладывается" в качестве сервисной к энному количеству экземпляров обычной Windows XP OEM. Видимо, там наши пираты ее и взяли.
Хочет того или нет "Майкрософт", но, на мой взгляд, этой и подобной этой модификациям Windows XP предстоит большое будущее. Они дают возможность пользователю самому строить свою систему из кубиков подобно "Линукс". И по мере распространения Windows PE количество этих "кубиков" от посторонних производителей будет увеличиваться и увеличиваться.
Кстати, данная ОС не является коммерческим продуктом.
Ставим Windows PE на винчестер
Предупреждение:
Для того, чтобы суметь повторить все то, о чем рассказывается в этой главе, вы должны уметь формировать загрузочные компакт-диски и пользоваться программами бут-менеджеров — к примеру, System Commander или Acronis Boot Manager. Последний из них обладает более широкими возможностями и, кроме того, прикладывается в придачу к ASP Linux.
Учебник по навыкам работы с этими программами выходит за рамки данной статьи, она и так получилась слишком большая. Если вы не умеете ими пользоваться, пишите письма в редакцию с просьбой опубликовать статью на данную тематику. Я с удовольствием все вам подробно расскажу и покажу в отдельной статье.
Итак, бросив читать документацию, я начал экспериментировать.
1. Переписываем папку Windows PE (5 Мб) на логический диск.
2. Вставляем компакт-диск с Windows XP SP1 в CD-ROM.
3. Пытаемся, согласно документации, запустить в этой папке файл mkimg.cmd, передав ему в качестве параметров букву логического диска и путь к папке назначения.
Вот так:
mkimg.cmd Z: D:\MINIXP
где Z: — буква CD-ROM в моей системе, а D:\MINIXP — папка, в которой я хочу увидеть результат работы программы.
Тут нас постигает первый облом.
E:\WINDOWS PE> MKIMG.CMD Z: D:\minixp
Verifying media ...
Building hives ...
Failed to copy setupreg.hiv file from CD
Я чуть умом не подвинулся пытаясь сообразить, почему он не может скопировать этот пресловутый setupreg.hiv. К счастью, анализ текста mkimg.cmd навел меня на мысль проверить, что написано в файле ошибок 1. А в файле было сказано: "нет доступа". Понятненько. Снимаем атрибут ReadOnly со всех файлов в папке и повторяем операцию. Теперь у нас все прошло на ура. По экрану долго бегут разные строчки, и в конце концов вы получите нечто вроде:
....
1155 files were copied from 1155 files.
Successfully created Windows PE directory in D:\minixp
Удален файл — d:\minixp\I386\system32\drivers\te_protu.qm
Удален файл — d:\minixp\I386\system32\drivers\te_protu.sm
Удален файл — d:\minixp\I386\system32\drivers\te_protm.pm2
Удален файл — d:\minixp\I386\system32\drivers\te_protm.pm
Удален файл — d:\minixp\I386\system32\drivers\gm.dls
E:\WINDOWS PE>
Заходим в папку D:\MINIXP и наблюдаем структуру каталогов, пригодную к записи на компакт-диск. О том, как сделать загрузочный диск WinXP, существует достаточно много статей в Интернете, и я не буду распространяться на эту тему. Лучше я вам расскажу о том, как установить эту систему на жесткий диск. Для этого нам будет необходимо:
1. Создать в корне будущего загрузочного диска папку C:\MININT.
2. Переписать в нее все содержимое папки D:\MINIXP\I386 вместе с вложенными поддиректориями.
3. Перенести файл C:\MININT\ ntdetect.com в корень диска (C:\ntdetect.com).
4. Перенести файл C:\MININT\ setupldr.bin в корень диска и переименовать его в ntldr. (C:\ntldr).
В принципе, вот и все. Тем не менее, тут возникает одна проблема. А как нам заставить нашу операционную систему стартовать? Тут существует масса вариантов. Во-первых, можно воспользоваться прилагаемой к Windows PE утилитой sys.exe. К сожалению, на купленном мной диске такая утилита отсутствовала. Второй способ — с помощью Partition Magic организуем отдельный загрузочный диск, форматируем его под NTFS и копируем на него Windows PE. Остается только подключить этот диск к вашему любимому бут-менеджеру, и все.
Я, будучи извращенцем, пошел по другому пути. У меня уже установлен MultiFat32-раздел под Acronis Boot Manager. Поэтому я просто переписал необходимые файлы на этот диск и с помощью DiskEditor модифицировал загрузочный сектор диска так, чтобы он загружал WinNT-, а не Win9x-системы. Образец правильного загрузчика можно взять с любого другого логического диска, отформатированного из-под WindowsXP(win2k,winnt). Acronis при перезагрузке подхватил эту "вновь созданную" систему и включил ее в свое меню.
Если просьб читателей в сторону редакции будет очень много, я, пожалуй, тряхну стариной и напишу простенькую msdos-утилиту, которая делает такую операцию. Так что пишите письма!
Начинаем колдовать
Предупреждение:
Для того, чтобы суметь повторить все то, о чем рассказывается в этой главе, вы должны разбираться в структурах inf-файлов и иметь хотя бы общее представление о том, что такое реестр. Также я не буду рассматривать те возможности, которые подробно описаны в документации. Вам придется прочитать о них самостоятельно.
Итак, вы сумели установить Windows PE на жесткий диск и готовы приступить к ее модификации. Для начала я совершу краткий обзор используемых Windows PE управляющих файлов.
1. Самые главные управляющие файлы Windows PE расположены в папках MININT/system32 и MININT/SYSTEM32/CONFIG. Называются они setupreg.hiv, software и default. Это бинарные файлы. В них хранится содержимое реестра. При старте Windows PE каждый раз считывает содержимое этих файлов и переносит его в реестр. Таким образом, умея их модифицировать, мы можем заполнить реестр нашей мини-системы произвольными данными.
Для того, чтобы вносить изменения в их содержимое, предназначена утилита bldhives.exe, находящаяся в папке утилит WINPE. Помимо нее, в этой папке находится большое количество файлов с расширением *.inf. Именно их программа и использует для того, чтобы изменить содержимое исходно скопированных ею из дистрибутива Windows XP файлов. Поэтому, если мы хотим что-либо добавить или изменить в этих файлах, нам необходимо поменять информацию в соответствующем inf-файле, а затем запустить утилиту bldhives, передав ей в качестве параметра название файла config.inf.
Вот таким образом:
bldhives.exe .\config.inf
В результате мы получим три файла:
1) software
2) default
3) setupreg.hiv
Первые два файла мы копируем в папку MININT\SYSTEM32\ CONFIG, а setupreg.hiv в папку MININT\SYSTEM32. Теперь при следующей перезагрузке в реестре Windows PE окажутся нужные нам данные. Для упрощения работы я предлагаю вам создать командный файл update.cmd с нужной последовательностью команд и пользоваться им для апдейта реестра Windows PE. Файл должен выглядеть примерно так:
bldhives.exe .\config.inf
copy e:\minint\system32\config\software e:\minint\system32\config\software.old /y
copy software e:\minint\system32\ config /y
copy e:\minint\system32\config\de-fault e:\minint\system32\config\de-fault.old /y
copy default e:\minint\system32\ config /y
copy e:\minint\system32\setupreg.hiv e:\minint\system32\setupreg.hiv.old /y
copy setupreg.hiv e:\minint\system32 /y
Как вы уже, наверно, догадались, Windows PE не даст вам так просто из-под себя заменить файлы software и default. Они во время работы залочены и фактически являются "зеркалом" реестра. Поэтому запускать данный cmd-файл придется из-под другой копии операционной системы. Я использую для этой цели уже установленный у меня Windows XP. Именно поэтому все операции в этом примере командного файла ведутся с диском E:. Под этой буквой виден мой MultiFat-диск при загрузке с обычной Windows XP.
Если вы, подобно мне, используете какой-либо современный бут-менеджер, то можете пойти по более простому пути. Сделайте в нем для Windows PE две копии загрузочной записи. Дальше, воспользовавшись возможностью бут-менеджера копировать файлы _до загрузки_системы_, укажите, что данные файлы необходимо восстанавливать при каждом перезапуске. Бут-менеджер перепишет их в свою папку. Найдите их там, и можете редактировать файлы в этой папке сколько душе угодно. При следующем перезапуске бут-менеджер положит отредактированные вами файлы в положенное им место.
Такой подход имеет еще одно полезное свойство. Если вы "уредактируете" реестр до полной невозможности загрузить систему, то всегда сможете загрузиться с другой записи и восстановить файлы обратно из ранее сделанных копий. Ведь вы всегда делаете копии перед тем как что-либо менять? Не так ли?
Приступим к опытам
1. Давайте изменим используемый по умолчанию шелл с cmd.exe /k startnet.cmd на talisman.exe. Для этого нам необходимо изменить значение ключа реестра HKLM\Setup\CmdLine.
Отыскиваем в файле строчку HKLM,"Setup","CmdLine",,"cmd.exe /k startnet.cmd" и заменяем значение параметра на c:\minint\system32\talisman\talis-man.exe. Запускаем наш update.cmd, и все готово! Осталось только переписать Талисман в указанную нами директорию. При следующей перезагрузке вместо выполнения файла startnet.cmd (и как следствие появления на экране консоли) у нас стартует Талисман. При этом вы потеряете возможность автоматического запуска сети из этого файла в момент загрузки. Но так как файл мы не стерли, никто не запрещает нам запустить его вручную. Причем именно тогда, когда у нас возникнет необходимость в использовании сети. Вообще всячески рекомендую использовать именно такую тактику работы с системой. Если вам периодически нужны какие-либо сервисы, организуйте их запуск из командного файла. И грузиться все будет быстрее, и дырок в системе меньше будет.
Вы спросите, как я узнал, где и в каком файле находится нужная мне строчка? Очень просто: чисто логическим путем. Если система исполняет при старте файл startnet.cmd, значит, где-то в коде он должен быть описан. Не из воздуха же система берет это название. Натравливаем на все файлы INF поиск по строке startnet, и вот он результат! Если вы воспользуетесь моим методом, имейте в виду, что многие конфигурационные файлы хранятся в формате UNICODE. Поэтому программы поиска, не знакомые с этой кодировкой, ничего не найдут. К таким программам, к сожалению, относится и встроенный поиск файлов в Far Manager.
Давайте проделаем еще одну подобную операцию. В момент загрузки Windows PE устанавливает в качестве фонового рисунка "поле с облаками". Давайте от него избавимся, Талисман имеет свои собственные средства для установки фоновых рисунков. Файл с рисунком лежит в наборе Windows PE и называется winpe.bmp. Пробуем отыскать эту строчку в INF-файлах. А, вот она! Файл winpedef.inf. Закомментируем в нем эту строчку, и — вуаля! После переформирования управляющих файлов в нашей мини-системе больше нет фоновой заставки.
2. Следующий по важности файл MININT\txtsetup.sif. Файл текстовый (внутри это обычный inf-файл) и обладает огромным размером (400 Кб). В принципе, большая часть его содержимого не нужна, если вы только не планируете использовать Windows PE для установки системы. В частности, можно безболезненно удалить все содержимое секций с такими названиями:
[SourceDisksNames]
[SourceDisksNames.x86]
[SourceDisksNames.amd64]
[SourceDisksNames.ia64]
[SourceDisksFiles]
[SourceDisksFiles.ia64]
[SourceDisksFiles.x86]
[Files.DeleteOnUpgrade]
[Directories.DeleteOnUpgrade]
[Files.BackupOnOverwrite]
[Files.BackupOnUpgrade]
[Files.UpgradeWin31]
После того как я проделал эту операцию (оставив на всякий случай от секций только шапки), объем файла уменьшился с 400 Кб до 22 Кб. По всей видимости, в нем еще остались какие-либо не выявленные мной лишние секции, поэтому поэкспериментируйте сами. Осмотрев оставшиеся настройки, я обнаружил две любопытные секции, которые я всячески советую изучить. Это [SetupData] и [HardwareIdsDatabase]. В первой хранятся всевозможные параметры, связанные с ходом старта системы. Вторая секция — это список идентификационных строк для разных компьютерных железок. Рекомендую выкинуть из него то, что вам не нужно, и, напротив, добавить то, что установлено в вашем компьютере. Узнать HardwareID-строки оборудования, имеющегося в вашем компьютере, можно изучив ветку реестра HKLM\System\Enum.
Также рекомендую вам пробежаться по оставшемуся содержимому файла. Там есть еще много чего интересного.
3. Следующий файл, который мы рассмотрим, MININT\SYSTEM32\biosinfo.inf.
Он содержит патчи на большое количество брэндовых компьютеров, версий BIOS и материнских плат различных изготовителей. Имеет смысл выкинуть из него все модели устройств, которых у вас нет.
4. Хоть я и обещал вам не рассказывать то, что описано в документации, тем не менее, не удержусь. В папке MININT находится файл winbom.ini. Это обычный тестовый ini-файл. Найдите в нем секцию [Factory] и добавьте к ней два параметра:
Logging = Yes
LogLevel = 2
После того как вы это сделаете, система начнет в папках MININT и MININT/debug создавать лог-файлы. Анализируя их, можно многое узнать о том, что именно происходит в момент старта системы, инициализации сети или поиска PnP-оборудования. Остальные параметры этого файла описаны в прилагаемой документации. Читая, обратите внимание на то, что не все описанные опции используются Windows PE. Большинство остальных опций необходимо лишь для автоматизированной установки обычной Windows XP.
Продолжение следует.
Герман Иванов
PS: Наверняка у читателей возникнет масса вопросов по этому материалу. Напоминаю вам о существовании форума на сайте газеты. Форум расположен по адресу: http://www.nestor.minsk.by/kg . Я частенько туда заглядываю и попытаюсь разрешить большинство возникших у вас проблем.
Проходя мимо лотка с компьютерными дисками, я обратил внимание на незнакомое название на обложке одного из дисков. Надпись крупными буквами гласила: "Windows XP Preinstallation Environment". Заинтересовавшись, взял диск в руки и стал изучать подробнее. Развернутый русский комментарий на задней обложке выглядел таким образом:
"Microsoft Windows Preinstallation Environment (Windows PE) минимальная версия операционной системы на основе ядра WinXP SP1. Запускается полностью с загрузочного CDROM и заменяет MSDOS при необходимости подготовки диска к установке операционной системы (format и др. операции). Windows PE также позволяет автоматизировать установку Windows, предоставляет доступ к NTFS дискам, файлам и registry для резервного копирования и восстановления работоспособности системы, поддерживает работу в сети."
Любопытная штука, подумал я, купил диск и отправился домой разбираться. Итак, диск ложится в лоток CDROM'а, и первым делом я начинаю разглядывать, что именно на нем записано.
Первый опыт
Внешне структура диска ничем особенным не отличается от порезанного пиратами загрузочного диска Windows XP. В корне лежат обычные для такого рода дисков файлы. Флажки-идентификаторы "win51", "win51ip" и "win51ip.sp1" гласят о том, что мы имеем дело с Windows XP SP1. Лежащий рядом файл bootfont.bin указывает на то, что версия эта локализованная (русская). Есть некая папка UTIL, в которой свалена куча явно не относящегося к делу постороннего софта типа "Acronis Boot Mana-ger". Присутствует папка i386, заглядываем в нее... О-о-опс — 132 Мб! Маловато будет для нормального дистрибутива, да и структура вложенных папок не похожа на обычное расположение файлов Windows XP! Для сравнения: обычный дистрибутив Windows XP Corporate Edition, с интегрированным в него Service Pack 1, занимает около 600 Мб. Отложим подробное изучение этой папки на потом и продолжаем беглый осмотр диска. Помимо уже просмотренных папок, на диске оказалась еще одна, называющаяся "WINPE". Заходим и оглядываемся. Все ее содержимое занимает объем около 5 Мб. Состоит она из некоторого количества утилит и файлов данных, явно не являющихся загрузочными и уж тем более системными. Хотя... Ну ладно. В общих чертах все понятно. Давайте попробуем загрузиться с этого диска и посмотрим, что получится.
Перезагружаем компьютер, заходим в BIOS, устанавливаем в качестве первого загрузочного устройства CDROM. Сохраняемся, выходим. Компьютер пересчитывает память и пытается загрузиться с компакт-диска. На экран выводится привычная надпись с просьбой нажать любую клавишу для того, чтобы начать загрузку c CDROM. Нажимаем пробел, и в ответ на наши действия возникает не менее привычный экран начальной загрузки установщика Windows XP. Интересное начинает происходить сразу после него. Вместо того, чтобы предложить мне мастер выбора активного раздела, экран переключается в графический режим 640x480x16(?). На нем появляется фоновый рисунок рабочего стола Windows XP. Ну, тот самый, с полем, небом и облаками. Помедлив некоторое время, экран переключается в режим 800x600x16(?), вместо ожидаемого уже мной таскбара с дектопом на экран выскакивает консольное окно. В нем быстро пробегают какие-то незнакомые мне команды, и через некоторое время появляется обычное командное приглашение консоли. На этом загрузка системы и заканчивается.
В торчащей в центре экрана консоли моргает курсор, явно ожидая ввода каких-либо команд. Начинаем осматриваться. Последовательностью команд C:, dir, D:, dir, E:, dir пытаюсь отыскать свой обычный системный диск с Windows XP. Ага — вот он! Заходим в папку Program Files, затем в Far manager и запускаем Far. Теперь мы можем работать в более комфортных условиях. Пробуем запустить WinRar — запускается совершенно нормально. Уже хорошо. На глаза мне попадается папка с софтом для CD-рекордера Nero. Ехидно усмехнувшись, захожу в нее и пытаюсь запустить программу. К моему удивлению, Nero благополучно стартует, находит рекордер и предлагает записать диск. Очень хорошо!
Продолжаем исследование. Пробуем запустить Partition Magic 8.0. Работает! Acrobat Reader? Тоже все в порядке. А вот посмотреть банальные файлы справки *.hlp не получается. Нет, говорят, у меня файла win32help.exe.
Пробуем запустить Internet Explorer — не хочет. А как поведет себя браузер Mozilla 1.2? Исправно работает. Переходим в папку Office XP и пытаемся запустить Word. На экране практически мгновенно показывается окно редактора, но вслед за ним также мгновенно выскакивает сообщение о том, что Word не обнаружил пользовательского профиля и в этой связи работать не будет. Надо будет потом поковыряться.
Тут мне на глаза попадается папка с альтернативной оболочкой для Win32-систем Talisman.
Для тех, кто не знаком с этой чудесной программой, расскажу, что она подменяет собой explo-rer.exe и позволяет вам создать собственный интерфейс для любой операционной системы семейства Windows (если у вас на компьютере их несколько — то единый для всех). Оболочка не требует установки, не привязывается к реестру, все настройки хранит в конфигурационных текстовых файлах, лежащих в ее собственной директории. Рабочая область может быть полностью перепрограммирована под ваши нужды. Этакая маленькая альтернативная графическая среда в стиле "Линукс", только работающая в Windows. Для фэнов "Линукс": там даже имеются готовые темы, эмулирующие KDE и QNX. Темы вы можете создавать сами, в том числе и полностью футуристические (автор статьи долго работал в XP, пользуясь подсмотренным на скриншотах Longhorn интерфейсом). Если же вам лень рисовать интерфейс, можете взять готовый в Интернете: их там пруд пруди.
Программа платная, впрочем, для России ее цена составляет сущие копейки. Также можно зарегистрировать ее привычным для нашего пользователя образом — через платежную систему www.astalavista. box.sk. Забегая вперед, сообщу, что в обсуждаемом случае нам это не потребуется.
Итак, вернемся к Windows PE и запускаем Talisman. При старте он ругается на то, что у него возник "Runtime Error 216". Но тем не менее исправно запускается и даже вроде вполне корректно работает. Эврика — лапочка ты моя! Закрываю ставший теперь ненужным Far manager. Набираю "exit" в оставшейся после него консоли. Тут происходит неожиданное. Талисман, не говоря ни слова, схлопывается вслед за консолью, и машина уходит на обычную перезагрузку! В смысле, не падает по ошибке, а именно уходит на перезагрузку, словно мы выбрали пункт Завершение работы в меню Пуск! Анализ происходящего навел меня на мысль о том, что Windows PE использовала в качестве рабочего шелла именно это консольное окно. Закрыв его, я инициализировал конец сеанса меня как пользователя.
Воспользовавшись вынужденным перерывом в исследованиях, загружаюсь в обычные Windows XP и приступаю к более детальному изучению содержимого компакт-диска. Как показал ранее проведенный мной эксперимент, софтина этого достойна. В одной из папок обнаружился файл справки, называющийся winpe.chm. Открываю его и как истинный программист только теперь приступаю к изучению документации.
Читая документацию
Если верить введению, Windows PE — это минимальная Win32-подсистема с ограниченным набором служб, базирующаяся на ядре, работающем в защищенном режиме. Она реализует минимальную функциональность, достаточную лишь для того, чтобы проверить совместимость вашего железа с Windows XP и установить обычную Windows XP с сетевого диска. Также с ее помощью можно автоматизировать и обычную установку с компакт-диска...
Ну, что с ее помощью можно сделать, мы только что видели в ходе эксперимента. Поэтому перейдем от этой главы со сказками к пункту с интригующим названием "Ограничения Windows PE".
Ограничения Windows PE
Так как исходный документ написан на английском языке и поэтому многим русскоязычным читателям будет непонятен, приведу перевод этого раздела целиком, со своими попутными комментариями. Согласно тексту этого раздела, Windows PE обладает следующими ограничениями по сравнению с полной Windows XP:
1. C целью уменьшения размера операционной системы она включает неполный набор функций Windows API. В наличии имеются только функции дискового ввода-вывода и функции базового ядра Win32 API.
Реализация "расширенных" функций API происходит, как правило, в отдельно регистрируемых DLL. Поэтому данное ограничение не выглядит серьезным для опытного пользователя.
2. Для того, чтобы предотвратить использование OS компьютерными пиратами, система автоматически перезагружается после 24 часов непрерывной работы.
Этот пункт мне больше всего понравился! Не могу не отдать должное чувству юмора составителя этого документа из "Майкрософт". Эвона как они нашего брата прищучили! Ну ладно, хоть будет повод вспомнить о существовании жены, книг, друзей и того, что людям надо регулярно спать.
3. Невозможно получить доступ к файлам и папкам Windows PE с другого компьютера в сети.
Говоря русскими словами, это только клиент. Сервером ей не быть. Крамольную мысль о том, а что будет, если мы оденем на нее альтернативный (не "Майкрософт") софт типа MySQL или Apache, мы отбросим как не подобающую торжественному случаю данной презентации.
4. Distributed File System (DFS) не поддерживается.
Правда, в прилагаемом к пакету файле README говорится, что это неправда — все поддерживается.
5. По сети можно ходить только с помощью протоколов TCP/IP и NetBIOS через TCP/IP. Протокол IPX/SPX не поддерживается.
Интересно, а кому он в наше время вообще нужен? Игрокам в ДОСовский DOOM по сети? Дык! Майкрософтовская реализация этого протокола никогда с ним и не работала — приходилось отдельную от Netware ставить.
6. Порядок расположения логических дисков и записи в реестре не сохраняется между перезагрузками.
Говоря русскими словами, система каждый раз строит реестр заново в момент загрузки!!! Шоколадный торт тому, кто это придумал!!! Прощай проблема замусоренности реестра левым софтом! Прощай отказ нелицензированного программного обеспечения работать до пор, пока мы не заплатили им денег! Прощай само понятие запорченного неумелым редактированием реестра! Здравствуй открытая для всевозможных низкоуровневых модификаций система. Забегая вперед, замечу, что вычислить файлы, в которых хранится реестр, и средства для его редактирования оказалось совсем нетрудно. В принципе, с помощью современных бут-менаджеров (к примеру, System Commander или Acronis Boot Manager) можно даже организовать загрузку одной и той же системы с разными реестрами.
Значимость такой возможности сравнима лишь с возможностью загрузки разных кернелей в "Линукс".
7. Windows PE требует VGA-совместимого устройства и работает в разрешении 800x600. Если Windows PE не смогла определить ваше видеоустройство, она сваливается в разрешение 640x480.
Вот это очень плохо. Плохо не столько то, что работа ведется с разрешением 800x600, а то, что рефреш экрана для драйвера VGA в "Майкрософт" равен 60 Гц. Работу именно этого драйвера вы наблюдаете, когда загружаетесь в режиме Safe Mode. И если заставить его работать в любом произвольном разрешении достаточно легко (лишь бы видеокарта тянула), то установить рефреш, отличный от 60 Гц, мне пока не удалось. Работы в этом направлении мной ведутся, и я поделюсь результатами с вами чуть ниже по тексту. Авось кто что подскажет.
8. Windows PE слишком велика, чтобы ее можно было записать на дискету.
Думаю, мы это легко переживем:).
9. Вы не можете построить пользовательскую версию Windows PE с помощью дистрибутива Windows XP Home Edition.
Любопытный пункт, особенно в части "пользовательской версии". Вернемся к нему чуть позже.
10. Windows PE не поддерживает Net Framework.
Очень плохо. Надеюсь, со временем мне или кому-нибудь еще удатся с этим разобраться.
11. В среде Windows PE отсутствует возможность запускать старые MSDOS и Win31-приложения в связи с отсутствием механизма WOW32 (Windows внутри Windows32).
Говоря другими словами, это чисто 32-битная среда. Неприятно, конечно, но вполне терпимо. Может быть, это даже и к лучшему — меньше глюков будет. Также в этом пункте содержится любопытное замечание. Говоря о невозможности запуска 16-битных программ в 32-битной среде, автор статьи замечает, что также невозможен запуск 32-битных программ в 64-битной среде. Читая это, легко сделать вывод, что Windows PE предназначена не только для 32-битных версий Windows, но и для 64-битных ее вариантов. Дальнейшее чтение документации подтвердило этот факт.
Функции Windows API, не поддерживаемые Windows PE
Ниже приводится полный список того, что было исключено из WinAPI в этой версии системы. Многое из этого траурного списка в принципе жизненно необходимо, многое совершенно, на мой взгляд, не нужно. Что из указанного нужно (не нужно) именно вам, судить также именно вам. Я надеюсь, что по мере широкого распространения системы народ найдет способ все это вернуть назад.
1) Windows Management Instrumentation (WMI)
2) Windows Multimedia
3) Still Image
4) OpenGL
5) NetShow Theater Administration
6) Windows Shell
7) Access Control
8) Power Options
9) Printing and Print Spooler
10) Window Station and Desktop
11) Terminal Services
12) User Profile
13) Tape Backup
Чуть ниже по тексту этой главы документации расположена ссылка, озаглавленная "Создание пользовательской версии Windows PE". Будучи заинтригован рассказами о 64-битных версиях Windows и "невозможности создания Windows PE с помощью Windows XP Home Edition" (казалось бы, а при чем тут она?), я по этой ссылке и отправился. То, что я вычитал в этой главе, заставило меня отвесить челюсть ниже колен!
Как выяснилось, никакой такой отдельной операционной системы Windows PE просто не существует. Windows PE — это набор утилит размером около 5 Мб (тех самых, что мы видели на компакт-диске). Для своей работы он требует наличия у вас дистрибутива Windows XP SP1. Программа стартует, вытягивает необходимые файлы из дистрибутива и в качестве результата своей деятельности формирует:
1. ISO-образ диска, приготовленный для записи на загрузочный компакт-диск.
2. Структуру каталогов с файлами, которые можно просто переписать на логический диск и таким образом установить дополнительную сервисную систему на ваш жесткий диск. Ну просто MSDOS какой-то!!!
Таким образом, пираты сделали мне любезность, заранее сформировав для меня загрузочный компакт-диск Windows PE из русской версии Windows XP SP1. В конце концов, не продавать же им на компакт-диске программу размером всего 5 Мб!
Зачем она такая кастрированная нам нужна?
Думаю, этим вопросом зададутся многие читатели.
Ну, первой причиной, безусловно, являются требования к аппаратному обеспечению. Для нормального развертывания данной системы требуется всего около сотни мегабайт дискового пространства и 40 Мб памяти. Причем даже эти, довольно незначительные, требования совсем не окончательны. Вы можете удалить из системы поддержку сети и многие другие ненужные вам функции, и требования дополнительно сократятся. Информация о назначении большинства используемых системой файлов есть в прилагаемой документации. При этом вы получаете на руки современную 32-битную (или 64-битную, по вашему выбору) систему.
Вторая причина, а для меня, пожалуй, первая, единственная и основная, заключается в том, что данная система представляет из себя уникальный полигон для возможности изучения самой современной из операционных систем "Майкрософт".
Изучая реакцию пользователей "Линукс" на серию моих статей "Расхожие мифы о "Линукс" и Windows", я сделал вывод, что основной причиной перехода очень многих из них на альтернативную платформу была "закрытость" майкрософтовских операционных систем. Они не знали, как можно изменить тот или иной аспект работы ОС, и ушли на более простой ее эквивалент. Windows PE — это также более простой эквивалент Windows XP. В ней можно ковыряться сколько душе угодно, не боясь что-либо испортить. Ставьте ее второй системой и смело экспериментируйте! Благодаря простоте ее развертывания вам достаточно лишь переписать из архива измененные вами файлы обратно, и все.
Третья причина заключается в том, что данная ОС находится еще в самом начале своего пути. Готовя материал к этой статье, я прочесал Интернет в поисках каких-либо материалов по Windows PE и… ничего не нашел. Так что вы сейчас читаете эксклюзивный материал. На сайте самой "Майкрософт" упоминается лишь о том, что они планируют выпустить такую штуку в обозримом будущем. Новостные ленты русскоязычных сайтов дружно повторяют это заявление "Майкрософт". Единственное упоминание об этой ОС я нашел в недрах русскоязычного сайта "Майкрософт" для ОЕМ-поставщиков. Там говорилось, что данная ОС "прикладывается" в качестве сервисной к энному количеству экземпляров обычной Windows XP OEM. Видимо, там наши пираты ее и взяли.
Хочет того или нет "Майкрософт", но, на мой взгляд, этой и подобной этой модификациям Windows XP предстоит большое будущее. Они дают возможность пользователю самому строить свою систему из кубиков подобно "Линукс". И по мере распространения Windows PE количество этих "кубиков" от посторонних производителей будет увеличиваться и увеличиваться.
Кстати, данная ОС не является коммерческим продуктом.
Ставим Windows PE на винчестер
Предупреждение:
Для того, чтобы суметь повторить все то, о чем рассказывается в этой главе, вы должны уметь формировать загрузочные компакт-диски и пользоваться программами бут-менеджеров — к примеру, System Commander или Acronis Boot Manager. Последний из них обладает более широкими возможностями и, кроме того, прикладывается в придачу к ASP Linux.
Учебник по навыкам работы с этими программами выходит за рамки данной статьи, она и так получилась слишком большая. Если вы не умеете ими пользоваться, пишите письма в редакцию с просьбой опубликовать статью на данную тематику. Я с удовольствием все вам подробно расскажу и покажу в отдельной статье.
Итак, бросив читать документацию, я начал экспериментировать.
1. Переписываем папку Windows PE (5 Мб) на логический диск.
2. Вставляем компакт-диск с Windows XP SP1 в CD-ROM.
3. Пытаемся, согласно документации, запустить в этой папке файл mkimg.cmd, передав ему в качестве параметров букву логического диска и путь к папке назначения.
Вот так:
mkimg.cmd Z: D:\MINIXP
где Z: — буква CD-ROM в моей системе, а D:\MINIXP — папка, в которой я хочу увидеть результат работы программы.
Тут нас постигает первый облом.
E:\WINDOWS PE> MKIMG.CMD Z: D:\minixp
Verifying media ...
Building hives ...
Failed to copy setupreg.hiv file from CD
Я чуть умом не подвинулся пытаясь сообразить, почему он не может скопировать этот пресловутый setupreg.hiv. К счастью, анализ текста mkimg.cmd навел меня на мысль проверить, что написано в файле ошибок 1. А в файле было сказано: "нет доступа". Понятненько. Снимаем атрибут ReadOnly со всех файлов в папке и повторяем операцию. Теперь у нас все прошло на ура. По экрану долго бегут разные строчки, и в конце концов вы получите нечто вроде:
....
1155 files were copied from 1155 files.
Successfully created Windows PE directory in D:\minixp
Удален файл — d:\minixp\I386\system32\drivers\te_protu.qm
Удален файл — d:\minixp\I386\system32\drivers\te_protu.sm
Удален файл — d:\minixp\I386\system32\drivers\te_protm.pm2
Удален файл — d:\minixp\I386\system32\drivers\te_protm.pm
Удален файл — d:\minixp\I386\system32\drivers\gm.dls
E:\WINDOWS PE>
Заходим в папку D:\MINIXP и наблюдаем структуру каталогов, пригодную к записи на компакт-диск. О том, как сделать загрузочный диск WinXP, существует достаточно много статей в Интернете, и я не буду распространяться на эту тему. Лучше я вам расскажу о том, как установить эту систему на жесткий диск. Для этого нам будет необходимо:
1. Создать в корне будущего загрузочного диска папку C:\MININT.
2. Переписать в нее все содержимое папки D:\MINIXP\I386 вместе с вложенными поддиректориями.
3. Перенести файл C:\MININT\ ntdetect.com в корень диска (C:\ntdetect.com).
4. Перенести файл C:\MININT\ setupldr.bin в корень диска и переименовать его в ntldr. (C:\ntldr).
В принципе, вот и все. Тем не менее, тут возникает одна проблема. А как нам заставить нашу операционную систему стартовать? Тут существует масса вариантов. Во-первых, можно воспользоваться прилагаемой к Windows PE утилитой sys.exe. К сожалению, на купленном мной диске такая утилита отсутствовала. Второй способ — с помощью Partition Magic организуем отдельный загрузочный диск, форматируем его под NTFS и копируем на него Windows PE. Остается только подключить этот диск к вашему любимому бут-менеджеру, и все.
Я, будучи извращенцем, пошел по другому пути. У меня уже установлен MultiFat32-раздел под Acronis Boot Manager. Поэтому я просто переписал необходимые файлы на этот диск и с помощью DiskEditor модифицировал загрузочный сектор диска так, чтобы он загружал WinNT-, а не Win9x-системы. Образец правильного загрузчика можно взять с любого другого логического диска, отформатированного из-под WindowsXP(win2k,winnt). Acronis при перезагрузке подхватил эту "вновь созданную" систему и включил ее в свое меню.
Если просьб читателей в сторону редакции будет очень много, я, пожалуй, тряхну стариной и напишу простенькую msdos-утилиту, которая делает такую операцию. Так что пишите письма!
Начинаем колдовать
Предупреждение:
Для того, чтобы суметь повторить все то, о чем рассказывается в этой главе, вы должны разбираться в структурах inf-файлов и иметь хотя бы общее представление о том, что такое реестр. Также я не буду рассматривать те возможности, которые подробно описаны в документации. Вам придется прочитать о них самостоятельно.
Итак, вы сумели установить Windows PE на жесткий диск и готовы приступить к ее модификации. Для начала я совершу краткий обзор используемых Windows PE управляющих файлов.
1. Самые главные управляющие файлы Windows PE расположены в папках MININT/system32 и MININT/SYSTEM32/CONFIG. Называются они setupreg.hiv, software и default. Это бинарные файлы. В них хранится содержимое реестра. При старте Windows PE каждый раз считывает содержимое этих файлов и переносит его в реестр. Таким образом, умея их модифицировать, мы можем заполнить реестр нашей мини-системы произвольными данными.
Для того, чтобы вносить изменения в их содержимое, предназначена утилита bldhives.exe, находящаяся в папке утилит WINPE. Помимо нее, в этой папке находится большое количество файлов с расширением *.inf. Именно их программа и использует для того, чтобы изменить содержимое исходно скопированных ею из дистрибутива Windows XP файлов. Поэтому, если мы хотим что-либо добавить или изменить в этих файлах, нам необходимо поменять информацию в соответствующем inf-файле, а затем запустить утилиту bldhives, передав ей в качестве параметра название файла config.inf.
Вот таким образом:
bldhives.exe .\config.inf
В результате мы получим три файла:
1) software
2) default
3) setupreg.hiv
Первые два файла мы копируем в папку MININT\SYSTEM32\ CONFIG, а setupreg.hiv в папку MININT\SYSTEM32. Теперь при следующей перезагрузке в реестре Windows PE окажутся нужные нам данные. Для упрощения работы я предлагаю вам создать командный файл update.cmd с нужной последовательностью команд и пользоваться им для апдейта реестра Windows PE. Файл должен выглядеть примерно так:
bldhives.exe .\config.inf
copy e:\minint\system32\config\software e:\minint\system32\config\software.old /y
copy software e:\minint\system32\ config /y
copy e:\minint\system32\config\de-fault e:\minint\system32\config\de-fault.old /y
copy default e:\minint\system32\ config /y
copy e:\minint\system32\setupreg.hiv e:\minint\system32\setupreg.hiv.old /y
copy setupreg.hiv e:\minint\system32 /y
Как вы уже, наверно, догадались, Windows PE не даст вам так просто из-под себя заменить файлы software и default. Они во время работы залочены и фактически являются "зеркалом" реестра. Поэтому запускать данный cmd-файл придется из-под другой копии операционной системы. Я использую для этой цели уже установленный у меня Windows XP. Именно поэтому все операции в этом примере командного файла ведутся с диском E:. Под этой буквой виден мой MultiFat-диск при загрузке с обычной Windows XP.
Если вы, подобно мне, используете какой-либо современный бут-менеджер, то можете пойти по более простому пути. Сделайте в нем для Windows PE две копии загрузочной записи. Дальше, воспользовавшись возможностью бут-менеджера копировать файлы _до загрузки_системы_, укажите, что данные файлы необходимо восстанавливать при каждом перезапуске. Бут-менеджер перепишет их в свою папку. Найдите их там, и можете редактировать файлы в этой папке сколько душе угодно. При следующем перезапуске бут-менеджер положит отредактированные вами файлы в положенное им место.
Такой подход имеет еще одно полезное свойство. Если вы "уредактируете" реестр до полной невозможности загрузить систему, то всегда сможете загрузиться с другой записи и восстановить файлы обратно из ранее сделанных копий. Ведь вы всегда делаете копии перед тем как что-либо менять? Не так ли?
Приступим к опытам
1. Давайте изменим используемый по умолчанию шелл с cmd.exe /k startnet.cmd на talisman.exe. Для этого нам необходимо изменить значение ключа реестра HKLM\Setup\CmdLine.
Отыскиваем в файле строчку HKLM,"Setup","CmdLine",,"cmd.exe /k startnet.cmd" и заменяем значение параметра на c:\minint\system32\talisman\talis-man.exe. Запускаем наш update.cmd, и все готово! Осталось только переписать Талисман в указанную нами директорию. При следующей перезагрузке вместо выполнения файла startnet.cmd (и как следствие появления на экране консоли) у нас стартует Талисман. При этом вы потеряете возможность автоматического запуска сети из этого файла в момент загрузки. Но так как файл мы не стерли, никто не запрещает нам запустить его вручную. Причем именно тогда, когда у нас возникнет необходимость в использовании сети. Вообще всячески рекомендую использовать именно такую тактику работы с системой. Если вам периодически нужны какие-либо сервисы, организуйте их запуск из командного файла. И грузиться все будет быстрее, и дырок в системе меньше будет.
Вы спросите, как я узнал, где и в каком файле находится нужная мне строчка? Очень просто: чисто логическим путем. Если система исполняет при старте файл startnet.cmd, значит, где-то в коде он должен быть описан. Не из воздуха же система берет это название. Натравливаем на все файлы INF поиск по строке startnet, и вот он результат! Если вы воспользуетесь моим методом, имейте в виду, что многие конфигурационные файлы хранятся в формате UNICODE. Поэтому программы поиска, не знакомые с этой кодировкой, ничего не найдут. К таким программам, к сожалению, относится и встроенный поиск файлов в Far Manager.
Давайте проделаем еще одну подобную операцию. В момент загрузки Windows PE устанавливает в качестве фонового рисунка "поле с облаками". Давайте от него избавимся, Талисман имеет свои собственные средства для установки фоновых рисунков. Файл с рисунком лежит в наборе Windows PE и называется winpe.bmp. Пробуем отыскать эту строчку в INF-файлах. А, вот она! Файл winpedef.inf. Закомментируем в нем эту строчку, и — вуаля! После переформирования управляющих файлов в нашей мини-системе больше нет фоновой заставки.
2. Следующий по важности файл MININT\txtsetup.sif. Файл текстовый (внутри это обычный inf-файл) и обладает огромным размером (400 Кб). В принципе, большая часть его содержимого не нужна, если вы только не планируете использовать Windows PE для установки системы. В частности, можно безболезненно удалить все содержимое секций с такими названиями:
[SourceDisksNames]
[SourceDisksNames.x86]
[SourceDisksNames.amd64]
[SourceDisksNames.ia64]
[SourceDisksFiles]
[SourceDisksFiles.ia64]
[SourceDisksFiles.x86]
[Files.DeleteOnUpgrade]
[Directories.DeleteOnUpgrade]
[Files.BackupOnOverwrite]
[Files.BackupOnUpgrade]
[Files.UpgradeWin31]
После того как я проделал эту операцию (оставив на всякий случай от секций только шапки), объем файла уменьшился с 400 Кб до 22 Кб. По всей видимости, в нем еще остались какие-либо не выявленные мной лишние секции, поэтому поэкспериментируйте сами. Осмотрев оставшиеся настройки, я обнаружил две любопытные секции, которые я всячески советую изучить. Это [SetupData] и [HardwareIdsDatabase]. В первой хранятся всевозможные параметры, связанные с ходом старта системы. Вторая секция — это список идентификационных строк для разных компьютерных железок. Рекомендую выкинуть из него то, что вам не нужно, и, напротив, добавить то, что установлено в вашем компьютере. Узнать HardwareID-строки оборудования, имеющегося в вашем компьютере, можно изучив ветку реестра HKLM\System\Enum.
Также рекомендую вам пробежаться по оставшемуся содержимому файла. Там есть еще много чего интересного.
3. Следующий файл, который мы рассмотрим, MININT\SYSTEM32\biosinfo.inf.
Он содержит патчи на большое количество брэндовых компьютеров, версий BIOS и материнских плат различных изготовителей. Имеет смысл выкинуть из него все модели устройств, которых у вас нет.
4. Хоть я и обещал вам не рассказывать то, что описано в документации, тем не менее, не удержусь. В папке MININT находится файл winbom.ini. Это обычный тестовый ini-файл. Найдите в нем секцию [Factory] и добавьте к ней два параметра:
Logging = Yes
LogLevel = 2
После того как вы это сделаете, система начнет в папках MININT и MININT/debug создавать лог-файлы. Анализируя их, можно многое узнать о том, что именно происходит в момент старта системы, инициализации сети или поиска PnP-оборудования. Остальные параметры этого файла описаны в прилагаемой документации. Читая, обратите внимание на то, что не все описанные опции используются Windows PE. Большинство остальных опций необходимо лишь для автоматизированной установки обычной Windows XP.
Продолжение следует.
Герман Иванов
PS: Наверняка у читателей возникнет масса вопросов по этому материалу. Напоминаю вам о существовании форума на сайте газеты. Форум расположен по адресу: http://www.nestor.minsk.by/kg . Я частенько туда заглядываю и попытаюсь разрешить большинство возникших у вас проблем.
Компьютерная газета. Статья была опубликована в номере 03 за 2003 год в рубрике soft :: win