Установка Windows XP по сети
Как установить эту ОС, если нет DVD(CD)-привода? Будем устанавливать по сети, благо, что большинство компьютеров и всяких там note/net/ultra/book'ов эту фичу поддерживают. Будут, конечно, некоторые трудности в настройке, но они вполне преодолимые.Для загрузки по сети нам нужен сервер PXE-boot [How To] Поднимаем сервер PXE-Boot на Debian 7
Создадим каталог для хранения дистрибутивов Windows и установочных файлов
Код: Выделить всё
mkdir -p /home/temp/xp
cd /home/temp/xp
# Копируем сюда на сервер содержимое установочного диска.
Код: Выделить всё
aptitude install cabextract unzip convmv
cd /mirror/tftp/
cabextract /home/temp/xp/I386/SETUPLDR.EX_
mv setupldr.exe ntldr
cabextract /home/temp/xp/I386/STARTROM.N1_
mv startrom.n12 startrom.0
cp /home/temp/xp/I386/NTDETECT.COM ntdetect.com
cp /home/temp/xp/BOOTFONT.BIN bootfont.bin
# Копируем сам дистрибутив и переводим имена всех файлов в нижний регистр:
mkdir /mirror/tftp/winxp
cp -R /home/temp/xp/* /mirror/tftp/winxp/
cd /mirror/tftp/winxp
convmv --lower -r --notest --replace *
Расшаривание по сети
Устанавливаем Samba и выставляем базовые настройки
Код: Выделить всё
aptitude install samba
dpkg-reconfigure samba
dpkg-reconfigure samba-common
Код: Выделить всё
# nano /etc/samba/smb.conf
Код: Выделить всё
#======================= Global Settings =======================
[global]
# сначала производится вход с локальными логином и паролем клиента
security = user
# Если будет получен неправильный пароль, то клиенту будет дан гостевой доступ.
map to guest = Bad Password
## Browsing/Identification ###
. . . . . . . . .
#======================= Share Definitions =======================
[winxp]
path = /mirror/tftp/winxp
browsable = yes
read only = yes
guest ok = yes
[homes]
comment = Home Directories
browseable = no
. . . . . . . . .
Код: Выделить всё
/etc/init.d/samba restart
Обработка сетевых драйверов
Во время инсталляции Win XP должна получить информацию о сетевой карте и какой драйвер использовать. Установим ris-linux. Он написана на языке Python и поэтому, необходимо еще установить интерпретатор этого языка.
Код: Выделить всё
aptitude install python-minimal
► Показать
Краткое описание как самому собрать пакет драйверов сетевых карт.
RIS сервер хранит информацию о драйверах в файле «nics.txt», туда она попадает при помощи скрипта «infparser.py». Скрипт выполняет поиск в указанной ему директории файлов *.inf, считывает информацию о «Vendor Id» (уникальный идентификатор производителя оборудования) производителя и записывает в файл «nics.txt» строку вида:
Создаем каталоги ris, ris/drv и ris/drv/sys в корне TFTP сервера:8086 4227 w39n50.sys w39n50
Код: Выделить всё
mkdir /mirror/tftp/ris
mkdir /mirror/tftp/ris/drv
mkdir /mirror/tftp/ris/drv/sys
Код: Выделить всё
root@debmirror:/mirror/tftp/ris # python infparser.py drv/
Compiled 6384 drivers
generated devlist.cache
generated nics.txt
Продолжаем настройку ris-linux.
Скачиваем и распаковываем ris-linux в папку с именем /mirror/tftp/ris :
Код: Выделить всё
cd /mirror/tftp/
wget http://oss.netfarm.it/guides/ris-linux-0.4.tar.gz
tar -xvf ris-linux-0.4.tar.gz
mv ris-linux-0.4 ris
Код: Выделить всё
BASEPATH = /mirror/tftp/winxp/
Код: Выделить всё
./binlsrv.py -l binl.log
Succesfully loaded 6384 devices
Binlserver started... pid 7385
Настройка установщика
Создадим файл конфигурации winnt.sif
Код: Выделить всё
nano /mirror/tftp/winxp/winnt.sif
► Показать
Настройка syslinux
Добавим в основной конфигурационный файл ссылку на Windows XP
Код: Выделить всё
nano /mirror/tftp/pxelinux.cfg/default
Код: Выделить всё
default boot/menu.c32
menu title Boot menu
label Windows XP Professional SP3 RU network install
kernel winxp/startrom.0
label bootHDD
menu label Boot from HDD
#menu default
localboot 0x0
► Показать
Проблемы и их решение
Проблема 1. Согласно нашей файловой иерархии, установочные файлы ntldr, BOOTFONT.BIN, ntdetect.com и winnt.sif НЕ лежат в корневой папке TFTP сервера, а значит установщик startrom.0 их не получит. А должен искать в папке winxp.
Проблема 2. Согласно нашей файловой иерархии, sys файлы сетевых драйверов НЕ лежат в \distrib\i386, а значит установщик startrom.0 их не получит. А должен искать в папке winxp/drv/sys.
Проблема 3. Путь к файлу в Windows разделяется "/", а в Линуксе "\". Пути изначально неверные. Пути должны содержать именно "\".
Проблема 4. Windows при обработке файлов НЕ обращает внимание на регистр букв, а вот Linux обращает. Из-за этого Linux не может отдать файл на запрос типа BOOT.dll, когда по-факту нужно отдать BOOT.DLL. Имена всех запросов должны быть в маленьком регистре.
Проблема 5. Согласно нашей файловой иерархии, прочие установочные файлы НЕ лежат в папке distrib, а значит установщик startrom.0 их не получит. А должен искать в папке winxp/distrib.
Для решения этих проблем создадим правило переназначения имён файлов. Этим мы заставим наш tftp-hpa сервер преобразовывать поступающие от startrom.0 строки запросов, в "правильные", соответствующие нашей файловой иерархии и правилам именования.
Сначала создадим и откорректируем такое правило:
Проблема 2. Согласно нашей файловой иерархии, sys файлы сетевых драйверов НЕ лежат в \distrib\i386, а значит установщик startrom.0 их не получит. А должен искать в папке winxp/drv/sys.
Проблема 3. Путь к файлу в Windows разделяется "/", а в Линуксе "\". Пути изначально неверные. Пути должны содержать именно "\".
Проблема 4. Windows при обработке файлов НЕ обращает внимание на регистр букв, а вот Linux обращает. Из-за этого Linux не может отдать файл на запрос типа BOOT.dll, когда по-факту нужно отдать BOOT.DLL. Имена всех запросов должны быть в маленьком регистре.
Проблема 5. Согласно нашей файловой иерархии, прочие установочные файлы НЕ лежат в папке distrib, а значит установщик startrom.0 их не получит. А должен искать в папке winxp/distrib.
Для решения этих проблем создадим правило переназначения имён файлов. Этим мы заставим наш tftp-hpa сервер преобразовывать поступающие от startrom.0 строки запросов, в "правильные", соответствующие нашей файловой иерархии и правилам именования.
Сначала создадим и откорректируем такое правило:
Код: Выделить всё
nano /mirror/tftp/winxp/tftpd.rules
► Показать
Создадим скрипт переименования.
Код: Выделить всё
nano /usr/local/bin/rn.sh
► Показать
Код: Выделить всё
cd /usr/local/bin
chmod +x rn.sh
./rn.sh /mirror/tftp/winxp/distrib
Код: Выделить всё
dpkg-reconfigure tftpd-hpa
"-vvv" означает очень подробный вывод в лог "/var/log/syslog", "/var/log/daemon.log". Все пути в логах указываются относительно корневой папки tftp сервера (например /mirror/tftp/). Если проблем не наблюдается, то опцию рекомендую отключить.--secure -m /mirror/tftp/winxp/tftpd.rules -vvv
Теперь всё должно работать.
Все вопросы сюда.
Мануал в разработке.