Pull to refresh

Фривольное клонирование ОС MS Windows XP / Server 2003 своими руками, средствами GNU/Linux

Reading time 12 min
Views 28K

Объяснительная записка


Публикую журналированный результат работы по обеспечению себя универсальным живучим образом установленной операционной системы (далее ОС) Windows XP SP3.

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

Почему это нужно?



Что отличает данный материал от распространенных статей на тему клонирования ОС? Ограничения, поставленные передо мною жизнью и самим собой. Перечислю их:

1) ОС должна устанавливаться и работать на разделах произвольных размеров;
2) ОС должна исправно загружаться, будучи установленной на любой тип носителя, поддерживающий загрузку (оснащенный MBR*);
3) ОС должна функционировать на различных вариантах аппаратно-зависимого уровня (HAL**);
4) Образ ОС должен занимать минимум места на носителе для ускорения его переноса, дооснащения, переборки;
5) Образ ОС должен включать в себя необходимый набор установленного и настроенного лучшим образом ПО (вариант «система под ключ»);
6) Все манипуляции по приготовлению образа и по его развертке должны производиться штатными средствами GNU/Linux***. Смысл: разобрать по косточкам принцип работы имеющегося ПО для клонирования ОС;
7) Носителем образа ОС может быть сервер в сети, USB-накопитель (твердотельный либо винчестер), оптический или жесткий магнитный диск;
8) Носитель образа ОС должен быть оснащен средствами диагностики и ремонта ПО компьютера;
9) Желательно процесс клонирования ОС сделать максимально доступным ради хорошей повторяемости без урезания надежности результата;
10) Команда dd, безусловно, хороша, вот только неохота возиться с пустым пространством, нулями и отсутствием четкого вывода текущего действия. Кроме того, раздел, в который будет установлен клон, должен быть произвольным (см. п. 1).

Вне рассмотрения:

1) Юридические моменты установки неподдерживаемой ныне ОС;
2) Активация неактивируемой ныне официально ОС;
3) Целесообразность производимых действий. Не задротствакрасноглазия ради, но токмо волею пославших меня юзеров. Пославших за попытку убедить в кошерности использования свежего свободно-распространяемого программного обеспечения на их дуболомных машинах;
4) Подробности типовой установки ОС Windows XP и доп. ПО на компьютер, за исключением разбивки диска;
5) Подробности метода сетевого клонирования: рассмотрю в дальнейшем, сейчас такой нужды не имею.

Кому это нужно?

Работа ориентирована на удовлетворение запросов конечных пользователей. Статья написана для системных администраторов, желающих перенять приобретенный мною опыт и знания и воспользоваться нижеописанным способом. Отсюда подробности, которые могут не понравится торопливым людям. Объем текста, на мой взгляд, чудовищный для легкого восприятия, но я иначе не могу: надо донести каждый мой шаг.

Конструктивная критика приветствуется; особенно ценны предложения по совершенствованию способа, а также теория, обосновывающая замечания.

Дата написания статьи — 2 декабря 2014 года, посему будущим поколениям шлю свой привет, а насколько сохранится актуальность материала для вас — не ведаю.

Добро пожаловать, %username%, под отрезок.

Что надо сделать вообще?


Дорогой читатель, клонирование подразумевает подготовку инструментов и материалов, создание ими клона и его распространение (установку). Операционная система Windows XP довольна капризна к любым размахиваниям флешками, а особенно гадкие моменты нас ожидают на этапе установки загрузчика и при запуске клонированной ОС на контроллерах SATA, включенных в режиме AHCI. Однако, терпение и труд все перетрут.

Термины



Для начала введем терминологию.

1) Эталонная ЭВМ****, либо эталонный компьютер = ПЭВМ, на которой производится чистая установка и настройка операционной системы, необходимых программ, обновлений. Соответственно, полученное ПО назовем эталонной ОС;
2) Клон ОС, он же образ эталонной ОС = архив, вмещающий в себя содержимое системного раздела установленной ОС. И больше ничего;
3) Целевая ЭВМ (целевой компьютер) = ПЭВМ, на который требуется развернуть полученный клон эталонной ОС;
4) Под дополнительным ПО я розумию дистрибутивы всяческих офисных программ, мультимедиа кодеков и проигрывателей, нормального человеческого браузера. Аноним, ты сам определяешь это!

Инвентарь



Опишем материалы, необходимые для работы.

0) Крепкие руки, пытливый ум, стойкое желание результата. В случае отсутствия какого-либо компонента, аноним, ты был предупрежден;
1) Полноценная информация об аппаратной конфигурации целевой ЭВМ, конкретно: наименование контроллера НМЖД*****. Если таковой встроен в материнскую плату, тогда потребуется наименование южного моста (далее ЮМ).
2) Чистый образ установочного диска ОС MS Windows XP; service pack и язык = по вкусу. В хозяйстве каждого админа широкого профиля должон быть;
3) Образ загрузочного дистрибутива GNU/Linux = по вкусу; обязательна поддержка работы с файловыми системами NTFS, FAT16, FAT32. Желателен максимальный набор драйверов на борту. Я использовал дистрибутив ubuntu-12.04.5-dvd-i386;
4) Минимальный набор внешних носителей: оптический диск для установщика Windows XP, любой загрузочный носитель для дистрибутива Linux и хранения клона эталонной ОС. Я использовал USB-HDD: места много, на все хватит, да и нормальная таблица разделов до кучи;
5) Подготавливать носители и копать нужные материалы нужно на работающей ЭВМ под управлением сетевой ОС. Я использовал обычный офисный ПК и дистрибутив Ubuntu 12.04 для этого. Смело заверю юзернейма: все можно сделать и из-под винды;
6) Свежий драйвер контроллера НМЖД или ЮМ материнской платы целевой ЭВМ, совместимый с ОС Windows XP;
7) Распакованный архив driver.cab (найти можно в образе установочного диска Windows XP);
8) Распакованный архив deploy.cab (найти можно на сайте микрософта);
9) Распакованный архив grub4dos (ссылки на сборки, русскоязычное руководство). И дополнительное вспомоществование неокрепшему затуманенному сознанию юного админа:



Испекаем клон

Вот, собрали все вышеперечисленное, причешем мозги общей схемой создания клона. Детали рассмотрим позднее.

0) Подготавливаем эталонную ЭВМ: пусть это будет компьютер с аппаратной конфигурацией, максимально соответствующей конфигурации большинства целевых ЭВМ;
1) Подготавливаем загрузочный носитель для чистовой установки ОС Windows XP (проще говоря, загрузочную болванку с виндой);
2) Подготавливаем загрузочный носитель произвольного дистрибутива Linux. Он будет служить нам средством как подготовки/развертки клона, так и диагностики/ремонта целевой ЭВМ. На нем должен быть распакованный архив grub4dos;
3) Устанавливаем ОС Windows XP на эталонную ЭВМ, настраиваем ее наиболее общо (так, как понравится клиентам больше всего);
4) Устанавливаем список дополнительного ПО на эту ОС, настраиваем;
5) Устанавливаем на эталонную ОС принудительно драйвер контроллера НМЖД целевой ЭВМ;
6) Записываем в корневой раздел эталонной ОС необходимые средства подготовки клона. Завершаем работу целевой ЭВМ.
7) Загружаем носитель дистрибутива Linux на эталонной ЭВМ, монтируем файловую систему (далее ФС) раздела с установленной эталонной ОС;
8) Создаем клон эталонной ОС, сохраняем его на произвольный носитель, подмонтированный в Linux (в моем случае — тот же загрузочный носитель Linux).

Подаем на стол



Клон создан и смотрит на тебя, %username%. Теперь общо о том, как его закатать на целевой компьютер юзера:

0) Берем носитель дистрибутива Linux, идем к юзеру, отгоняем его подальше, втыкаем носитель в его (целевой) компьютер. Пуск!
1) Если не задымились, загружаем наш живой дистрибутив Linux;
2) С этого момента откат действий будет очень затруднен, я предупреждал. Итак, размечаем по-новому жесткий диск (или SSD?) целевой ЭВМ. Создаем на нем раздел под винду. Форматируем (я выбрал бы ntfs). Монтируем полученный раздел куда-нибудь;
3) Распаковываем клон эталонной ОС в полученный раздел диска целевой ЭВМ;
4) Устанавливаем на диск целевой ЭВМ загрузчик Grub4Dos;
5) Выключаемся, вынимаем лишние носители, глубокий вдох, запуск;
6) Если все прошло успешно, вас встретит программа доустановки Windows XP, где вы с юзером все выставите, как подобает;
7) Употреблю заморское словечко: PROFIT!

Как мы этого достигнем?




Итак, мой терпеливый читатель, мы добрались до самой мякотки. Да, сейчас на экране монитора отобразятся заветные строчки команд, будут оглашены подробные инструкции по каждому шагу схемы создания и закатывания клона. Заголовок надо было бы назвать «Как я это сделал», но я надеюсь, что у вас все получится ровно так же!

Подготовка инвентаря

Повторюсь, я все готовил под управлением ОС Ubuntu 12.04.

1) Раздобудьте чистый, лишенный всяческих наворотов установочный образ MS Windows XP, их еще называют 'MSDN-образами'. Желателен внедренный последний сервис пак. Раздобыв, закатайте его на подходящую оптическую болванку. Я это сделал при помощи программы Brasero;
2) Загрузите любой подходящий дистрибутив ОС GNU/Linux с возможностью загрузки с любого носителя (т.н. Live-система). Требования: широкая поддержка различного аппаратного обеспечения, поддержка файловых систем NTFS, FAT16, FAT32. Для наилучшей совместимости берите 32-разрядную ОС. Повтор: использовал дистрибутив ubuntu-12.04.5-dvd-i386, удовлетворяет по всем параметрам. Торрент, ссылка на прямую закачку;
3) Закатать добытый Linux из-под Ubuntu можно при помощи программы usb-creator-gtk, все там интуитивно понятно. Я закатывал на отдельный чистый USB-HDD объемом 160ГБ с одним разделом NTFS, отведя все оставшееся пространство под хранимые файлы и папки; таким образом получил сразу загрузочный диск и место под разные средства, клоны, юзеровы данные и библиотеку программ;
3.1) Никто мне не мешал нормально разметить, форматировать мой USB-HDD, и записать на него образ при помощи команды:

dd if=/путь-до-образа-линупса of=/dev/sd{ваш носитель} [ bs={размер кэша носителя по желанию в МБ} ]
.
Только лучше дождаться, когда мигать индикатор диска прекратит, ибо команда коварна;
4) Добавьте распакованный архив со свежей сборкой Grub4Dos (скачай тут) на носитель с живительным Linux`ом. Желательно поближе к корню. Почему груб4дос? Да потому, что я не хочу заставлять вас осваивать радости родного виндовозного загрузчика, да груб и настраивать приятнее. В этом архиве лежит файл управления загрузочным меню menu.lst: если желаете настроить загрузчик, сделайте это сейчас в любом текстовом редакторе. Подробности тут;
5) На этом же носителе, коли место позволяет, разместите установочные пакеты программ, которые будут нужны юзерам. В любом каталоге, разумеется;
6) Для обеспечения наилучшей совместимости клона винды с различными материнскими платами (вернее, способами управления питанием) впоследствии возникнет нужда дополнить список загружаемых XP ядер. Для этого из установочного образа Windows XP распакуйте архив i386/Driver.cab. В нем отыщите следующие dll-ки: hal, halaacpi, halacpi, halapic, halmacpi, halmps, halsp. Данные файлы скопируйте в какой-нибудь каталог загрузочного носителя Linux`а, они нам скоро понадобятся;
7) Во избежание проблем с загрузкой XP на целевых ЭВМ скачайте и распакуйте свежие драйверы от подходящих контроллеров НМЖД. Если контроллеры встроены в материнскую плату, качайте драйверы к ее ЮМ. В любом случае, вам придется доустанавливать драйверы после на каждой целевой ЭВМ. Сохраним драйверы на все тот же целебный носитель Linux;
8) Админ! Будь внимателен и аккуратен. Проверь все, что ты сбросил на этот многоцелевой носитель, выучи пути к файлам. Знай: возможно, тебе придется искать их в командной оболочке Linux`а. Не разбрасывайся файлами, распредели лучше их грамотно по каталогам. И напоследок скопируй установочный образ винды на этот же носитель: запас беды не чинит.

Клоны, пришло время исполнить команду 66!



Мы подготовили необходимое. Берем эталонную ЭВМ в руки, диск с виндой — в зубы. Наша задача: установить и настроить эталонную ОС, доп. программы, совершить предварительную подготовку клонируемой системы.

1) Устаканиваем эталонную ось на эталонный комп. Добавляем по нужде минимум нужных программ, дабы после с ними не возжаться. Активировать винду и проги сейчас не стоит: этим надо заниматься у конечного пользователя на целевом компе;
2) Работаем за этой ОС. Задача: обеспечить после клонирования выбор конфигурации управления питанием материнской платы целевой ЭВМ. Подключаем наш загрузочный носитель с Linux`ом: догадываюсь, вы его форматировали в NTFS? Копируем с него в каталог %systemroot%\system32\ файлы {halaacpi, halacpi, halapic, halmacpi, halmps, halsp}.dll, заблаговременно сохраненные нами на носителе в укромной папке. Это — микроядра для загрузки ОС при определенном устройстве материнской платы. Для того, чтобы использовать эти ядра, изменим конфигурационный файл загрузчика Windows %systemdrive%\boot.ini. Не забудьте создать резервную копию файла! Должно получиться нечто следующее:

[boot loader]
timeout=10
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" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Standart PC" /fastdetect /hal=halstd.dll
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="ACPI PC" /fastdetect /hal=halacpi.dll
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="ACPI Uniprocessor PC " /fastdetect /hal=halmacpi.dll

C:\grldr="Загрузчик GRUB4DOS"

Узнаете? Это тот самый скрытый выбор установщика ХР, доступный по нажатию F5 при установке с диска. Последняя строка нам послужит в дальнейшем;
3) Если вы скачали свежий драйвер контроллера жестких дисков для целевого компьютера, установите его в эталонной XP насильственно. Пригодитца! А не то придется колупаться в биосе целевой ЭВМ, включать режим совместимости (IDE)…
4) Проверьте всю систему. Посмотрите, все ли правильно настроено. Дальнейшие действия нужно будет выполнять без перезагрузок;
5) Подготовим систему к клонированию окончательно. Для этого отыщите архив deploy.cab, который мы заблаговременно сохранили на загрузочном носителе Linux`а. Откройте любым архиватором, и затем распакуйте папку SYSPREP в корень %systemdrive% (диск С: по-нашему). Это есть природное микрософтовское средство для подготовки ОС к клонированию. Воспользуемся им, дабы избежать кучки мелких проблем вроде одинаковых SID клонированных ОСей, одинаковых данных активации и всего такого. Подробно это делается так:

5.1) Запускаем setupmgr.exe. Выбираем Create a new answer file, Sysprep Install. ВНИМАТЕЛЬНО выбираем свою версию Windows. Отвечаем Yes, full automate the installation. Заполняем поля, как нам хочется и нажимаем «Далее». Программа сохранит результаты своей работы в файле C:\SYSPREP\SYSPREP.INF.
5.2) Запускаем:

c:\sysprep\sysprep.exe -pnp -mini

Меняем Shutdown mode на quit, нажимаем «Reseal» дожидаемся окончания работы программы.
Будем внимательны. При следующей загрузке системы запустится установка, так что её повторной загрузки лучше не допускать.
6) Скорее всего, эталонная ОС завершила работу. Теперь настало время снимать с нее образ. Для этого к эталонному компьютеру подключаем наш живительный носитель с Linux`ом, загружаемся с него (не допускайте загрузки ХР!). Конечно, нас интересует не установка системы, а просто загрузка. В случае с Ubuntu мы получим графический интерфейс и кучу разных полезных приложений;
7) Нынче действуем решительно и быстро. Открываем эмулятор терминала (ctrl+alt+t), выполняем последовательность команд:

sudo su
mkdir /mnt/sd{1,2}

— заходим под рутом и создаем точки монтирования для двух носителей. Наша задача теперь: подмонтировать накопитель, на котором установлена эталонная ОС, и внешний накопитель с Linux`ом и нашими файлами. Выполняем это, подставляя в команды нужные значения разделов и дисков:

mount /dev/sd<внутр. носитель_1-й раздел> /mnt/sd1
mount /dev/sd<внеш. носитель_нужный раздел> /mnt/sd2

Проверяем, то ли у нас смонтировано:

ls /mnt/sd1
ls /mnt/sd2

Каталоги для переброски образа готовы;
8) Запакуем клон винды при помощи команды tar:

cd /mnt/sd1
tar -czvf /mnt/sd2/xp.tar.gz ./*

9) Наблюдаем процесс запаковки. У меня получился архив xp.tar.gz в корне носителя Linux`а размером примерно 1,2ГБ. Это есть готовый клон эталонной ОС!

Распространение клона



До устойчивого результата проделать эти шаги мне пришлось раз пятнадцать.

Задача теперь: накатать наш образ на пробный целевой компьютер, установить загрузчик и убедиться, что все работает.

1) Берем с собой наш живительный носитель Linux`а. На нем теперь есть и клон, и средство, чтобы его поставить. Подключаем к целевой ЭВМ, загружаем Linux. Снова открываем эмулятор терминала и начинаем работу;
2) Разметим жесткий диск целевой ЭВМ. Я использую по старинке программу fdisk. Внимание! Если на целевом накопителе что-нибудь ценное есть, не забудьте скопировать на надежный резервный носитель! После этого выполняем команды:

sudo su
mkdir /mnt/sd{1,2}
mount /dev/sd<Носитель с Линуксом, нужный раздел> /mnt/sd1
ls /mnt/sd1
mount /dev/sd<Носитель целевой ЭВМ, если есть разделы> /mnt/sd2
ls /mnt/sd2

Итак, проверили, правильно ли мы определили диски. Допустим, все верно, и все примонтированно именно так, как указано. Тогда действуем дальше (ежи #, разумеется, не вводим, это комментарий):

umount /dev/sd<Носитель целевой ЭВМ, если есть разделы>
fdisk /dev/sd<Носитель целевой ЭВМ>
#Новая таблица разделов
o ввод
#Новый раздел
n ввод
#Указываем нужные параметры: первичный, номер 1, начало, конец (в блоках)
#Укажем тип файловой системы NTFS
t ввод
1 ввод //первый раздел
7 ввод //тип=NTFS
#Сделаем раздел загрузочным (активным по-виндовому)
a ввод
1 ввод
#Записываем новую таблицу разделов на носитель целевой ЭВМ (практически необратимо!)
w ввод

Программа fdisk должна завершить работу успешно. В противном случае пожалуется, и тогда ищите решение в Сети. Часто админ забывает отмонтировать носитель перед изменением таблицы разделов, это не дает перезаписать ее. Поможет umount;
3) Форматируем по-быстрому полученный раздел в NTFS, монтируем его:

mkfs.ntfs -f /dev/sd<Носитель целевой ЭВМ, первый раздел>
mount /dev/sd<Носитель целевой ЭВМ, первый раздел> /mnt/sd2
ls /mnt/sd2

Вывод последней команды должен быть пустой;
4) Распакуем в этот раздел наш клон эталонной ОС:

cd /mnt/sd1
tar -xzvf xp.tar.gz -C /mnt/sd2

Сидим, быстро-быстро пьем кофе, залпом!
5) Последний важнейший штрих: установка загрузчика. Напомню, распакованный архив свежей сборки grub4dos мы помещали на носитель Linux:

cd /mnt/sd1/Путь до распакованного архива
ls
#Если мы в каталоге архива, выполняем установку загрузчика:
./bootlace.com /dev/sd<Носитель эталонной ОС>
#Для полноценной работы скопируем файлы загрузчика grldr и меню menu.lst в корень первого раздела носителя эталонной ОС:
cp grldr menu.lst /mnt/sd2

6) Выключаем целевую ЭВМ, можно так:

shutdown -h now


Неужели конец мучениям?


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

Спасибо за внимание!
Tags:
Hubs:
+13
Comments 24
Comments Comments 24

Articles