Восстановление Windows XP на EeePC 901 по сети при помощи PXE

Описание возникшей ситуации - сломанная ОС на нетбуке EeePC 901 (atom, 2 SSD HDD 4Gb + 16 Gb), отсутствие внешнего usb CD/DVD привода, отсутствие usb флешки, как результат - все популярные способы восстановления операционной системы с recovery DVD диска не подходят.
Но, EeePC 901 поддерживает загрузку при помощи протокола PXE, чем мы и воспользуемся.

Минимальные требования для реализации задачи:
1) EeePC 901.
2) Компьютер у установленным DHCP, TFTPD сервером и возможностью запуска Norton Ghost 11.
3) Диск EeePC 901 Recovery DVD или его образ в виде iso (у меня как раз был образ, как вариант - можно использовать этот образ).
4) Пакет syslinux 3.84, именно в этой версии пакета появилась поддержка загрузки iso дисков по сети.
5) Norton Ghost 11, найти данную программу в сети интернет достаточно просто, ключевое слово для поиска ghost32.exe.
6) Hirens Boot CD 10.1

Настройка DHCP и TFTPD сервера под Debian Linux:
Под рукой у меня был только ноутбук с OS Debian Lenny, соответственно его будем использовать в роли DHCP и TFTP сервера.
Устанавливаем и настраиваем DHCP сервер:

  1. sudo aptitude install dhcp3-server
  2.  
  3. cat /etc/dhcp3/dhcpd.conf
  4.  
  5. # Задаем имя домена, у меня такое.
  6. option domain-name "example.com";
  7.  
  8. default-lease-time 600;
  9. max-lease-time 7200;
  10.  
  11. allow booting;
  12. allow bootp;
  13.  
  14. # У меня используется роутер, соответственно настроена такая подсеть.
  15. subnet 192.168.1.0 netmask 255.255.255.0 {
  16. # Выдаем IP адреса из этого пула, если кто-то запросит их естественно. Данный пул не пересекается с существующим.
  17. range 192.168.1.200 192.168.1.253;
  18. option broadcast-address 192.168.1.255;
  19. # Задаем адрес шлюза
  20. option routers 192.168.1.1;
  21. # Задаем адрес DNS сервера
  22. option domain-name-servers 192.168.1.1;
  23. }
  24.  
  25. # Задаем настройки для загрузки EeePC 901
  26. group {
  27. # Задаем адрес tftpd сервера.
  28. next-server 192.168.1.3;
  29. host tftpclient {
  30. # Указываем MAC адрес сетевого интерфейса EeePC 901
  31. hardware ethernet 00:22:15:97:21:B5;
  32. # Задаем название файла загрузчика
  33. filename "pxelinux.0";
  34. }
  35. }
  36.  
  37. /etc/init.d/dhcp3-server restart

Все, DHCP сервер настроен и готов к работе.

Настраиваем TFTPD сервер, я выбрал сервер tftpd-hpa.

Устанавливаем сервер:

  1. aptitude install tftpd-hpa

Настраиваем сервер:
  1. cat /etc/default/tftpd-hpa
  2.  
  3. #Defaults for tftpd-hpa
  4. RUN_DAEMON="yes"
  5. OPTIONS="-l -s /var/lib/tftpboot"
  6.  
  7. /etc/init.d/tftpd-hpa restart

Все, сервер настроен и готов к работе.

Все файлы для загрузки по сети необходимо разместить в директории /var/lib/tftpboot. Список файлов следующий:
pxelinux.0 - сетевой загрузчик, берем его из пакета syslinux.
pxelinux.cfg/default - файл настроек для сетевого загрузчика, содержимое файла:

  1. TIMEOUT 100
  2. PROMPT 100
  3.  
  4. UI menu.c32
  5.  
  6. LABEL hbcd
  7. MENU LABEL Hirens Boot CD 10.1
  8. TEXT HELP
  9. hbcd
  10. ENDTEXT
  11. LINUX memdisk
  12. APPEND iso
  13. INITRD /hbcd_10.iso

memdisk - вспомогательный модуль, используется в связке с pxelinux.0, берем его из пакета syslinux. Начиная с версии 3.84 данный модуль поддерживает загрузку ISO образов по сети. Какой-нибудь Windows или WinPE загрузить пока не получится, но, надеюсь, разработчики программы смогут это решить.
hbcd_10.iso - образ диска Hirens Boot CD 10.1.

Загрузка Norton Ghost 11 для загрузки gho образов по сети:

Включаем EeePC 901, настраиваем в bios (при загрузке наживаем f2) на загрузку с сетевого устройства, и благополучно загружаем нетбук по сети при помощи pxe. В меню загрузки выбираем Hirens Boot CD 10.1, после загрузки диска выбираем: Start Hiren`s Boot CD - далее 2-ой пункт Backup Tools - Norton Ghost 11.5 - Ghost with Network Support. Выбор этой программы очевиден, образы диска на EeePC Recovery DVD находятся в формате gho, родной формат программы Norton Ghost. Также данная программа поддерживает загрузку данных образов по сети.
После запуска программы на EeePC 901 нам необходимо подготовить slave машину для передачи gho образов на master машину.
Для этого на компьютере с debian использовалась virtualbox и установленная windows xp (сеть для данной машины настроена в режиме bridge, соответственно выделяется отдельный IP адрес доступный в рамках локальной сети напрямую, то есть без использования NAT и т.д.). Для реализации задачи пробрасываем EeePC 901 Recovery DVD внутрь виртуалки, далее запускаем ghost32.exe и далее в меню выбираем режим Peer to Peer - TCP/IP - Slave.
На самом EeePC 901 уже должен благополучно загрузиться Norton Ghost, получить по DHCP IP адрес и загрузить интерфейс, в интерфейсе программы выбираем режим Peer to Peer - TCP/IP - Master и в возникшем окне указываем IP адрес той машины, где запущен Norton Ghost в режиме slave.
После этих манипуляций на EeePC 901 станут доступны все ресурсы Slave машины, остается только выбрать папку recovery на EeePC 901 Recovery DVD в которой находятся 2-а gho файла, первый файл для восстановления 1-го раздела, второй файл для восстановления 2-го раздела.
Поочередно восстанавливаем информацию из этих gho файлов на разделы EeePC 901 и после завершения данных операций и перезагрузки нетбука станет доступна Windows XP для настройки и работы.

В аттаче к заметке архив tftpboot.tar.gz с файлами pxelinux.0, default, menu.c32, memdisk. Достаточно их распаковать в папку /var/lib/tftpboot, добавить iso файл Hirens Boot CD 10.1 (имя iso файла задается в файле default).

Обсудить заметку на форуме