"Подготовка ntldr и startrom.n12" - есть способ проще?

Обсуждение статьи "PXELINUX и новые возможности установки Windows"

Модераторы: editor, Devils

"Подготовка ntldr и startrom.n12" - есть способ проще?

Сообщение lrm » 01 мар 2010, 23:52

внезапно пришла мысль - проверил - работает...

господа, а нужна ли вообще кропотливая обработка VB-скриптом файлов startrom и ntldr, если можно просто распихать одноименные файлики по разным каталогам с дистрибутивами?

поясню на примере статьи.
задача - создать три варианта установки винды из двух дистрибутивов.

xp0 - каталог дистрибутива с фишками и рюшками (i386+$oem$)
xp1 - каталог чистого дистрибутива (просто i386)

решение из статьи
- создаем три файла ответов а-ля winnt.sif c именами xp001.sif, xp002.sif, xp101.sif
- создаем три файла а-ля ntldr - xp001, xp002 и xp101
- создаем три файла а-ля startrom.n12 - xp001.0, xp002.0, xp101.0
- все кидаем в e:\netboot
- настраиваем pxelinux (файл default), указывая KERNEL xp001.0, KERNEL xp002.0 и KERNEL xp101.0 соответственно

решение, пришедшее в голову и опробованное на практике
- создаем три каталога (назовем их по традиции 01, 02 и 10)*
- закидываем в них соответствующие вариантам загрузки winnt.sif
- закидываем в них родные (необработанные скриптами) ntldr, startrom.n12 (ну и ntdetect.com с bootfont.bin, конечно же)
- настраиваем pxelinux (файл default), указывая PXE 01/startrom.n12, PXE 02/startrom.n12 и PXE 10/startrom.n12 соответственно (почему pxe а не kernel - см тут)

из плюсов, кроме отсутствия неразберихи в e:\netboot (а вдруг у вас 10 вариантов загрузки, как в скрипте Devils'a)
- отсутствие необходимости править ntldr и startrom
- легкое добавление вариантов загрузки (достаточно создать еще один каталог и изменить winnt.sif)

* - вообще говоря, место размещения каталогов с конфигурациями загрузки может быть любым, но для удобства понимания имеет смысл размещать из в каталоге соответствующего дистрибутива - в нашем примере каталог 01 и 02 лучше положить в xp0, а 10 - в каталог xp1)
lrm
 
Сообщения: 59
Зарегистрирован: 01 фев 2010, 16:40

Re: "Подготовка ntldr и startrom.n12" - есть способ проще?

Сообщение root » 02 мар 2010, 00:59

lrm молодец.
Надо будет повнимательней изучить тему.
root
Site Admin
 
Сообщения: 439
Зарегистрирован: 20 июл 2006, 00:45

Re: "Подготовка ntldr и startrom.n12" - есть способ проще?

Сообщение lrm » 03 мар 2010, 07:07

мне стыдно :oops:
некорректно провел тестирование, слишком рано обрадовался и поспешил с публикацией.
в двух словах - мой метод пока не рабочий (обнаружил это через пару часов после публикации, все это время искал способ решения, но пока все идеи с треском провалились)

направлений вижу два - либо научиться каким-либо образом обучить tftpd32 "на лету" менять base directory, либо найти способ стартовать установку windows по сети с образа дискеты.

первый способ, похоже, упирается в возможности tftpd32 (в архивах рассылки нашел аналогичную проблему, поднятую в 2005 и оставшуюся без ответа). теоретически проблема может решиться сменой tftpd32 на что-то аналогичное, но более гибкое и "линуксовое"

второй способ уперся в мое неумение подружить BINL'овскую базу драйверов и "дискетную" ОС (FreeDos, MsDos 5-6-7-8, WinPe)

продолжаю поиск и опыты, заодно жду каких-нить идей и методов от уважаемых форумчан
lrm
 
Сообщения: 59
Зарегистрирован: 01 фев 2010, 16:40

Re: "Подготовка ntldr и startrom.n12" - есть способ проще?

Сообщение Devils » 04 мар 2010, 00:22

либо научиться каким-либо образом обучить tftpd32 "на лету" менять base directory
можно попробывать состряпать пакетник ))
Devils
 
Сообщения: 231
Зарегистрирован: 25 июн 2009, 16:40
Откуда: Подмосковье

Re: "Подготовка ntldr и startrom.n12" - есть способ проще?

Сообщение qw-0 » 05 мар 2010, 02:27

irm писал(а):направлений вижу два - либо научиться каким-либо образом обучить tftpd32 "на лету" менять base directory

Поставь четко задачу. И будет решение.
qw-0
 
Сообщения: 164
Зарегистрирован: 13 апр 2007, 01:20

Re: "Подготовка ntldr и startrom.n12" - есть способ проще?

Сообщение lrm » 05 мар 2010, 13:59

цель - упростить процесс добавления вариантов установки windows в связку tftpd32+pxelinux
задача - избавится от необходимости править ntldr и startrom.n12
вариант решения - размещать файлы для каждого варианта загрузки в отдельном подкаталоге
проблема- невозможность передачи пути загрузки файлу startrom
описание проблемы:
рассмотрим подробно процесс работы связки tftpd32+pxelinux применительно к нашим условиям
1. клиент инициализирует pxe-загрузку (ищет в сети dhcp и tftp сервер)
2. расположенный на сервере tftpd32 отвечает "я буду твоим dhcp и tftp сервером)
3. tftp32 отдает клиенту pxe-загрузчик (а нашем случае это pxelinux.0)
4. pxelinux.0 читает конфиг из файла pxelinux.cfg\default и отдает нарисованное в нем меню клиенту
5. клиент выбирает вариант загрузки "установка хр". этому варианту соответствует строчка конфига "PXE xp/startrom.n12"
6. pxelinux лезет в каталог xp/ и отдает клиенту виндовый загрузчик startrom.n12
7. startrom.n12 запускается на клиенте и просит у tftp сервера следующий файл - ntldr
8. [теоретически] tftp32 лезет в в каталог xp/ и отдает клиенту файл ntldr
8. [практически] tftp32 пытается найти файл ntldr в единственном доступном для него каталоге - base directory, указанном в tftpd32.ini

почему же в пункте 4 tftp-сервер может залезть в подкаталог, а в пункте 8 - не может?
потому что pxelinux умеет передавать пути tftp серверу, а startrom - нет.

--- размышления на тему, можно не читать, ибо задача уже поставлена---
в принципе, мы можем отредактировать startrom таким образом, что бы он спрашивал у tftp не ntldr а xp/ntldr (по смещению 5183h, и это работает), но
во-первых, есть ограничение на длину строки, которую можно вписать таким варварским способом в startrom;
во-вторых, потом вступит в дело ntldr, который начнет просить у tftp остальные файлики (bootfont.bin, ntdetect.com и winnt.sif), и который тоже не умеет передавать пути;
а в-третьих, это противоречит условиям задачи - мы как раз хотели избавиться от необходимости редактирования ntldr и startrom

еще идея - если положить все нужные файлики в образ дискетки и загрузиться с нее, то все файлики окажутся переданными на клиентскую машину и, возможно, она не будет их спрашивать у tftp сервера. (по аналогии с запуском установки винды с дискетки при наличии дистрибутива оной на сд или подсовыванием нужного winnt.sif с дискетки)
проблема в том, что если положить драйвера для сд-рома на загрузочную дискету не составляет труда, то с драйверами для сетевой карты все гораздо сложнее.
если копнуть глубже, то можно найти в сети какое-то количество инструкций типа "не получается установить винду на ноут из-за сгоревшего сд - не беда, загрузка по сети - ваш выбор". и вроде бы все хорошо - загрузились в winPE, написали net use y: \\192.168.1.5\cd - и работаем.
но я столкнулся со следующей проблемой - в тех версиях образа winPe, которые мне удалось найти, не было поддержки моей сетевой карточки Marvell Yukon. и вообще, список поддерживаемых сетевых карт оказался не очень большим, то есть способ не очень универсальный

и ведь драйвера же есть - в том же binl - грузится комп по сети, копирует дистрибутив, гоняет файлики. но объяснить это досу или той же винде - задача не элементарная. доходит до абсурда (я столкнулся с этим еще тогда, когда первый раз ставил чистый дистрибутив по сети) - винда установилась по сети(!), а после установки заявила, что не может работать с сетью, ибо нет драйверов

а есть вообще способ запустить установку винды по сети при загрузке с дискеты? варианты с ROM-o-matic, афаик, решают проблему с отсутствием поддержки pxe-загрузки в биосе клиента, а нам нужен следующий этап - скормить клиенту как раз те самые startrom, ntldr etc

вариант с пакетником, который бы правил tftpd32.ini на предмет base directory и перезапускал бы tftpd32... ну, написать такой пакетник не проблема, проблема в том, как его заставить выполняться на сервере в зависимости от того, что выбирает клиент. сам pxelinux, афаик, запускать пакетники и работать с файлами на сервере не умеет...

теоретически есть еще вариант с дизасемблированием startrom и "обучением" понимать пути, переданные ему в командой строке, но к этому я пока не готов)
Последний раз редактировалось lrm 05 мар 2010, 18:50, всего редактировалось 1 раз.
lrm
 
Сообщения: 59
Зарегистрирован: 01 фев 2010, 16:40

Re: "Подготовка ntldr и startrom.n12" - есть способ проще?

Сообщение Devils » 05 мар 2010, 14:41

Без обид, но вы похожи на человека, который создает себе проблемы и их решает ))
Devils
 
Сообщения: 231
Зарегистрирован: 25 июн 2009, 16:40
Откуда: Подмосковье

Re: "Подготовка ntldr и startrom.n12" - есть способ проще?

Сообщение lrm » 05 мар 2010, 18:48

можно сказать и так)
но мне больше нравится называть это "спортивным интересом")

мысль о том, вместо скопища файлов в пресловутой base dir у меня будет четкая структура папок вида
-base dir
--win.xp.orig
---clear
---soft
---repair
--win.xp.my
---auto
---soft
--win.7.ult
---orig
---soft
и т.д
заставляет меня продолжать эксперименты)
lrm
 
Сообщения: 59
Зарегистрирован: 01 фев 2010, 16:40

Re: "Подготовка ntldr и startrom.n12" - есть способ проще?

Сообщение Devils » 05 мар 2010, 19:57

Разве мой скрипт не структуризирует? :D
Devils
 
Сообщения: 231
Зарегистрирован: 25 июн 2009, 16:40
Откуда: Подмосковье

Re: "Подготовка ntldr и startrom.n12" - есть способ проще?

Сообщение root » 05 мар 2010, 22:38

lrm
Это умеет делать стандартный RIS и WDS. Там как раз дистрибутивы операционок раскладываются по каталогом, а на удаленном компьютере выбирается, что устанавливать. Единственное для работы RIS нужен домен.
Но поставленную вами задачу решит на 100%.
root
Site Admin
 
Сообщения: 439
Зарегистрирован: 20 июл 2006, 00:45

След.

Вернуться в PXELINUX и новые возможности установки Windows

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron
@Mail.ru