PDA

View Full Version : Как да преместим ХР инсталация...където си искаме



WooDy
06-26-2009, 09:04
Сигурно ви се е налагало да смените дънна платка или да копирате ХР инсталацията на друг диск/машина и тя да не тръгне.
Ще се опитам да обобщя основните препятствия и начините за преодоляването им.

1. BSOD 0x0000007B- получава се защото в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\CriticalDeviceDatabase няма запис, който да стартира съответния сървиз за новият контролер (SATA или IDE) или HAL е несъвместим.
2. BSOD 0x0000007E- получава се при преход от Интел към АМД само при някои чипсети заради работещия сървиз intelppm и някой път заради сървиза processor
3. HAL грешки- заради несъвместим HAL (Hardware Abstraction Layer)
4. При качени драйвери за видео и звук може да откаже да стартира в Normal Mode
5. Объркани букви на дяловете- ако диска вече е бил разпознат от ХР и на него е прехвърлена инсталацията с image.

Решенията ми отнеха доста време да ги намеря и тествам, но резултата си заслужаваше- ХР инсталация която местих по какви ли не машини без никакви проблеми. Ще карам подред:

1. Ключа за бараката е в записите във въпросният ключ CriticalDeviceDatabase, който указва кои сървизи и драйвери да се стартират преди всички останали, ако VID, PID и Hardware ID за въпросният контролер отсъства в този ключ резултата е 0х0000007В. Това важи за IDE и SATA/SCSI контролери. При инсталация XP си прави само запис към контролера за диска, на който бива инсталиран, други няма. Решението е да се импортнат правилните за нашият контролер. За IDE такива има универсално решение от Microsoft, което съдържа записи към всички native поддържани от ХР IDE контролери. Така миграцията от IDE към IDE е безболезна.
Сега по- интересното как да минем от IDE към SATA, например да си прехвърлим инсталацията от IDE диска към новият SATA диск. На машини с инсталиран ХР на SATA диск взех съответните записи в CriticalDeviceDatabase и сървиза към който сочи този запис, както и копирах съответните драйвери в system32\drivers. 7B екраните повече не се появиха :) Прилагам няколко такива записа за да се ориентирате какво търсим заедно с съответния драйвер, 2-3 реда са записите и наистина е лесно да се открият, както и стандартния майкрософтски файл за IDE контролерите ( MS_IDE.ZIP ). Също трябва и да се копират следните файлове от Driver Cache\I386\Driver.cab в System32\Drivers

Atapi.sys, Intelide.sys, Pciide.sys, Pciidex.sys

2. Има няколко варианта- най- лесно от Bart PE с remote regedit сменяме стойноста на ключа HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Intelppm на 4, това е все едно disable на този сървиз. Ако е необходимо променяме и HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Processor на 4

Другият вариант е просто да преименуваме \system32\drivers\intelppm.sys на intelppm.sys.old например. Съшо и да се погледне в dllcache дали го няма и там.
Докато експериметирах само един път се появи този проблем - от CoreDuo лаптоп на AMD. От P4-M към същия AMD нямаше проблем. Не мога да си обясня още защо но е така.

3. Microsoft хем твърдят че не може да се минава от вече инсталиран HAL към друг такъв несъвместим, хем имат опция в boot.ini да се игнорира инсталирания и да се зареди друг. Със следните редове в boot.ini и няколко файла успешно сменях HAL на какъвто си искам, като например от Uniprocessor към Standard и обратно на една и съща машина :) Указаните файлове трябва да ги вземете от SP2.CAB преименувате hal.dll на halstd.dll и ги копирате в system32.
Boot INI Options Reference (http://www.microsoft.com/technet/sysinternals/information/bootini.mspx)

boot.ini:





Ако се минава от един HAL към друг е достатъчно само веднъж да се избере подходящият, ХР ще си инсталира и преномерира хардуера спрямо новият HAL и на следващият рестарт може да оставите default loader- a. Може да се наложи и да минете първо през Safe Mode. Така ми се наложи на стар Compaq с Pentium 233MMX, но по- вероятно е да беше заради вече инсталирани драйвери за видео и звук.
Използването на тази възможност се налага рядко, повечето HAL на разпространените компютри са съвместими. Опцията е по- скоро за стари машини, неподдържащи ACPI или мултипроцесорни, тъй като тяхният HAL е несъвместим.
Ето и кратък списък кои са съвместими:
http://support.microsoft.com/kb/309283

4. Решението е първото стартиране да е в Safe Mоde и премахване на проблемите драйвери. При моите опити нямаше проблем а стоят заредени драйвери на ATI, SIS, Nvidia и Intel integrated. По- напредналите може да потърсят въпросните драйвери в services и да им сложат start type 4, пак от Bart PE диск. Засега не ми се е налагало да го правя.

5. Решението е да се изтрие целият ключ HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices и евентуално HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices1 ако имате. Така ХР ще "забрави" на кои предишно закачани дискови какво букви е давал и ще ги пренареди.

-----------------------------

Как тествах:
1. Чист леко орязан с Nlite XP Pro SP2 без никакви допълнителни драйвери го инсталирах на Packard Bell SIS чипсет, вградено SIS видео, с Селерон нещо си на IDE диск. Оттам направих необходимите модификации и отиде на Nforce2 с XP-M 2400 и ATI видеокарта пак на IDE контролера. Оттам на Asus P4R800-V Deluxe с P4 HT 3.0GHz и вградено ATI видео. После Abit дъно с Via чипсет и Athlon XP-2200 и Gforce 5600 все още на IDE. После на HPT374 RAID контролера на същото дъно. Оттам на Dell Inspiron P4-M 1.6 и вградено Intel видео. Обратно на NForce2 този път на SATA диск, същият диск отиде на SIS SATA RAID на P4R800-V. При всяка нова машина му давах да си инсталира всички поискани драйвери за чипсет, видео, мрежа и т.н. Веднъж инсталирани драйверите при повторно закачане на същият комп всичко биваше разпознато безгрешно без да иска нови драйвери. От SATA диска го прехвърлих на дърт Compaq 2000Pro неподдържащ ACPI, с P233 MMX и не помня какво видео. Тук се наложи да мине през Safe Mode дали заради смяната на HAL или някой от драйверите вероятно на видеото, но веднъж инсталирал каквото му трябва в Safe Mode вече нямаше проблеми. Отново на Packard Bell- a с Интел Селерон и си зареди нормално със standart HAL, но преоткри всичкия хардуер, рестартирах с опциите в boot.ini за uniprocessor и всичко си дойде на място, без да иска никакви драйвери макар че наново преоткри всичкият хардуер. Обратно на Nforce2 и т.н. във всякакви вариации от машина към машина.
За да стане по- весело поизтрих малко от софтуера и драйверите (само заемащите голям обем като NVidia Mixer, ATI control panel и т.н.) и метнах инсталацията на 1GB USB флашче, като направих необходимите модификации за да зарежда от USB (линкове как съм давал в друга тема). Същото флашче съм тествал на поне 5-6 други машини с напълно различен хардуер и ХР- то си зарежда без никакви проблеми. Първият BSOD 0x0000007E се появи от CoreDuo DELL лаптоп към Nforce2 AMD. Оттогава intelppm сървиза е спрян без видимо това да влияе на работоспособността при Intel машини. Просто жълтата удивителна в device manager със съобщението че този драйвер не е зареден и неговите функции се изпълняват от друг (кой е другият не е ясно).

Малко шотове от различните машини:
http://img247.imageshack.us/img247/5730/asusp4r800vgk3.th.jpg (http://img247.imageshack.us/my.php?image=asusp4r800vgk3.jpg)http://img390.imageshack.us/img390/7182/compaqpro2000hr2.th.jpg (http://img390.imageshack.us/my.php?image=compaqpro2000hr2.jpg)
http://img201.imageshack.us/img201/9955/inspiron6000dj8.th.jpg (http://img201.imageshack.us/my.php?image=inspiron6000dj8.jpg)http://img300.imageshack.us/img300/2341/pblastun2.th.jpg (http://img300.imageshack.us/my.php?image=pblastun2.jpg)

В следващ пост ще се опитам да обясня по- подробно т.2 и как да направим необходимите записи за SATA контролери.

Направи ми и впечатление че много маркови машини имат със стартирани драйвери за ALI, SIS, АTI видео, както и DELL Inspiron има доста голям брой записи в CriticalDeviceDatabase за Интелски IDE контролери, това ме навежда на мисълта че реализацията, която ползват за да имат готов image за нови и различни машини е напълно аналогична. Комерсиален софтуер има такъв, който прави sysprep-ed image и гарантират че ще работи на всякакъв, но струва маса пари.


Забележки:
-нямах възможност да тествам машина с Nvidia SATA, драйверите типично в техен стил не са само един файл.sys ами и няколко dll файла, които вероятно трябва да бъдат регистрирани. Дали са необходими или не ще тествам при първа възможност.
-когато работите с CurrentControlSet е добре да направите всички промени и в ControlSet001, 002 и т.н., колкото имате (за стари инсталации).
-преди каквито и де е промени по регистъра знаете, backup или поне export на ключа, който променяте
-за да сме ОК с Microsoft тези експерименти трябва да са от притежатели на XP VLC
-чиста ХР инсталация с тези модофикации би позволила да се направи универсален XP Image, който да се слага на различни машини за минути от всякаква медия- USB Flash, DVD, CD, Network и т.н.
-колкото можах тествах, ако има доброволци да се включат ще е супер
- както знаете от драйвери винаги могат да се очакват изненади, така че нама 100% гаранция че описаните методи ще работят на всички машини.


Питайте смело всичко което ви интересува, ще се опитам да съм възможно най- подробен :)