Проблема решена. Делюсь опытом.
Я все ОСи (Linux, WinXP, Win7) клонирую через архивы *.tar.gz, загружаясь в линуксе с флэшки.
Сидеть и целыми днями сюсюкаться с мастерами, затрачивая как обезьяна по 2 часа на комп - мне как-то не стреляет. К тому же в готовых образах уже установлены все программы - офисы, просмотрщики, сделаны настройки рабочего окружения и так далее.
1. Linux.
С линуксом проще всего - он не привязывается к железу.
Пакуешь папки ./tar_root.sh:
#!/bin/sh
cd /
tar --ignore-failed-read --exclude=var/cache/apt -czvf lubuntu1204.tgz bin boot etc home lib opt root run sbin usr var
Потом распаковываешь, ставишь grub и готово (скрипт ниже).
2. WinXP
Хрюшу легко "отвязать" от железа: загружаешься в Безопасном режиме (по F8 в самом начале), заходишь в "Диспетчер устройств", удаляешь всё, что связано с чипчетом (например "Intel 45111"), жёстко выключаешь комп ВЫДЕРНУВ ШНУР питания из жопки, загружаешься в линуксе, правишь файл C:\Boot.ini:
[boot loader]
timeout=3
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP disk 1 part 1" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="Windows XP disk 2 part 1" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows XP disk 1 part 2" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(1)partition(2)\WINDOWS="Windows XP disk 2 part 2" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional Multiprocessor PC" /fastdetect /noexecute=alwaysoff /hal=halmacpi.dll /kernel=ntkrnlmp.exe
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /noexecute=alwaysoff /detecthal
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Multiprocessor PC with MPS" /fastdetect /noexecute=alwaysoff /hal=halmps.dll /kernel=ntkrnlmp.exe
и пакуешь всё это дело ./tar_win.sh:
#!/bin/sh
cd /mnt/win
tar --ignore-failed-read --exclude=Windows/Temp -czvf winxp.tar.gz WINDOWS "Documents and Settings" "Program Files" AUTOEXEC.BAT Bootfont.bin CONFIG.SYS IO.SYS MSDOS.SYS NTBOOTDD.SYS NTDETECT.COM boot.ini ntldr
Распаковываешь на новой машине из-под линукс, обновляешь груб:
update-grub
и готово.
3. Windows 7
Похоже на WinXP, но в безопасном режиме ПЕРЕД удалением чипсетов из Диспетчера устройств нужно ПОПРАВИТЬ РЕЕСТР (запустить regedit), чтобы избежать синего экрана BSOD 0x0000007B, цитирую
первоисточник:
Первым делом необходимо удалить ветку реестра HKLM\SYSTEM\MountedDevices.
Теперь нужно включить запуск сервисов, загружающих стандартные драйвера контроллеров IDE и SATA.
Открываем ветку HKLM\SYSTEM\CurrentControlSet\services в левой части редактора реестра. Теперь проверяем следующие разделы в этой ветке: amdide, amdsata, amdxata, atapi, intelide, msahci, pciide. Параметр Start у каждого должен быть равен 0х00000000 (0). Значение Start=0 - запуск сервиса при загрузке Windows. Если он равен 0х00000003 (3) щелкаем два раза на имя параметра (Start) и меняем значение на 0 (рисунок ниже) и нажимаем ОК.
После того, как start будет установлен в значение 0 у всех указанных выше разделов реестра, закрываем редактор реестра и перезагружаем компьютер в обычном режиме. В большинстве случаев этого достаточно...
Если проделанные действия не помогли и Windows 7 все равно не загружается и выдает ошибку STOP 0x0000007b, значит необходимый драйвер контроллера не загружается. Попробуем включить загрузку всех известных операционной системе драйверов.
Для этого ставим значение параметра Start равным 0 в следующих сервисах: adp94xx, adpahci, adpu320, aic78xx, amdsbs, arc, arcsas, elxstor, HpSAMD, iaStorV, iirsp, LSI_FC, LSI_SAS, LSI_SAS2, LSI_SCSI, megasas, MegaSR, nfrd960, nvraid, nvstor, ql2300, ql40xx, SiSRaid2, SiSRaid4, vhdmp, vsmraid, aliide, cmdide, nvraid, viaide.
Я включил первую пачку сервисов, а из второй - только оканчивающиеся на *ide.
Потом питание системника тоже жёстко вырубаем, загружаемся в линукс, ПОДСОВЫВАЕМ C:\Boot\BCD, дополненный с помощью EasyBCD и подправленный через VisualBCDEditor, пакуем всё это барахло ./tar_win7.sh:
#!/bin/sh
cd /mnt/win
tar --ignore-failed-read --exclude=var/cache/apt -czvf /mnt/data/Distr/Win7_x32.Gor.emp3.delink.tar.gz bootmgr \
config.sys XELDZ autoexec.bat BOOTSECT.BAK Boot Windows Recovery "Program Files" ProgramData \
"Documents and Settings" Users PerfLogs Progs
Распаковываем (как и Хрюшу) на другом компе, запускаем update-grub и заменяем строчку в файле /boot/grub/grub.cfg:
chainloader +1
на:
ntldr /bootmgr
С первым вариантом Windows7 грузится не на всех машинах.
Я щас везде ставлю Linux (Lubuntu), Grub2 и винду по желанию юзера. Всё делаю через скрипт ./install.sh, предварительно подправив пути дисков и папок:
#!/bin/sh
INST_DEV=/dev/sdb1
INST_MNT=/mnt/vdorogu
BOOT_DISK=/dev/sda
LIN_DEV=/dev/sda3
LIN_MNT=/mnt/root
WIN_DEV=/dev/sda1
WIN_MNT=/mnt/win
## For Ext4
#tune2fs -o journal_data_writeback $LIN_DEV
#tune2fs -O ^has_journal $LIN_DEV
#e2fsck -f $LIN_DEV
## === Mount parts
#mkdir $INST_MNT
#mount $INST_DEV $INST_MNT
#mkdir $LIN_MNT
#mount $LIN_DEV $LIN_MNT
#mkdir $WIN_MNT
#mount $WIN_DEV $WIN_MNT
## === Install Linux
cd $INST_MNT
tar xvzfk ./iso/lubuntu1204.tar.gz -C $LIN_MNT
cd $LIN_MNT
mkdir cdrom
mkdir dev
mkdir media
mkdir mnt
mkdir mnt/win
mkdir proc
mkdir sys
mkdir tmp
chmod 777 tmp
chmod 777 home
grub-install --root-directory=$LIN_MNT $BOOT_DISK
mount --bind /dev $LIN_MNT/dev
mount --bind /proc $LIN_MNT/proc
mount --bind /sys $LIN_MNT/sys
chroot $LIN_MNT grub-install --recheck --no-floppy $BOOT_DISK
chroot $LIN_MNT update-grub
umount $LIN_MNT/dev
umount $LIN_MNT/proc
umount $LIN_MNT/sys
## === Install Windows
cd $INST_MNT
tar xvzf ./iso/winxp3sp3dnet.tar.gz -C $WIN_MNT
#tar xvzf ./iso/win7gor32.tar.gz -C $WIN_MNT
# === Edit fstab
nano $LIN_MNT/etc/fstab
Времени экономится куча, особенно полезно, если нужно быстро систему восстановить.
Любая ОС ставится за 5 минут (распаковка архива) без обезьяних действий.