ptaha
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Внесу свои пять копеек. Интеграция http://www.driverpacks.net/ [1] или один образ для всех чипов. Делаем один более-менее универсальный клонируемый дистрибутив. Подходит больше для тех, кому не надо ставить это "на поток" - ибо в случае серийного производства кастомизация образов может значительно сократить время и потраченные нервы. В начале хочу лишь напомнить о полезности виртуальной машины в этом неблагодарном деле, особенно VMWare [5] - со встроенной системой SnapShot-ов (позволяет сохранять целиком образ системы в определенном состоянии и потом возвращатся к нему). К тому же, VMWare Server стал совершенно бесплатным - необходимо лишь пройти простейшую регистрацию на сайте и получить бесплатные серийные номера. Так же не могу не отметить крайнюю полезность FAR'a [6] и замечательных плагинов для него: S&R (поиск и замена в файлах с использованием регулярных выражений) и Unicode Wizard (конвертация и правка файлов в различных форматах уникода). Итак, существует две основных проблемы при клонировании дистрибутивов: это проблема совместимости Hardware Abstraction Layer (HAL) и драйверов (точнее, их отстутсвия) на различные контроллеры жестких дисков. Особенно это касается SATA-контроллеров и так называемых FakeRaid-контроллеров - полупрограммных RAID, как правило встроенных в мать. Решение первой проблемы описано в статье [2]. Самая полезная вырезка из этой статьи: Цитата: non-ACPI PIC => ACPI PIC => ACPI APIC UP <=> ACPI APIC MP | и далее по тексту: Цитата: если в вашем компьютерном хозяйстве достаточно много систем с раскладкой ACPI PIC ("Компьютер с ACPI", "ACPI PC") - используйте один из них для создания образа. Этот образ можно будет использовать для всех компьютеров, кроме многопроцессорных - на них установленный таким способом Windows работать будет, но только с одним процессором. если компьютеры с ACPI PIC уже не используются или планируется их замена в ближайшее время - то целесообразно (а при наличии потребности устанавливать Windows из образа на многопроцессорные системы - просто необходимо) создать образ в раскладке ACPI APIC UP ("Однопроцессорный компьютер с ACPI", "ACPI Uniprocessor PC"). Этот образ можно будет использовать для всех компьютеров, кроме устаревших - на машинах с ACPI PIC установленный таким способом Windows просто не запустится. | В дополнение к сказанному, в более ранней статье [3] подробно описано как необходимо модифицировать boot.ini и где брать необходимые hal*.dll. Привожу слегка измененную версию: Цитата: [boot loader] timeout=5 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU" /noexecute=optin /fastdetect multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="1.Standart PC" /fastdetect /hal=hal.dll multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="2.ACPI PC" /fastdetect /hal=halacpi.dll multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="3.ACPI Uniprocessor PC " /fastdetect /hal=halaacpi.dll multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="3.ACPI Multiprocessor PC " /fastdetect /hal=halmacpi.dll multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="4.Uniprocessor PC with MPS" /fastdetect /hal=halapic.dll multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="4.Multiprocessor PC with MPS" /fastdetect /hal=halmps.dll | Это в некоторых случаях все-же поможет поднять образ на "несовместимом" HAL. Для тех кто не понял - при первой загрузке виндов на поднятом образе можно выбрать более подходящий HAL. Вторая часть проблемы - совместимость с контроллерами жестких дисков. Выход есть! Первый заключается в интегрирвоании драйверов непосредственно в дистрибутив с последующей установкой и подготовкой к заливке (процесс интеграции подробно описан на сайте DriverPacks [1], использование подготовленной таким образом системы здесь рассматриватся не будет). Второй - использование уже готового дистрибутива-образа с интеграцией необходимых драйверов на стадии sysprep-а. Нам понадобится скачать по ссылке [1] DriverPack Chipset DriverPack CPU DriverPack LAN DriverPack MassStorage основное! В принципе, никто не мешает "интегрировать" в образ драйвера для видео, аудио и WLAN - достаточно скачать соответствующие драйверпаки. Но они много весят, поэтому я не стал включать их в "универсальный" образ - их всегда можно "доставить" руками. Итак, скачиваем, распаковываем в корневую директорию необходимые паки (важно сохранить оригинальную структуру каталогов: \D\M для MassStorage, \D\C для Chipset и так далее. чем короче пути - тем лучше). Далее, нам необходимо подготовить sysprep.inf и поможет нам в этом UtilitySpotlight [4]. UtilitySpotlight создастнеобходимые списки драйверов. Скачиваем с сайта мелкомягких, распаковываем в любой удобный каталог. Создаем "болванку" файла Sysprep.inf (это необходимый минимум опций, остальное добавляйте по вкусу. добавляя прочие секции не забывайте, что секция [SysprepMassStorage] должна быть в самом конце файла!) Цитата: [Unattended] OemSkipEula=Yes InstallFilesPath=C:\Sysprep\i386 TargetPath=\WINDOWS UpdateInstalledDrivers=Yes DriverSigningPolicy=Ignore [Sysprep] BuildMassStorageSection=Yes [SysprepMassStorage] | После чего запускаем следующие команды: 1. Цитата: cscript //nologo PNPPath.vbs /folder:"\D" /log:PNPPath.txt /inf /answer:Sysprep.inf /length:4096 /q | Проверяем наш Sysprep.inf - в нем должна появится строка OemPnPDriversPath 2. Цитата: cscript //nologo PNPPath.vbs /folder:"\D" /log:PNPPath_reg.txt /inf /reg /env /q | Эта команда добавляет в реестр (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\"DevicePath") пути для поиска драйверов. По идее, сиспреп сам должен заполнить этот параметр реестра, но я рекомендую заполнить его вручную, используя этот метод 3. Цитата: cscript DriverInfInfo.vbs /folder:"\D\M" /log:DriverInfInfo_M.txt /format:CSV /q | Эта команда сгенерит DriverInfInfo_M.txt со списком устройств, драйвера для которых найдены в DriverPack MassStorage. Этот список в дальнейшем будем использовать для создания секции [SysprepMassStorage] файла Sysprep.inf. Совсем немного теории. Как гласит оригинальная документация к SysPrep-у, в секции [SysprepMassStorage] файла Sysprep.inf должны лежать записи в следующем виде: Цитата: hardware_id = path_to_device_inf[, disk_directory[, disk_description[, disk_tag]]] | Результат последнего скрипта - файл DriverInfInfo_M.txt - содержит избыточную информацию, в "неправильном" формате да еще и в Unicode. Последовательность действий такова: избавляемся от Уникода (конвертируем в привычный нам ACSII - это можно сделать либо FAR-ом с помощью вышеназванных утилит, либо стандартным блокнотом через "Сохранить как...") и вторым шагом - преобразуем в нужному виду. Как нельзя лучше для этого подходят следующие RegExp-ы (еще раз привет FAR'у и S&R) Цитата: Строка поиска: "(([^"]+\\)[^"\\]+\.inf)",("[^"]*",){6}"([^"]*)","[^"]*","([^"]*)" Строка замены: $4="$1", "$2", "$5" | В результате из строк вида: Цитата: "C:\D\M\VM\vmscsi.inf","SCSIAdapter","VMware, Inc.","10/01/2004,1.2.0.3","VMware, Inc.","VMware.Mfg","","PCI\VEN_104B&DEV_1040","HardwareID","VMware SCSI Controller" | получаем строки, пригодные для сиспрепа: Цитата: PCI\VEN_104B&DEV_1040="C:\D\M\VM\vmscsi.inf", "C:\D\M\VM\", "VMware SCSI Controller" | Да, не забываем удалить первую строчку с комментарием из файла DriverInfInfo_M.txt. Итак, промежуточный итог таков: 1. Мы имеем Sysprep.inf с заполненным параметром OemPnPDriversPath и прочими настроенными параметрами 2. Мы имеем файл DriverInfInfo_M.txt, содержащий список всех поддерживаемых нашим драйверпаком контроллеров жестких дисков. Далее, необходимо дать возможность сиспрепу самостоятельно заполнить секцию [SysprepMassStorage] драйверами, которые уже имеются в системе. Для этого копируем наш подготовленный Sysprep.inf в каталог c:\sysprep и запускаем команду Цитата: из этого же каталога. Процесс составления списка поддерживаемого оборудования занимает 1-2 минуты. После выполнения удаляем из секции [SysprepMassStorage] все строки, которые касаются c:\windows\inf\machine.inf, c:\windows\inf\pnpscsi.inf и c:\windows\inf\scsi.inf оставляя только строки, относящиеся к c:\windows\inf\mshdc.inf Осталось только дополнить получившуюся секцию [SysprepMassStorage] записями из DriverInfInfo_M.txt. Именно на этом шаге начинаются самые интересные грабли. Если просто добавить все записи и запустить сиспреп - мы получим ошибку "Ошибка добавления в реестр" и "Невозможно выполнить запечатывание компьютера". Виной тому - "кривость" некоторых драйверов в драйверпаке. Мне пока не удалось выявить систематику этой ошибки. Пока, из общих наблюдений выявлена только одна закономерность - более старые драйвера как правило конфликтуют с более новыми. Особенно (!!!) это касается драйверов NVidia. Так же, экспериментально выявлено, что дублирующиеся HID-ы никак не влияют на конечный результат (за исключением HIDов со ссылками на старые драйвера, конечно же). Единственный "разумный" вариант - метод научного тыка. Ручная замена различных драйверов в [SysprepMassStorage] с последующим запуском сиспрепа. Для DriverPack MassStorage 6.08 после двух бессонных ночей в попытках выявить корень глюка сиспрепа, родился вот такой список "совместимых" друг с другом драйверов (я перечислю либо конкретные inf-файлы, либо полностью директории): Цитата: \D\M\IN\1\iastor.inf \D\M\IT\* \D\M\N\4\* \D\M\N\TM\* \D\M\V\* \D\M\VM\* | Этот список касается только драйверов контроллеров Intel, ITE, NVidia, VIA. С остальными, возможно, проблем будет меньше. Для того, что бы после установки наш дистрибутив сам очистил себя от лишних драйверов необходимо создать файл \sysprep\i386\$oem$\Cmdlines.txt следующего содержания: Цитата: [Commands] "%SystemDrive%\Sysprep\Sysprep -clean" | Итак, мы подготовили Sysprep.inf. Следуя советам статьи [4], подготавливаем систему к запуску sysprep-а (но помним: в нашем варианте запускать mergeide.reg не нужно!). А вот сама команда запуска сиспрепа отличается от рекомендованой в статье и выглядит следующим образом: Цитата: sysprep.exe -mini -reseal -noreboot | Этот процесс может занять от 10 до 40 минут, в зависимости от количества драйверов в списке и производительности компьютера. Легкая рекомендация: до (или во время) запуска сиспрепа лучше отключить предупреждение о неподписанных драйверах. Если сиспреп завершился без каких-либо предупреждений - система готова к созданию образа. Образ необходимо сделать ДО загрузки операционной системы. Т.е. это можно сделать либо до выключения системы, либо выключив и загрузив систему с загрузочного CD (Acronis, Ghost, WinPE, etc...) или с другого винта и другой операционки. Успешного клонирования! Ссылки: 1.Набор драйверов для безболезненной unattend-установки WinXP практически на любое железо http://www.driverpacks.net/ 2.Статья о совместимости HAL: http://www.winzone.ru/articles/283/print/ 3.Общая статья по клонированию XP: http://mdforum.dynu.com/article403.html 4.UtilitySpotlight - Набор ОЧЕНЬ удобных скриптов для анализа и обработки драйверов (как установленных, так и разбросанных по каталогам) http://www.microsoft.com/technet/technetmag/issues/2006/05/UtilitySpotlight/default.aspx 5. Тема о VMWare http://forum.ru-board.com/topic.cgi?forum=5&topic=2303#1 6. Тема о FAR http://forum.ru-board.com/topic.cgi?forum=5&topic=19203#1 Добавлено: PS Задача сильно упрощается, если под рукой есть Acronis Universal Restore. Впрочем, он не бесплатный, а для кого-то это может сыграть роль | Всего записей: 134 | Зарегистр. 16-01-2004 | Отправлено: 02:04 06-11-2006 | Исправлено: ptaha, 02:14 06-11-2006 |
|