Альтернативный способ установки Windows XP по сети (PXE) из Linux-окружения.

Преамбула

Способ довольно странный, а само Linux-окружение для установки несколько кривовато, потому пишу больше чтоб тему закрыть и к установке XP более не возвращаться.

Принцип действия программы основан на возможности установки Windows XP из под DOS. Сначала по сети грузится специальный дистрибутив Linux (ядро и initrd), он настраивает сеть, подключает нужные сетевые шары, запускает предварительное конфигурирование, генерирует файл unattend.txt и разные послеустановочные скрипты, теоретически запускающие установку необходимых программ. На практике вся автоматизация работает криво (возможно, надо править скрипты и конфиги), но доступ к установщику винды, который думает, что запущен из-под DOS, мы в результате получаем.

Установка Linux-окружения

Вот где, кто и когда и откуда эту штуковину взял, я не ведаю. Поэтому вот вам архив прямо с сервера (естественно, без дистрибутива винды внутри).

Скачать

Распаковываем содержимое каталога unatxp (внутри архива) куда-нибудь в отдельный подкаталог в каталоге с дистрибутивами на PXE-сервере.
Пусть будет для примера такой вот путь:
/home/pxe/tftp/distrib/windows/unatwinxp

Настройка шары

Для работы установочному Linux-окружению необходимо расшарить каталог distrxp
Добавляем в smb.conf:

[unatdistr]
        path=/home/pxe/tftp/distrib/windows/unatwinxp/distrxp
        public=yes
        browsable=yes
        read only=yes
        guest ok=yes

Перезапускаем samba.

Подготовка дистрибутива Windows XP

Дистрибутив XP надо скопировать с установочного диска или распаковать из ISO-образа и поместить в подкаталог distrxp/os/winxp, а также установить права на все файлы в подкаталогах в 755.

cd /home/pxe/tftp/distrib/windows/unatwinxp/distrxp/os/winxp
chmod -R 755 *

Загрузка Linux-окружения, загрузочное меню PXE-сервера.

Осталось подправить меню PXE-сервера.

LABEL winxpunatted
    menu label Windows XP Unattended install
    kernel distrib/windows/unatwinxp/bzimage
    initrd distrib/windows/unatwinxp/initrd.gz
    append z_user=guest z_password=guest z_path=\\10.10.1.5\unatdistr

Как видно из кода выше, необходимо передать ядру Linux-окружения имя пользователя и пароль для доступа к шаре, а также ее адрес на сервере. Все данные передаются в соответствующих параметрах ядра.

Подготовка целевой машины

Теперь надо подготовить машину, на которую будем устанавливать XP. На самом деле, Linux-окружение само предложит переделить диск и сделать активный раздел при помощи своих инструментов, но я ему не особо доверяю, потому сделал это с помощью Acronis. Главное, чтоб перед установкой на машине уже был активный раздел, отформатированный в FAT32, иначе Linux-окружение перевет работу где-то на середине, и выбросит в линуксовую консоль, так и не запустив эмулятор DOS.

Запуск Linux-окружения и установка Windows XP

Далее с картинками под катом

Плюсы и минусы

— Довольно кривое Linux-окружение
— Много мелких суетливых движений, как говорил классик. Необходимость отвечать на кучу вопросов.
— Требует раздел FAT32, потом придется переделывать командой convert.

+ Отсутствует возня с сетевыми драйверами и BINL
+ Идет даже на очень слабых машинах, тестировалось на PIII 700

Скачать

Установочное Linux-окружение для Windows XP

Загрузка Windows (7/10/Vista/XP) с жесткого диска загрузчиком GRUB4DOS из ISO-образа.

Преамбула

Как-то давно мы делали загрузку Windows с жесткого диска (копия) с помощью Grub4DOS, запускаемого в DOS-окружении.

Оказывается, на некоторых машинах такая конфигурация может неожиданно сглючить. Загрузчику 7 и 10 Windows почему-то периодически не нравится образ виртуального HDD с DOS. Переделал так, чтобы было без DOS-окружения совсем, а GRUB4DOS стартовал из загрузочного ISO-образа.

Загрузочное меню

Составляем загрузочное меню GRUB4DOS, в принципе, все делается по инструкции, нужен лишь редактор, поддерживающий переносы строк Windows/DOS (CR+LF). И стоит обратить внимание на то, что этот загрузчик GRUB4DOS чувствителен к регистру имен файлов, поэтому файл menu.lst необходимо назвать строчными буквами.

Основное загрузочное меню (menu.lst) на PasteBin
Меню с альтернативными вариантами загрузки (alt.lst) на PasteBin

Загрузочный ISO

Загрузочный ISO я сделал в Linux, с помощью утилиты mkisofs.

1. Создаем где-нибудь в удобном месте каталог iso_root
2. Копируем в каталог файлы menu.lst, alt.lst и загрузчик GRUB4DOS grldr
3. В каталоге уровнем выше iso_root делаем скрипт для создания ISO-образа

Скрипт на PasteBin

4. Запускаем его

./createiso-gfd WINBOOT

5. ФАНФАРЫ

Вот вид загрузочного меню:

Скачать

Готовый ISO-образ с mega.nz (600 Кб)
menu.lst, alt.lst, grldr и скрипт createiso-gfd в одном архиве.

Установка Windows XP из Mini Windows XP по сети (PXE). Без геморроя с загрузчиками и драйверами.

Преамбула

В прошлой заметке Копия мы делали так, чтобы можно было грузить по сети Mini Windows XP из Hiren’s Boot CD 15.2.
Такой способ запуска Mini Windows XP заодно избавляет от необходимости подгружать с помощью BINL необходимые драйвера сетевых карт и ебли с загрузчиками. А значит, можно поставить и «большую» XP. По сети.

Организуем шару

Сделаем на нашем сервере отдельную шару под дистрибутив XP, у меня она уже была, т.к. раньше я тоже использовал немного другой способ установки XP с помощью специального Linux-окружения, но там надо было нажимать больше кнопок и вводить серийный номер. Поэтому в примере будет длинный и странный путь к шаре.

Прописываем в /etc/samba/smb.conf

[unatdistr]
        path=/home/pxe/tftp/distrib/windows/unatwinxp/distrxp
        public=yes
        browsable=yes
        read only=yes
        guest ok=yes

Перезагружаем samba-сервер.

Копируем в шару файлы с дистрибутива XP.

Обратите внимание, чтобы все успешно сработало, права на файлы должны быть установлены в 755.

Готовим файл ответов unattend.txt

unattend.txt

Создаем BAT-файл для запуска установки

Алгоритм работы данного BAT-файла таков:

1. Проверить, есть ли по необходимому пути файл winnt32.exe
2. Если нет, подключить шару.
3. Подождать
4. Выполнить winnt32.exe с необходимыми параметрами.

Пример файла xpinstall.bat:

SET NETADDR=\\192.168.0.20\unatdistr
SET NETDRIVE=Z
SET INSTALLPATH=\os\winxp\
SET UNATTEND=W:\scripts\unattend.txt
SET SYSDRIVE=D

if exist %NETDRIVE%:%INSTALLPATH%i386\winnt32.exe goto INSTALL

net use %NETDRIVE%: %NETADDR%
sleep 5

:INSTALL
%NETDRIVE%:
cd %INSTALLPATH%
i386\winnt32.exe /s:%NETDRIVE%:%INSTALLPATH%i386 /syspart:%SYSDRIVE% /tempdrive:%SYSDRIVE% /unattend:%UNATTEND%
pause

На PasteBin

В принципе, в самом файле нет ничего интересного, но есть момент, на котором стоит остановиться. Это параметры запуска winnt32.exe:

/s:<путь> — путь к файлам дистрибутива, обязательно в конце указывайте каталог <code >i386, иначе не сработает.
/syspart:<буква_диска>— раздел, на который будет установлена ОС.
/tempdrive:<буква_диска> — раздел для временных файлов, он обязательно и под той же буквой должен быть доступен, как из WinPE, так и после перезагрузки. Вообще лучше всего поставить тот же раздел, что и системный. Установщик потом сам потрет все лишнее.
/unattend:<путь> — путь к файлу автоматизации установки (unattend.txt)

После двоеточий пробелы НЕ НУЖНЫ!

Полученный BAT-файл нужно положить в шару hbcdshare, созданную в прошлой статье, например в отдельный каталог scripts вместе с утилитой sleep и файлом unattend.txt, права исполняемым файлам надо установить в 755.

chmod 755 xpinstall.bat
chmod 755 sleep.exe

Минус данного способа. Перед установкой ОС, соответствующий раздел, указанный в параметрах /syspart и /tempdrive должен быть отформатирован и доступен из WinPE, а также этот раздел должен быть активным.

После запуска данного BAT-файла запустится программа установки, которая скопирует содержимое дистрибутива XP на жесткий диск, установит загрузчик, после чего необходимо будет перезагрузиться уже с жесткого диска, и продолжить установку.

Утилита InstallGenerator

Минус в использовании шары и скрипта запуска установщика с нее, в том, что если нужно поменять букву диска для установки, или адрес самой шары, то придется лопатить батник из Linux (шара для безопасности доступна в режиме Read Only).

Чтобы это можно было как-то побороть, наскриптил небольшую утилиту InstallGenerator. При необходимости что-то поменять вживую, можно запустить ее, указать другие пути для сохранения конфигов, адреса шары и других параметров.

Поступить также, положить в отдельный каталог в шаре для WinPE и поставить в каталоге права 755 (или 777).

chmod 755 *

При зппуске InstallGenerator из WinPE появится следующее окно:

Здесь можно будет выбрать нужные опции. Программа сгенерирует BAT-файл, скопирует файлы в указанное расположение, и, при необходимости, запустит скрипт.

Для генерации скрипта, программа берет данные из файла script.txt, так что его можно всегда подправить. Программа лишь заменяет строки между ! и # на соответствующие значения внутренних переменных.

Пример файла script.txt на PasteBin

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

Скриншоты установки Windows XP из образа Mini Windows XP. И некоторые пояснения

Скриншоты с пояснениями

Готово!

Скачать

BAT-файл xpinstall.bat, sleep.exe и unattend.txt
Утилита InstallGenerator
Готовый образ WinPE с утилитой XPInstall (ярлык на Рабочем столе)