[Quote]

    conty9
  • 100
  • Longevity: 6 years 11 months
  • Posts: 1484
  • REPUTATION:127

    [+] [-]
  • Location: Прикарпаття
NTplus - утилита для генерации загрузчика SetupLDR (Windows XP/2003) под "свою" папку Утилита может использоваться для создания готового загрузчика Setupldr.bin (версия 5.2.3790.1830) с настройкой под "свой" путь к файлу конфигурации, для RAM-загрузки сборок на базе Windows XP/2003. В настройках указываем путь к конфигу, и, при желании - загрузочную надпись. В загрузчик уже интегрирован NTDETECT.COM (за что отдельное спасибо Nikzzzz), поэтому достаточно лишь добавить файл конфигурации для загрузки.
Что и зачем:
1. Имя файла конфигурации, формируется из пути (п.2). Слева находится индикатор, при несоответствии формату 8.3 (имя 8 символов, расширение 3 символа), сменит цвет на красный.
2. Поле ввода полного пути к файлу конфигурации, максимальная длина пути 24 символа, при превышении или вводе неанглийскими буквами сработает индикация и будет заблокирована кнопка генерации.
3. Поле ввода загрузочной надписи, ограничение 48 символов, с индикатором соответствия.
4. Кнопка очистка/по-умолчанию для загрузочной надписи.
5. Радиокнопки выбора ядра:
a) ntkrpamp.exe (с поддержкой мультипроцессорности SMP и страничной адресации памяти PAE), обычно применяется в полных ядрах продвинутых сборок (например, C9PE, RusLive);
b) ntoskrnl.exe (без SMP и PAE), применяется в урезанных ядрах, например, в Native-версиях (только одно ядро и никаких PAE);
c) ntkrnlmp.exeSMP, но без PAE), обычно применяется в сборках от производителя.
6. Выход.
7. Создать загрузчик. Имя загрузчика будет совпадать с именем меню (п.1), только расширение будет .bin.
Примечание:
Все входные данные - только допустимые символы и английские буквы (используется загрузчик с кодовой страничкой 437 без поддержки кирилицы). Минимальная проверка правильности ввода и ограничений имеется, но это не полноценная проверка. Сам загрузчик может быть запущен из любого пути, привязка нужна только для конфига.

Пример конфигурации, для загрузки Native-ядра C9PE

[SetupData]
BootDevice="ramdisk(0)"
BootPath="\i386\System32\"
OsLoadOptions="/minint /fastdetect /rdpath=\2K10\WINPE\C9NE.IM_"

Пример конфигурации, для загрузки полного ядра C9PE: монтируется 4-й индекс; поддержка только 2-х ядер CPU (остальные варианты закомментированы)

[SetupData]
BootDevice="ramdisk(0)"
BootPath="\i386\System32\"
; Onecore CPU (ограничить, только 1 ядро)
;OsLoadOptions="/minint /fastdetect /onecpu /rdimageoffset=8192 /rdimagelength=3161088 /rdpath=\2K10\WINPE\C9PE.WIM"
; Dual-core CPU (ограничить, только до 2-х ядер)
OsLoadOptions="/minint /fastdetect /numproc=2 /rdimageoffset=8192 /rdimagelength=3161088 /rdpath=\2K10\WINPE\C9PE.WIM"
; Multi-core CPU (без ограничений, поддержка всех ядер)
;OsLoadOptions="/minint /fastdetect /rdimageoffset=8192 /BOOTLOG /rdimagelength=3161088 /rdpath=\2K10\WINPE\C9PE.WIM"
[wimain]
systrim=4
defwim=4
Поддерживаемые системы: все актуальные ОС (ХР...10) и WinPE на их основе (для х64 - только при условии наличия х86-подсистемы).
Attachments

NTplus v1.0

[Quote]

    booter
  • 29550
  • Longevity: 24 days
  • Posts: 5
  • REPUTATION:0

    [+] [-]
conty9, отличная утилита, благодарю! aa
В процессе пользования возникла пара вопросов.
1. В отличие от обычного NTLDR, в SetupLDR захардкожен неслабый такой список, что ему непременно следует загружать: всякие файлы, драйверы и т.п. Вопрос: это можно как-нибудь отключить, чтобы он грузил только то, что ему явно указано? Я заглянул вовнутрь загрузчика и обнаружил там слово "skipmissingfiles", но похоже, что это не совсем то. Или то?
2. SetupLDR наотрез отказывается загружать модифицированные файлы, как будто в нём захардкожены контрольные суммы. Вопрос: это можно как-нибудь обойти?
Буду благодарен за помощь!

[Quote]

    conty9
  • 100
  • Longevity: 6 years 11 months
  • Posts: 1484
  • REPUTATION:127

    [+] [-]
  • Location: Прикарпаття
SetupLDR, в отличие от NTLDR, предназначен для загрузки установочного ядра (или РЕ). Отключать/менять ничего нельзя - это ЗАГРУЗЧИК, его задача запуститься из загрузочной записи, на этом этапе нет ключей запуска, параметров реестра и прочего. Он загружает только то, что он умеет загружать, и только в той конфигурации, что предусмотрена MS. Никаких проверок КС там нет.

[Quote]

    booter
  • 29550
  • Longevity: 24 days
  • Posts: 5
  • REPUTATION:0

    [+] [-]
89869на этом этапе нет ключей запуска, параметров реестра и прочего. Он загружает только то, что он умеет загружать, и только в той конфигурации, что предусмотрена MS.
Насколько я понимаю, MS предусмотрено загружать то, что прописано в файлах WINNT.SIF, TXTSETUP.SIF, SETUPREG.HIV и им подобных.
89869Никаких проверок КС там нет.
Если бы всё было так просто, то это бы не была M$.
Поменяв любой бит в hal.dll или kdcom.dll, Вы получите сообщение о невозможности загрузки указанных модулей, а изменив, упаси боже, что-то в bootvid.dll, Вы получите сообщение о невозможности загрузки ntoskrnl.exe, в котором Вы ничего не меняли, после чего, если Вам повезёт, сможете провести всего одну весёлую ночь в поисках причины отказа.
Добавлено через 22 минуты 23 секунды:
Небольшой багрепорт. При загрузке с рамдиска, SetupLDR из NTplus требует файл TXTSETUP.SIF, хотя в WINNT.SIF ему прямо сказано грузиться с рамдиска, где указанный файл и находится. В загрузчике из Win2k3 SP2 такой беды нет: ему достаточно только WINNT.SIF, а TXTSETUP.SIF он берёт на рамдиске.

[Quote]

    booter
  • 29550
  • Longevity: 24 days
  • Posts: 5
  • REPUTATION:0

    [+] [-]
89939Небольшой багрепорт. При загрузке с рамдиска, SetupLDR из NTplus требует файл TXTSETUP.SIF, хотя в WINNT.SIF ему прямо сказано грузиться с рамдиска, где указанный файл и находится. В загрузчике из Win2k3 SP2 такой беды нет: ему достаточно только WINNT.SIF, а TXTSETUP.SIF он берёт на рамдиске.
Что-то я совсем запутался в своих загрузчиках... У меня их тут уже зоопарк целый.
Поправочка: TXTSETUP.SIF не требует тот SetupLDR, который добыт мной из SmartFix.iso (не знаю, откуда он там взялся), а тот, что из Win2k3 SP2 - требует.

[Quote]

    booter
  • 29550
  • Longevity: 24 days
  • Posts: 5
  • REPUTATION:0

    [+] [-]
89939Если бы всё было так просто, то это бы не была M$.
Вспомнил давно забытую вещь: модулям ядра непозволительно иметь в заголовке неправильную контрольную сумму. Иначе ядро и загрузчик пошлют такой модуль куда подальше. Так что с контрольной суммой я как в воду глядел :)


Display posts:    

Current time is: 09-Dec 03:38

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum