Перенос windows xp на другой комп

Коротко описаны практические шаги для запуска уже установленной Windows XP SP3 на новом железе. Это часто бывает нужно делать в связи с апгрейдом по разным причинам (не хватает быстродействия старой системы, или она перестала работать). В работе мне сильно помогли ссылки [1] и [2], информацию оттуда также можно использовать в различных случаях. Весь софт, упомянутый в статье, можно скачать по ссылкам [3, 4].

Когда я затевал переезд на новое железо без переустановки, то не был особенно уверен в успехе. Посудите сами — новое железо отличается от старого полностью (старым остался только SSD жесткий диск, на котором стояла Windows XP SP3). В таблице перечислены основные компоненты, которые влияют на производительность системы.

Старая конфигурация Новая конфигурация
Материнская плата ASUS P4P800 Материнская плата ASUS P8H61
Процессор Intel Pentium@ 4 Soc mPGA478B (3.2GHz/512/800) Процессор Intel Pentium@ Core G620 Soc 1155 (2.6GHz/3MB/5GT)
Видеокарта AG4670 1GBK3-PV2 (AGP 8x POWERCOLOR Radeon HD 4670) Видеокарта ASUS PCI-Ex GeForce GF520 1024 Mb
4 модуля памяти Patriot 1024MB PC3200 CL3 (суммарная емкость 4GB) 2 модуля памяти Samsung 2048MB DDR3 (суммарная емкость 4GB)

Старое железо покупалось лет 7 назад (кроме видеокарты, она была заменена позже) и по тем меркам было «ого-го». Стоило оно тогда гораздо больше, чем теперешнее. Переезд оказался на удивление успешным и не очень сложным. Итак, процесс по шагам.

[1. Резервное копирование]

Сначала сделайте резервную копию всех важных файлов, которые есть на Вашем системном диске, где установлена Windows XP (на другой диск). Это необходимо во избежание всяких случайностей, чтобы ошибки, которые Вы нечаянно допустили при манипуляциях с диском и системой, не повлияли на сохранность Ваших данных. Все Ваши данные скорее всего находятся в папке Documents and Settings, установленные программы в Program Files, WINDOWS, как минимум нужно сделать копию этих папок. Идеальный вариант — сделать образ диска специальными программами. К примеру на Windows есть для этого Norton Ghost, Acronis True Image, на Linux утилита dd. Если объем данных на диске слишком велик, чтобы сделать образ, то можно почистить его, удалив ненужное, либо переписать только то, что необходимо.

Имя копируемой папки Назначение папки
c:\Documents and Settings Все данные пользователей Windows XP. Тут находятся документы, настройки программ, временные файлы. Не все файлы важны, однако если Вы не уверены, что нужно а что нет, то перепишите эту папку целиком.
c:\Program Files Установленные программы.
c:\Windows Системные файлы Windows XP.

Процесс копирования можно сделать на старом железе, если оно еще работает. Если же старая система неработоспособна, то можно вытащить из компьютера диск, перенести на рабочий компьютер и сделать копию. Можно это сделать и на новом железе, не запуская Windows, если применить загрузочный диск Hiren’s BootCD (его iso-образ можно скачать по ссылке [3]). На этом диске есть много полезного — утилиты для чистки реестра, ремонта диска, восстановления файлов, сброса паролей, удаления данных, подробнее см. [5].

[2. Необходимые программы]

Скачайте по ссылкам [3, 4] необходимое программное обеспечение. Hiren’s BootCD [3] запишите на CD-ROM (это получится загрузочный диск), а TerraByte OSD Tool Script 3.85 (tbosdts_pro) распакуйте из архива [4] и запишите на флешку. Программу tbosdts_pro нужно запускать с помощью Hiren’s BootCD, записав на флешку или CD (на самом Hiren’s BootCD этой программы нет).

[3. Подготовка Windows к переносу на новое железо]

На этом шаге удаляются все старые драйвера Windows (записи в реестре). Загрузитесь с Hiren’s BootCD, в меню диска выберите Mini Windows XP. Воткните флешку, на которой записана программа tbosdts_pro, и запустите её ярлычком tbosdtw — Ярлык.lnk (ссылка на командную строку tbosdtw.exe startup.tbs), либо введите в командной строке tbosdtw.exe startup.tbs. В черном окне cmd появится текстовое меню из 9 пунктов.

Выберите пункт 3 (OSDTOOL.TBS). В следующем меню выберите Physical Drive.

Далее программа найдет диск и раздел, где установлена Ваша Windows XP (её переносим на новое железо).

Удалите на Windows XP все драйвера, для этого в главном меню выберите Remove Installed Drivers -> Remove all installed drivers.

[4. Установка стандартного драйвера IDE]

В главном меню выберите Install Drivers, и потом выберите установку стандартного драйвера IDE.

[5. Смена ядра HAL (тип процессора, CPU type)]

В главном меню выберите Change HAL (Hardware Application Layer, определяющий тип CPU). В следующем меню выберите halaacpi.dll (ACPI Uniprocessor PC), первая строчка в списке.

На этом основные действия по переносу Windows XP завершены. Можно перезагрузить систему с Вашего системного жесткого диска.

[6. Активация Windows XP]

После того, как система запустится на новом железе, она это заметит и попросит новую активацию. Выполните её, воспользовавшись Мастером Активации Windows.

Для активации используйте бесплатный телефон (время работы с 8.00 до 22.00, время московское) центра активации продуктов Microsoft, 8-800-200-80-02.

[Устранение возможных проблем]

1. Система не загружается, либо очень много ошибок при загрузке. Попробуйте переустановить систему «поверх», при этом старая установка сохраняется, но многие ошибки в конфигурации и файлах будут исправлены (для этого по запросу нажмите кнопку ‘R‘, которая задает восстановление системы Windows). Для такой переустановки понадобится загрузочный диск Windows XP, с которой Вы устанавливали систему первый раз. После такого восстановления возможно понадобится установить сервис-пак 3 [6], так как на загрузочном диске Windows могут быть старые версии системных файлов. После переустановки сервис-пака понадобится заново активировать Windows. Кроме того, после установки сервис-пака заново включается Восстановление системы (слежение за содержимым дисков). Для ускорения работы советую оставить включенным слежение за диском только на системном диске (на который указывает переменная окружения %SystemDrive%).

2. Если по какой-то причине были удалены или испорчены системные файлы, то восстановить оригинальное состояние системы Windows XP поможет запуск из командной строки SFC /SCANNOW, при этом понадобится установить в привод CD-ROM установочный диск Windows XP.

Проверка системных файлов займет около от 5 до 15 минут, в зависимости от скорости диска. Если ранее у Вас был установлен патч WPA_kill, то после завершения работы SFC /SCANNOW понадобится запустить его еще раз.

3. Не устанавливаются драйвера чипсета материнской платы с ошибкой «недостаточно прав». Убедитесь, что Вы устанавливаете драйверы под управлением пользователя с правами администратора. Попробуйте разрешить Windows найти драйвер в Интернете (это первое, что спрашивает Мастер установки драйвера).

4. Windows XP заблокировала вход в систему и требует активации. Это может произойти даже с Вашей лицензионной системой, если при восстановлении часы на материнской плате были установлены неверно, но потом были переведены на новое время (это автоматически происходит при подключении к Интернет). Если Вы не можете получить квалифицированную помощь от техподдержки, то для устранения проблемы проще всего загрузиться в безопасном режиме и запустить утилиту WPA_kill.

5. После запуска WPA_kill не работает автоматическое обновление («Указанный ключ соответствия не обнаружен ни в одном из активных контекстов активации.»).

windows-XP-automatic-update-error

Настройте для получения обновления локальный сервер провайдера, процедура настройки описана в [7].

6. BSOD Stop 0x0000007B может возникать на этапе загрузки, если Windows XP не может найти подходящего драйвера для жесткого диска. Причина может быть в том, что Вы не выполнили шаги 3 и/или 4. Выполните действия из шагов 3 и 4 этой статьи.

UPD140520: Сергей посоветовал переключить в BIOS установку с AHCI на IDE.

7. Неполадки с WMI (Windows Management Instrumentation service) выражаются в том, что недоступны некоторые функции по управлению системой. Например, не устанавливаются некоторые драйвера (выдают ошибку «у Вас недостаточно прав»), не устанавливаются или не запускаются некоторые программы (с ошибкой «невозможно запустить службу WMI»), недоступно управление брандмауэром в свойствах сетевого соединения, не показываются службы в закладке «Расширенные» консоли управления службами и т. п.

Процедура перерегистрации и восстановления WMI хорошо описана в [8] (на английском языке).

8. Для чистки и исправления реестра можно воспользоваться бесплатной программой Registry Life.

9. Общим методом для устранения всех неполадок Windows с сохранением всех имеющихся настроек и установленных программ является переустановка Windows XP в режиме обновления [9].

[Ссылки]

1. Подготовка операционной системы для переноса на другое железо site:forum.ru-board.com.
2. Перенос системы на другую материнскую плату или клонирование Windows XP (Make universal image Windows XP) site:gromr1.blogspot.ru.
3. Образ загрузочного диска Hiren’s BootCD (HBCD15.1_Russian_by_lexapass.iso).
4. 151029!CloneXP.zip — tbosdts_pro, grub4dos, usb_format, документация [1, 2].
5. Обзор загрузочного диска Hiren’s BootCD (диск для восстановления Widows).
6. Windows XP Service Pack 3 (SP3) русская версия (WindowsXP-KB936929-SP3-x86-RUS.exe).
7. Настройка сервера обновлений для службы «Автоматическое обновление».
8. Repairing and re-registeriing WMI site:windowsxp.mvps.org.
9. Как выполнить обновление (переустановку) Microsoft Windows XP site:support.microsoft.com.
10. Перенос Windows 7 на новый HDD встроенными утилитами.

Для того, чтобы перенести ОС со всеми программами и документами на другой компьютер с одинаковой архитектурой (оба 32-битные, оба — однопроцессорные, процессор одной фирмы (Intel/AMD)) достаточно:

  • сбросить драйвер контроллера IDE-дисков до «стандартного»;

  • сбросить точки монтирования дисков — очистить ветку реестра HKLM\SYSTEM\MountedDevices;

  • если перенос на AMD, то отключить сервис intelppm для процессоров Intel:

    sc config intelppm start= disabled
  • если перенос на многопроцессорный комп (или с PIC на APIC, например при переносе из Virtualbox на реальное железо), то сменить HAL, для этого 1):

    • меняем содержимое секции [GENDEV_SYS] в файле C:\windows\inf\hal.inf:

      C:\windows\inf\hal.inf
      [GENDEV_SYS]
      %E_ISA_UP.DeviceDesc% = E_ISA_UP_HAL, E_ISA_UP, MPS_UP, MPS_MP, ACPIPIC_UP, ACPIAPIC_UP, ACPIAPIC_MP ; Standard PC
      %ACPIPIC_UP.DeviceDesc% = ACPIPIC_UP_HAL, ACPIPIC_UP, ACPIAPIC_UP, ACPIAPIC_MP ; ACPI PIC-based PC
      %ACPIAPIC_UP.DeviceDesc% = ACPIAPIC_UP_HAL, ACPIAPIC_MP, ACPIAPIC_UP, ACPIPIC_UP; ACPI APIC-based PC (UP)
      %ACPIAPIC_MP.DeviceDesc% = ACPIAPIC_MP_HAL, ACPIAPIC_MP, ACPIAPIC_UP, ACPIPIC_UP; ACPI APIC-based PC (MP)
      %MPS_UP.DeviceDesc% = MPS_UP_HAL, MPS_UP, ACPIAPIC_UP ; MPS UP PC
      %MPS_MP.DeviceDesc% = MPS_MP_HAL, MPS_MP, MPS_UP, ACPIAPIC_MP, ACPIAPIC_UP ; MPS MP PC
    • после этого в диспетчере оборудования меняем HAL на нужный и перезагружаемся дважды;

  • включить на конечном компьютере режим эмуляции IDE в настройках SATA-устройств (если перенос на SATA-диск);

  • склонировать содержимое старого диска на новый диск;

  • установить драйверы для нового оборудования;

  • включить режим SATA в BIOS;

  • перенести лицензионную наклейку на новый компьютер.

Troubleshooting

Проблема:
компьютер перезагружается с ошибкой STOP 0x0000007B (BSOD «INACCESSIBLE_BOOT_DEVICE»)

Решение:
можно «вживить» стандартный драйвер контроллера IDE-дисков: 2)

  • загрузиться с установочного диска Windows 7;

  • Shift+F10

  • cmd;

  • regedit;

  • подключить куст C:\Windows\system32\config\system как temp;

  • перезагрузиться.

Решение №2:
можно сделать то же самое используя Linux:

  • загрузиться с «живого» диска с Debian|Ubuntu Linux;

  • подключить раздел с Windows mount /dev/sda1 /mnt/ntfs

  • unzip chntpw-source-110511.zip

  • запустить

    ./reged.static -I /mnt/ntfs/WINDOWS/system32/config/SYSTEM HKEY_LOCAL_MACHINE\\SYSTEM mergeide.reg
  • cd /mnt/ntfs/WINDOWS/System32/Drivers

Решение №3:

  • можно сделать скрипт используя reg load, например:

:: Set the default wallpaper
reg load HKU\DefUser "C:\Documents and Settings\Default User\ntuser.dat"
reg add "HKU\DefUser\Control Panel\Desktop" /v Wallpaper /d "c:\windows\DefWallpaper.bmp" /f
reg unload HKU\DefUser
reg add "HKCU\Control Panel\Desktop" /v Wallpaper /d "c:\windows\DefWallpaper.bmp" /f

В этой статье я расскажу вам, как перенести установленную систему Windows XP на другой компьютер, либо на новое железо после апгрейда.
Используя описанный мной метод вы сможете:

  • Перенести рабочую систему вместе со всеми установленными программами на новое железо
  • Заменить старый/маленький жесткий диск на больший
  • Восстановить резервную копию Windows XP на компьютере в случае серьезных сбоев

Windows Backup (Ntbackup.exe) умеет различать несходство в конфигурации железа между компьютерами и сохранять необходимые записи в реестре, которые уникальны для компьютера на который вы будете переносить систему. Эта возможность позволяет переносить систему с одного компьютера на другой при помощи резервного копирования (full backup) системы, которую вы хотите перенести, и последующего его восстановления на другом компьютере, где предварительно была установлена свежая копия Windows XP.

При восстановлении системы, Ntbackup.exe в первую очередь обращается к реестру:

HKLMSYSTEMCurrentControlSetControlBackupRestoreKeysNotToRestore

и проверяет, какие ключи не надо восстанавливать.Запись, которая заканчивается слэшем () означает, что этот ключ защищен и все ключи и значения под ним не подлежат изменению.
Запись, которая заканчивается слэшем и звездочкой (*) означает, что все записи под этой «объединены». Здесь «объединение» значит сравнение значений ключей в резервной копии и в существующей системе, необходимое для корректного восстановления.
Если ключ в восстанавливаемой системе имеет более низкое значение, то именно это значение будет установлено.

Для примера возьмем следующий ключ:

HKLMSYSTEMCurrentControlSetServicesDhcp

Восстанавливаемая система Новая система до восстановления Новая система после восстановления
DHCP Running: YES NO YES
DHCP Running: NO YES YES
DHCP Running: NO NO NO

После успешного восстановления служба Plug and Play уже доделает за вас всю работу по подгонке всех остальных несущественных изменений.

Что нужно учитывать перед тем как переносить систему

Разделы жесткого диска и системная папка (%SystemRoot%)

Для того чтобы восстановление прошло успешно и система заработала стабильно, системная папка (%SystemRoot%) и разделы жесткого диска (буквы) должны соответствовать значениям в восстанавливаемой системе.
Для примера:
Если на старом компьютере ваш Windows XP был установлен в папке Windows на диске C: (C:Windows) и у вас были еще диски D: и E:, то и на новом компьютере должно быть то же разделение.

Hardware Abstraction Layer (HAL)

HAL на обоих компьютерах должен быть одинаковым. Хотя это и необязательно, но если HAL будет различаться, возможно система не будт восстановлена как положено.Чтобы проверить тип HAL на обоих компьютерах: Правый клик по иконке «My Computer» —> закладка «Hardware»—> «Device Manager»—> двойной клик по «Computer».
Возможные значения HAL и соответствующие им файлы:

  • ACPI Multiprocessor PC = Halmacpi.dll
  • ACPI Uniprocessor PC = Halaacpi.dll
  • Advanced Configuration and Power Interface (ACPI) PC = Halacpi.dll
  • MPS Multiprocessor PC = Halmps.dll
  • MPS Uniprocessor PC = Halapic.dll
  • Standard PC = Hal.dll
  • Compaq SystemPro Multiprocessor or 100% Compatible = Halsp.dll
Папка WindowsRepair

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

Тома NTFS

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

Перенос системы

Сначала устанавливаем на новый компьютер свежую копию Windows XP. Важно, чтобы версии новой и восстанавливаемой системы были одинаковыми, а также, как я уже написал выше, путь к системной папке и буквы разделов дисков соответствовали.Теперь переходим к старому компьютеру, с системой, которую мы собираемся переносить.
Заходим в систему как Administrator и останавливаем все сервисы, которые не обязательны для системы при резервном копировании.
После этого запускаем Ntbackup

Start—> Run—>ntbackup

и создаем резервную копию системного диска, а также всех других необходимых дисков, если они есть.Снова возвращаемся к новому компьютеру, заходим в систему как Administrator и запускаем Ntbackup
В настройках Ntbackup устанавливаем опцию «Always replace the file on my computer»

Tools—> Options—> закладка Restore

После этого восстанавливаем систему из резервной копии. При этом не забудьте выбрать опцию восстановления в «Original location» в закладке «Restore and Manage media»После того как система полностью восстановлена необходимо перезагрузить компьютер. Если вы работаете в сети, необходимо отключить этот компьютер от сети во избежание конфликтов.

Если после восстановления компьютер не загружается, что часто случается по причине несоответствия HAL, нужно будет отремонтировать систему при помощи дистрибутива Windows XP.

Загрузите компьютер с CD с дистрибутивом Windows XP. Сначала вас спросят, хотите ли вы установить Windows XP. Ответ «Yes». После этого вам предложат прочесть и согласиться с лицензионным соглашением. Ответ «F8». Система сделает проверку на наличие предыдущих установленных версий Windows XP и, в случае обнаружения таковой, предложит вам отремонировать её, либо установить свежую копию. Нас интересует именно ремонт, поэтому жмем «R».
В процессе ремонта система устанавливает новый тип HAL, делает перерасчет оборудования (железа) и обновляет папку %SystemRoot%Repair в соостветствии с новыми значениями.

При успешном восстановлении, после перезагрузки, зайдите в систему как Administrator и запустите программу Winnt32.exe из папки i386 на CD с дистрибутивом Windows XP. Данный upgrade системы необходим чтобы обновить значения файла Setup.log, реестр, папку %SystemRoot%Repair, а также чтобы быть уверенным, что используется подходящий тип HAL.

Обратите внимание! Если вы устанавливали Windows XP как upgrage на NT4, то папки с пользовательскими профайлами остаются теми же, что в NT4 и находятся в папке %SystemRoot%Profiles, в то время как в Windows XP профайлы пользователей хранятся в папке Documents and Settings.
После восстановления профайлы из папки %SystemRoot%Profiles могут быть использованы как и прежде, но после ремонта системы вам необходимо будет изменить путь к ним обратно на %SystemRoot%Profiles:

HKLMSOFTWAREMicrosoftWindows NTCurrentVersionProfileList

Убедившись в том, что система и все программы после восстановления работают как положено, можно устанавливать новый компьютер вместо старого (в случае, если этот компьютер находится в сети)

Внимание! Из-за разницы во времени между резервным копированием и восстановлением может возникнуть проблема с подключением к контроллеру домена. В этом случае вам нужно будет зайти сначала в Workgroup и лишь потом снова подключиться к Domain.

Источник: MSCE World
Перевод: IsraNET

Время на прочтение9 мин

Количество просмотров50K

После прочтения статьи «Фривольное клонирование ОС MS Windows XP / Server 2003 своими руками, средствами GNU/Linux» возникло естественное желание дополнить ее в соответствии с реалиями конца 2014 года.

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

MBR, таблица разделов и сигнатура диска

Начнем с копирования данных. Какие же данные нам нужно скопировать? Для Windows XP это MBR (446 байт в начале диска, основная таблица разделов и завершающая сигнатура 55AAh), данные о расширенных разделах и собственно данные системного раздела Windows. Для Vista и Windows 7 добавляется еще и 100-мегабайтный системный раздел (GPT не рассматриваем). При этом нужно помнить, что первый раздел в Windows XP по-умолчанию начинается с сектора 63, а в Windows Vista/7 — с сектора 2048. Естественно, все операции мы будем проводить на незапущенной Windows, загрузившись с System Resque CD.

Так вот, не стоит копировать MBR «в лоб», для этого в Linux существует утилита ms-sys, которая записывает загрузчик любой версии Windows от Win95 до Win7 в MBR. Для сохранения и восстановления структуры разделов есть утилита sfdisk.

Например, так:

sfdisk -d /dev/sda > ./parttable.txt (сохраняем структуру разделов)
sfdisk -f /dev/sda < ./parttable.txt (восстанавливаем на другом ПК)
ms-sys -mbr /dev/sda (записываем MBR от Windows XP)

Добавлено:
Для того, чтобы WIndows загрузилась, необходимо также сформировать подпись диска (disk signature). Для этого нужно прочитать содержимое ключа реестра HKLM\SYSTEM\MountedDevices\<\DosDevices\«Имя раздела на диске с двоеточием»>, и выделить первые 8 байт (в шестнадцатеричной записи), например: 4F BE 4F BE. Сделать это на смонтированном в Linux NTFS-томе можно с помощью описанной ниже утилиты reged. Следует учесть, что в reged имя ключа, содержащее слеш, нужно указывать через двойной слеш, например: \\DosDevices\\C:. Затем указанные 8 байт следует записать на диск начиная со смещения 0x01B8 утилитой hexedit. После этого диск готов к загрузке.

Данные разделов NTFS

После копирования MBR и структуры разделов можно копировать собственно данные разделов с помощью partclone. Инструмент partclone позволяет создавать образы разделов ext2/3/4, fat, ntfs, xfs, btrfs, reiserfs и т. д., анализируя внутреннюю структуры ФС и включая в образ только используемые сектора. Создадим на эталонном ПК образ раздела с помощью partclone, размер образа будет равен размеру используемого на томе места.

partclone.ntfs -c -s /dev/sda1 -o <файл образа>

а на целевом компьютере развернем его

partclone.ntfs -r -s <файл образа> -o /dev/sda1

или

partclone.restore -s <файл образа> -o /dev/sda1

К сожалению, внутреннее сжатие в образе не поддерживается.

Возможно также прямое копирование данных с одного устройства на другое с помощью ключа -b:

partclone.ntfs -b -s /dev/sda1 -o /dev/sdb1

Теперь рассмотрим вопрос восстановления данных на раздел размера, меньшего, чем эталонный. Для этого нужно смонтировать partclone-образ и либо скопировать с него файлы на целевой том с сохранением атрибутов, разрешений, hardlink-ов и прочих свойств NTFS, либо уменьшить размер раздела NTFS внутри образа partclone, а уже затем скопировать этот уменьшенный раздел на целевой том командой partclone.ntfs с ключом -b.

Мне не известны инструменты, которыми можно было бы в Linux скопировать файлы и hardlink-и с одного тома NTFS на другой со всеми атрибутами и потоками (если кому-нибудь они известны, прошу в комментарии), так что у нас остается только вариант с уменьшением размера тома. К счастью, существует инструмент imagemount, который экспортирует partclone-образ как блочное устройство nbd и поддерживает монтирование образа в том числе и на запись, при этом изменения сохраняются в отдельном файле (ключ -с). Экспортируем том на запись

modprobe nbd max_part=16
imagemount -w -D -d /dev/nbd0 -f /mnt/images/winxp.img -c ./cow.bin

Теперь изменим размер ФС на томе NTFS. Сначала будет сделан тестовый прогон (ключ -n)

ntfsresize -s <новый размер> -n /dev/nbd0

а затем — реальный:

ntfsresize -s <новый размер> /dev/nbd0

Клонируем раздел:

partclone.ntfs -b -s /dev/nbd0 -o /dev/sda1

А теперь — щепотка пичальки

Imagemount, даже последней версии — 0.3.1, не работает с дисками на запись на архитектуре x86_64 (зависает намертво) и практически не работает на архитектуре i386 (записывает образ с ошибками), поэтому изменение размера раздела на данный момент невозможно. Буду писать в багртекер partclone-utils.

К сожалению, partclone не поддерживает сжатие образов, но эту проблему можно обойти с помощью так любимых в Linux костылей и подпорок. Создадим пустой образ формата qcow2 с виртуальным размером, заведомо превышающим наши потребности (например, 1 Tb). Его реальный объем будет увеличиваться в зависимости от количества данных, которые мы туда запишем.

qemu-img create -f qcow2 <файл образа> 1024G

Смонтируем его как блочное устройство

modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 <файл образа>

Теперь скопируем на виртуальное устройство файловую систему

partclone.ntfs -b -s /dev/sda1 -o /dev/nbd0

размонтируем устройство и в результате получим файл qcow2 с размером чуть больше, чем размер исходного NTFS-тома. Теперь к файлу можно применить внутреннее сжатие:

qemu-img convert -c <файл образа> <сжатый файл образа>

Легко заметить, что этот способ требует удвоенного места на диске для хранения исходного и сжатого образов, а также дополнительное время на сжатие. Если мы применим еще один костыль, то избавимся и от этих недостатков. После монтирования образа qcow2 (командой qcow-nbd -c /dev/nbd0 <файл образа>) отформатируем его в файловую систему btrfs

mkfs.btrfs /dev/nbd0

а теперь смонтируем со сжатием:

mount -o compress-force=zlib /dev/nbd0 /mnt

и создадим образ файловой системы NTFS

partclone.ntfs -c -s /dev/sda1 -o /mnt/ntfs-image.bin

После этого размонтируем все.

В результате мы получим файл образ со сжатием, в который включены только используемые сектора и который можно смонтировать через imagemount как файловую систему и прочитать его содержимое.

Мне, например, удалось уменьшить размер образа со свежеустановленной Windows XP c 2,7 Gb до 587 Mb. При этом можно смонтировать образ без распаковки и просмотреть файлы внутри.

Гораздо лучше, чем набившие оскомину dd | gzip, не так ли?

Запуск Windows на новом оборудовании

Теперь перед нами стоит вторая задача — сделать так, чтобы установленная на том NTFS Windows смогла запуститься. В случае Windows 7 копируем еще и загрузочный раздел, для Windows Vista — дополнительно делаем (с Windows Vista Live CD) перезапись BCD, чтобы данные в этой области соответствовали серийному номеру жесткого диска, проверяем, чтобы у загрузочного раздела стояла соответствующий флаг boot (можно сделать через parted) и перезагружаемся. После чего с некоторой вероятностью получаем синий экран с надписью 0x0000007B Inaccesseble boot device. В этом случае для Windows XP рекомендуется выставить правильный HAL, но вот незадача, я уже давно не встречал одноядерные ПК без APIC и тем более ACPI, так что наш эталонный образ скорее всего уже содержит правильный многопроцессорный HAL. Поэтому не стоит надеяться, что замена HAL сразу исправит нашу проблему. Скорее всего, причина в том, что Windows не распознала контроллер жесткого диска, и, соответственно, не смогла продолжить с него загрузку.

Допустим, мы не пользовались sysprep при создании эталона (а то получиться неспортивно, потому что sysprep сделает всю работу за нас). Попробуем разобраться, почему ОС Windows не находит контроллер диска на новом оборудовании, несмотря на то, что в случае «чистой» установки она этот контроллер видит. Дело в том, что на завершающем этапе установки Windows отключает (якобы для ускорения загрузки) все драйверы контроллеров дисков, на которых не расположено системных разделов. Получается как с сусликом в фильме «ДМБ»: система его не видит, но он есть.

Включаем IDE-контроллеры: патч MergeIDE

Для Windows XP существует известный патч MergeIDE, который, собственно, и включает в реестре драйверы IDE-устройств обратно, попутно копируя файлы драйверов из driver.cab в \system32\drivers. Проблема в том, что этот патч предназначен для запуска из-под Windows. Попробуем наложить его под Linux вручную. Пусть раздел с Windows XP смонтирован у нас в /mnt, тогда:

cabextract -d /tmp/drivers "/mnt/WINDOWS/system32/Driver Cache/i386/driver.cab"
cd /tmp/drivers
cp atapi.sys intelide.sys pciide.sys pciidex.sys /mnt/WINDOWS/system32/drivers

Для того, чтобы наложить патч MergeIDE.reg на реестр, нужно его отредактировать, убрав переводы строк с помощью символа «\» в последних строках файла, а затем воспользоваться утилитой reged с ключом -I

reged -I /mnt/WINDOWS/system32/config/system HKEY_LOCAL_MACHINE\\SYSTEM ./MergeIDE.reg

Быть может, придется так же исправить ключ CurrentControlSet, который бывает не доступен на незапущенной Windows, на ControlSet001/002.

После этого можно перезагружаться. Надо сказать, в моей практике было несколько случаев, когда запустить образ на другом оборудовании не удавалось ни указанным выше способом, ни с помощью платных инструментов вроде Acronis Universal Restore.

Посмотрев содержимое файла MergeIDE.reg можно увидеть, что вся магия запуска загрузочного драйвера состоит в добавлении записей в две ветви реестра — HKLM\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase и HKLM\SYSTEM\CurrentControlSet\Services.
Ветвь CriticalDeviceDatabase содержит список устройств, необходимых для успешной загрузки системы и задает соответствие между классом устройства и той службой (драйвером), который за нее отвечает, а ветвь Services содержит параметры работы конкретных драйверов. Особенно интересен параметр Start — уровень запуска:
0 — загрузка до старта ядра загрузчиком ОС
1 — загрузка в момент инициализации ядра
2 — загрузка в процессе запуска ОС
3 — загрузка по требованию
4 — не загружать
очевидно, если у нашего драйвера уровень запуска будет отличаться от 0, то соответствующего контроллера в момент загрузки мы не увидим.

MergeIDE.reg оперирует идентификатором класса 4d36e96a-e325-11ce-bfc1-08002be10318 — дисковые контроллеры ATA/ATAPI. Идентификаторы ClassGUID для различных классов устройств известны, их можно найти, например, здесь.
Таким образом можно заставить систему запускать в момент загрузки ядра в память любой драйвер, например, для сетевой карты, если вы загружаетесь через AoE или iSCSI.

Для Windows Vista/7 можно просто пройтись по ветви Services в поисках драйверов, содержащих в названии слово IDE, а потом изменить тип запуска (ключ Start) с «3-отложенный запуск» на «0-загружать в момент загрузки ядра». Для этих ОС есть еще один способ — находим в ветви Services записи msachi и iaStorV (универсальный драйвер AHCI и драйвер AHCI для устройств Intel) и так же изменяем тип запуска с «3» на «0», а потом идем в BIOS и меняем там тип контроллера дисков на AHCI. С Windows XP такой фокус, к сожалению, не прокатит, по причине отсутствия встроенного универсального драйвера AHCI.

Загружаемся с любого IDE или SATA-контроллера: драйвер UniATA

Поэтому обратим внимание на совершенно волшебный драйвер контроллера дисков UniATA от Александра Телятникова aka Alter. Этот драйвер инициализирует любой контроллер, считающий себя IDE- или AHCI-совместимым, а поэтому отлично подходит для наших целей. Порядок установки точно такой же — скопировать файл драйвера, прописаться в CriticalDeviceDatabase и в Services.

wget http://alter.org.ua/ru/soft/win/uni_ata/BusMaster_v45d.tgz
tar -xzvf ./BusMaster_v45d.tgz
cp uniata.sys /mnt/WINDOWS/system32/drivers
cp atactl.exe /mnt/WINDOWS/system32

Теперь интегрируем в образ файл my_uniata_inst.reg следующего содержания

UniATA_Inst.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2922]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="uniata"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\UniATA]
"Type"=dword:00000001
"Start"=dword:00000000
"ErrorControl"=dword:00000000
"Group"="System Bus Extender"
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,52,00,49,00,56,00,45,00,52,00,53,00,5c,00,75,00,6e,00,69,00,61,00,74,00,61,00,2e,00,73,00,79,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\UniATA\Parameters\PnpInterface]
"1"=dword:0x00000000
"5"=dword:0x00000000
"SkipRaids"=dword:0x00000001

Здесь ven_8086&dev_2922 — идентификатор установленного SATA-контроллера. Мы также считаем, что CurrentControlSet у нас нет и используем активную ветвь — ControlSet001, номер которой указан в HKLM\SYSTEM\Select\Current.

reged -I /mnt/WINDOWS/system32/config/system HKEY_LOCAL_MACHINE\\SYSTEM ./my_uniata.reg

Если такой способ не срабатывает — можно попробовать более «грязные» методы установки — с помощью файла uniata_w2k.reg из архива с драйверами или по инструкции на сайте разработчика.

Еще пичалька

Как оказалось, UniATA не может инициализировать виртуальный контроллер Intel 8086:2922, который эмулируется QEMU. «Соседний» виртуальный IDE-контроллер инициализируется замечательно. Чей это баг — QEMU или UniATA, не совсем понятно.

Об инструментах

Основной набор утилит можно найти в System Rescue CD. Сюда входят ms-sys, mkfs.btrfs, sfdisk, partclone и reged. Imagemount можно взять из пакета partclone-utils, просто распаковав его в корневую ФС systemresquecd. С пакетом qemu-utils дела обстоят сложнее. Я создавал в отдельном каталоге минимальную установку Debian с помощью debootstrap, затем делал туда chroot и уже потом ставил qemu-utils через apt-get. Перед запуском qemu-nbd нужно не забыть примонтировать /proc, /sys и /dev внутрь chroot’а.

Заключение

Скрытый текст

Купите лучше Acronis Universal Restore

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows 10 не дает установить принтер по сети
  • Windows performance monitor windows 10
  • Отключается интернет на windows 10 каждые 10 минут
  • Стандартные средства просмотра изображений windows
  • Как открыть программную строку windows 10