Наверное все, кто готовил аварийную дискету для загрузки винды, встречали совет, мол:
1) отформатируйте дискету
2) закиньте на нее файлы ntldr, ntdetect.com, boot.ini
3) закиньте туда же файл Ntbootdd.sys, если собираетесь запускать винду с диска, подключенного к scsi контроллеру. При этом необходимо, чтобы в boot.ini соответствующая строка адреса загрузочной партиции начиналась со scsi(*) или signature(*).
Далее, в некоторых источниках сообщается, что файл ntbootdd.sys -- это переименованный файл драйвера контроллера (scsi-минипорт), и взять его можно прям из каталога %windir%\system32\drivers.
Так же сообщается, что все связанное с ntbootdd.sys просто необходимо, если scsi-контроллер не имеет поддержки int13 (+ каких-то его расширений), т.е. биос у него отсутствует, урезан или запорчен.
Дочитали ? ;)
А теперь, собственно, вопросы:
1) кто-нибудь на практике применял описанный выше способ загрузки с ntbootdd.sys ?
2) как применить этот способ не для скази, а для IDE-RAID'а ? Т.е. такое вообще возможно ? А то я мучился с двумя котроллерами SiI0680A и SiI3112 и ни черта у меня не вышло. :( На одном из контроллеров даже биос специально поферил, чтобы лишить его поддержки int13 -- все равно не помогло. :(
3) возможно ли такой сказиподобный метод применить для загрузки со стандартных IDE-контроллеров (CodeClass=01h/01h/8xh), отключив предварительно винты в биосе (в разделе Standard CMOS Setup) ? Если да, то какой файл брать из системы и переименовывать в ntbootdd.sys ? Пробовал pciide.sys, atapi.sys, еще какие-то -- не прокатило. :(
4) Должен ли быть ntbootdd.sys специально приспособлен драйверописателями для такого способа загрузки ? Может в официальных драйверах для scsi просто предусмотрен такой способ их вызова загрузчиком, а в дровах для силиконов -- нет.
5) Про signature(*): Поддерживает ли XP подобное задание пути до партиции ? 4 байта сигнатуры идут в том же порядке, что и в MBR / разделе реестра MountedDevices, или в обратном ?
Если кто сталкивался с необходимостью использования ntbootdd.sys, поделитесь пожалуйста опытом.
А кто не сталкивался, предлагаю присоединиться к эксперименту. :)
Спасибо за информацию!
Хоть кто-то этот способ на практике испытал.
А что за операционка ?
И какой синтаксис в boot.ini использовался: scsi() или signature() ?
Кстати, может существует какая-нить [досовская] утилита, позволяющая для каждого загрузочного устройства выдавать его адрес в формате ARC (Advanced RISC Computing). Т.е. чтобы она смотрела на конфигурацию компьютера глазами виндового загрузчика.
Например, запускаешь ее с дискеты, и она выдает:
• Partition 0: multi(0)disk(0)rdisk(0)partition(1)
• Partition 3: scsi(0)disk(3)rdisk(0)partition(2)
[или • Partition 5: signature(FD01C0EA)disk(3)rdisk(0)partition(2)]
Для scsi, если нет подходящего драйвера (или NTbootDD.sys), то можно было бы обойтись и без номера партиции. Хотя бы номера шин узнать и их привязку к контроллерам.
А то иногда, если несколько винтов, пока переберешь все варианты -- с ума сойдешь. :)
Подробно, честно, влом объяснять. По крайней мере прямо сейчас.
ИМХО, не актуален начиная с W2k, т.к. W2k+ понимает multi(*)
а PCIIDE.SYS и ATAPI.SYS - минипорты?
см. DDK/исходные коды виндов.
скорее всего поддерживает.
http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/Default.asp?url=/technet/prodtechnol/windows2000serv/reskit/prork/prbd_std_ccef.asp
Три дня мучений наконец увенчались хоть каким-то результатом. :)
Удалось загрузиться scsi-образным способом со встроенного IDE-контроллера при отключенных в биосе винтах! ;)
Дольше всего пришлось повозиться с сигнатурой.
Оказывается, не зря я спросил про порядок следования байтов. :wink:
Он действительно оказался обратным!
Т.е. Diskedit и регедит выдает сигнатуру как последовательность 4-х байтов, а в boot.ini эти байты рассматриваются как одно двойное слово. И нигде, ни в одном документе об этом подвохе ни слова не говорилось. :twisted: Такое впечатление сложилось после долгих поисков в инете, что куча авторов перепечатывают один единственный первоисточник и друг друга. :(
Выяснилось так же, что далеко не каждый минипортовый драйвер рэйдового контроллера можно использовать в качестве NTbootDD.sys.
Поэтому неудивительно, что мне пока не удалось загрузиться ни с SiI0680A/3112, ни с VIA VT6421A. :(
Похоже, драйверописатели решили немного сэкономить свое время. Н-да, печально. :(
Root
Читайте MSDN, изучайте DDK, пишите собственные драйвера. Думаю, на это у меня уйдет гораздо больше, чем три дня. :lol:
Сказиобразный способ загрузки актуален в любой системе в следующих случаях:
[list][*] Биос PCI-контроллера испорчен или отсутствует.
[*] Биос материнской платы не в состоянии правильно определить размер больших винтов или неправильно выставляет другие жизненно важные параметры накопителей.[/list:u]
Есть еще другие варианты использования, но они слишком специфичны. В любом случае, от наличия подобной возможности загрузки системы никому хуже не будет. :)
Нет. Это я от безысходности все варианты перепробовал. :)
PCIIDE.SYS -- Стандартный драйвер шины PCI IDE
ATAPI.SYS -- IDE/ATAPI Port Driver
Где бы эти коды еще раздобыть ... :roll:
Видел я эти документы и кучу их перепечаток и пересказов. Но не очень-то им доверял, пока сам на практике не убедился. 8)
ЗЫ: Спасибо всем, кто пытался помочь советом!
данный вопрос заслуживает отдельного рассмотрения... Причем те же драйвера установкой винды нормально подхватываются :-o
в eMule до сих пор лежат и на редких ФТП...
да мало ли как их MS обзовет. Главное, что PCIIDE.SYS и ATAPY.SYS, ну, никак на (сказевые) минипорты не походят...
согласен, но есть маленькие грабельки. У нас NTLoader должен как-то запуститься (т.е. БИОС все-таки нужен), а потом при необходимости подгрузить NTBootDD.SYS. А ставить загрузчик на другой диск, дабы грузится с безбиосного контроллера как минимум не эстетично.
Изначально речь шла вообще о загрузке с флопа... ;-)
Эту инфу тоже как статью оформишь? ;-)