NTDETECT.COM , необходимый для загрузки ОС на базе NT, определяет основную информацию об оборудовании, необходимую для успешной загрузки
Дополнительным важным файлом является boot.ini , который содержит конфигурацию загрузки (если она отсутствует, NTLDR по умолчанию будет использовать \Windows на первом разделе первого жесткого диска).
NTLDR запускается загрузочной записью тома системного раздела, которая обычно записывается на диск с помощью команды Windows FORMAT или SYS .
История
Windows NT изначально была разработана для ARC -совместимых платформ, полагаясь на поддержку своего менеджера загрузки и предоставляя только osloader.exe , программу загрузки, принимающую обычные аргументы командной строки, указывающие раздел каталога Windows, местоположение или параметры загрузки, которая запускается ARC-совместимым менеджером загрузки, когда пользователь выбирает запуск определенной операционной системы Windows NT. Однако, поскольку x86 не поддерживал ARC, был добавлен дополнительный уровень специально для этой платформы: пользовательский код менеджера загрузки, представляющий текстовое меню, позволяющее пользователю выбирать одну или несколько операционных систем и ее параметры, настроенные в файле конфигурации boot.ini , предваренном специальным модулем StartUp, который отвечает за некоторые приготовления, такие как переключение ЦП в защищенный режим. Когда пользователь выбирает операционную систему из меню загрузки, следующие аргументы командной строки затем передаются в часть osloader.exe, общую для всех архитектур процессоров:
В выпусках Windows, начиная с Windows Vista и Windows Server 2008 , NTLDR был разделен обратно на диспетчер загрузки и части загрузчика системы: диспетчер загрузки Windows и winload.exe . Часть диспетчера загрузки была полностью переписана; она больше не использует boot.ini в качестве файла конфигурации, хотя утилита bootcfg для изменения boot.ini все еще присутствует для случая многозагрузочных конфигураций с версиями Windows до Windows XP и Windows Server 2003 .
Интерфейс командной строки
Утилиту bootsect.exe в инструментах Windows PE можно использовать с параметрами /nt52 (NTLDR) и /nt60 (Vista и выше) для сохранения загрузочной записи NTLDR или Vista в первом секторе указанного раздела. [1] Эту команду можно использовать для файловых систем на базе FAT и NTFS . Она заменяет инструменты FixFAT и FixNTFS. [2]
Пример
В следующем примере применяется совместимый с NTLDR главный загрузочный код к тому D:: [2]
C:\> bootsect /nt52 D:
Процесс запуска
Когда ПК включен, его BIOS следует настроенному порядку загрузки для поиска загрузочного устройства. Это может быть жесткий диск, дискета, CD/DVD, сетевое соединение, USB-устройство и т. д. в зависимости от BIOS. В случае дискеты BIOS интерпретирует ее загрузочный сектор (первый сектор) как код, для NTLDR это может быть загрузочный сектор NTLDR, ищущий файл ntldrна дискете. Для жесткого диска код в главной загрузочной записи (первый сектор) определяет активный раздел. Код в загрузочном секторе активного раздела затем может снова быть загрузочным сектором NTLDR, ищущим ntldrв корневом каталоге этого активного раздела. В более запутанном сценарии активный раздел может содержать загрузочный сектор Vista для нового менеджера загрузки Vista с записью {ntldr}, указывающей на другой раздел с загрузочным сектором NTLDR. [3]
При загрузке загрузочная часть NTLDR выполняет следующие действия в следующем порядке:
Получает доступ к файловой системе на загрузочном диске ( FAT или NTFS ).
Если Windows была переведена в режим гибернации, содержимое hiberfil.sys загружается в память, и система возобновляет работу с того места, на котором остановилась.
В противном случае считывает boot.ini и предлагает пользователю соответствующее меню загрузки.
Если выбрана ОС, не основанная на NT, NTLDR загружает связанный файл, указанный в boot.ini ( bootsect.dos , если файл не указан или если пользователь загружает ОС на основе DOS), и передает ему управление.
Если выбрана ОС на базе NT, NTLDR запускает ntdetect.com , который собирает информацию об оборудовании компьютера. (Если ntdetect.com зависает во время обнаружения оборудования, существует отладочная версия под названием ntdetect.chk , которую можно найти на сайте поддержки Microsoft. [4] )
Запускает ntoskrnl.exe , передавая ему информацию, возвращаемую ntdetect.com . [5]
boot.ini
Первое действие NTLDR — чтение файла boot.ini . [6] NTLDR позволяет пользователю выбрать операционную систему для загрузки в меню. Для NT и операционных систем на базе NT он также позволяет пользователю передавать предварительно настроенные параметры ядру. Параметры меню хранятся в boot.ini , который сам по себе находится в корне того же диска, что и NTLDR. Хотя NTLDR может загружать DOS и не-NT версии Windows, boot.ini не может настраивать их параметры загрузки.
Для ОС на базе NT местоположение операционной системы записывается как путь Advanced RISC Computing (ARC).
boot.ini защищен от пользовательской конфигурации следующими атрибутами файла : системный, скрытый, только для чтения. Чтобы вручную отредактировать его, пользователю сначала придется удалить эти атрибуты. Более безопасный способ редактирования файла — использовать команду bootcfg из консоли. bootcfg также повторно заблокирует файл (установив файл обратно в системный, скрытый и только для чтения). Кроме того, файл можно редактировать в Windows с помощью текстового редактора, если выбран параметр просмотра папок «Показывать скрытые файлы и папки», параметр просмотра папок «Скрывать защищенные файлы операционной системы» не отмечен, а параметр «Только для чтения» не отмечен в свойствах файла.
bootsect.dos — загрузочный сектор, загружаемый NTLDR для загрузки DOS или, если файл не указан, при загрузке ОС, не основанной на NT.
Пример
Пример файла boot.ini :
[загрузчик] тайм-аут = 40 по умолчанию = multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [операционные системы] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS = "Microsoft Windows XP Professional" /fastdetect
Если параметр тайм-аута загрузчика в boot.ini установлен на 0, меню загрузки NTLDR не отображается. При изменении загрузчика следует проявлять крайнюю осторожность, поскольку ошибочная информация может привести к тому, что ОС не загрузится.
Переключатели ядра NT
/3GB – заставляетсистемы на базе x86 увеличить виртуальное адресное пространство, выделенное для пользовательских программ, до 3 ГБ и уменьшить до 1 ГБ, выделенное для ядра и исполнительных компонентов. Используется для некоторых программ, которым требуется больше, чем стандартные 2 ГБ, выделенные для пользовательских программ, и 2 ГБ, выделенные для системы. Некоторые конфигурации Windows Server 2003 , которые запускают приложения, интенсивно использующие виртуальную память, такие как серверы баз данных или Microsoft Exchange Server 2003, могут потребовать этот переключатель [7] или могут выиграть от повышения производительности. [8] Активация этого параметра может привести к поломке видео VMR-9. [9] Активация этого параметра также может вызвать проблемы со звуком на звуковых картах серии Creative SB X-Fi с (X-Fi Gamer / X-Fi Titanium @ WINXP 32-bit 3/2012). Эти проблемы могут быть связаны с тем, как драйверы Creatives обрабатывают память свыше 2 ГБ.
/BASEVIDEO – принудительно переводит систему в стандартный режим VGA 640 × 480 16 цветовс помощью драйвера видеоустройства , совместимого с любым видеоадаптером . Если операционная система не загружается из-за неисправного или неправильно настроенного видеодрайвера, этот переключатель позволяет системе загрузиться, поэтому пользователь может удалить, обновить или откатить видеодрайвер, вызывающий проблему. Использование этого переключателя в сочетании с переключателем /SOS помогает определить драйвер, который вызывает сбой. [7]
/BAUDRATE= nnn – Устанавливает скорость передачи данных порта отладки, используемого для отладки ядра. Использование этого переключателя автоматически включает переключатель /DEBUG . [7] Указывает переопределение скорости передачи данных по умолчанию (19200), с которой будет подключаться удаленный хост отладчика ядра. [8] Пример: /BAUDRATE=115200 .
/BOOTLOG – Включает ведение журнала загрузки в файле с именем %SystemRoot% \Ntbtlog.txt . [7]
/BOOTLOGO – отображает альтернативный пользовательский битовый образ 640 × 480 16 цветов . Битовый образ должен быть сохранен в каталоге \Windows под именем boot.bmp . Используйте с ключом /NOGUIBOOT . [8]
/BURNMEMORY= nnn – Указывает объем памяти в мегабайтах, который Windows не может использовать. Используйте этот параметр для подтверждения проблемы производительности или других проблем, связанных с истощением оперативной памяти . [7]
/CHANNEL= nn – используется с переключателями /DEBUG и /DEBUGPORT=1394 для выбора канала интерфейса IEEE 1394 (с номером от 0 до 62), через который будут проходить сообщения отладки ядра. [7]
/CRASHDEBUG – Загружает отладчик ядра при запуске ОС, но он остается неактивным до тех пор, пока не произойдет ошибка Stop . С помощью этого переключателя COM-порт может использоваться для обычных операций во время работы Windows. Если Windows выходит из строя, переключатель преобразует порт в порт отладки. (Это действие включает удаленную отладку.) [7]
/DEBUG – Включает отладчик ядра при запуске Windows. В отличие от переключателя /CRASHDEBUG , /DEBUG использует COM-порт независимо от того, используете ли вы отладку или нет. [7]
/DEBUGPORT=com x – Указывает COM-порт для использования в качестве порта отладки. По умолчанию /DEBUGPORT использует COM2, если он существует. В противном случае по умолчанию используется COM1. Использование этого переключателя автоматически включает переключатель /DEBUG . [7]
/FASTDETECT[:com x [,com y ]] – Отключает обнаружение последовательной и шинной мыши для указанных портов или для всех портов, если ни один из них не указан. Используйте этот переключатель, если во время процесса запуска к последовательному порту подключен компонент, отличный от мыши. Порты можно разделять запятыми, чтобы отключить более одного порта. (Примечание: в более ранних версиях Windows, включая Windows NT 4.0 , этот переключатель назывался /NOSERIALMICE .) [7]
/HAL= имя_файла – определяет уровень абстракции оборудования , который загружается при запуске. Этот переключатель полезен для того, чтобы попробовать другой HAL перед тем, как переименовать файл в HAL.DLL . Этот переключатель также полезен, когда вы хотите попробовать переключиться между запуском в многопроцессорном режиме и запуском в однопроцессорном режиме. Для этого используйте этот переключатель с переключателем /KERNEL . имя_файла должно находиться в каталоге System32. Это может быть простой файл, жесткая ссылка, но не символическая ссылка или точка соединения. [7]
/KERNEL= имя_файла – Определяет ядро, загружаемое при запуске. С помощью этого переключателя пользователь может переключаться между ядром с включенной отладкой, которое полно отладочного кода, и обычным ядром. Те же ограничения для расположения и типа имени файла , что и для переключателя /HAL. [7]
/MAXMEM= nnn – Указывает максимальный объем оперативной памяти в мегабайтах, который может использовать Windows. [7] Однако параметр /MAXMEM не учитывает дыры в памяти. Поэтому вместо него рекомендуется использовать параметр /BURNMEMORY . [10]
/MININT – этот параметр используется средой предустановки Windows (WinPE) и загружает куст реестра SYSTEM как энергозависимый, так что изменения, внесенные в него в памяти, не сохраняются обратно в образ куста. [8]
/NODEBUG – Отключает отладку. Этот сценарий может вызвать Stop Error , если в программе есть жестко запрограммированная точка останова отладки в ее программном обеспечении. [7]
/NOEXECUTE={OPTIN|OPTOUT|ALWAYSON|ALWAYSOFF } — эта опция доступна только в 32-разрядных версиях Windows при работе на процессорах, поддерживающих предотвращение выполнения данных (DEP). Она включает DEP, в результате чего диспетчер памяти помечает страницы, содержащие данные, как неисполняемые, чтобы их нельзя было выполнить как код. Это может быть полезно для предотвращения использования вредоносным кодом ошибок переполнения буфера с неожиданным вводом программы для выполнения произвольного кода. Защита от неисполнения всегда включена в 64-разрядных версиях Windows на процессорах, поддерживающих защиту от неисполнения.С помощью этого переключателя пользователь может указать несколько параметров: [8]
/NOEXECUTE=OPTIN – включает DEP для основных образов системы и тех, которые указаны в диалоговом окне конфигурации DEP.
/NOEXECUTE=OPTOUT – включает DEP для всех образов, за исключением указанных в диалоговом окне конфигурации DEP.
/NOEXECUTE=ALWAYSON – Включает DEP для всех образов.
/NOEXECUTE=ALWAYSOFF – Отключает DEP.
/NOGUIBOOT – Отображает имена драйверов устройств во время их загрузки. Используйте с ключом /BASEVIDEO для определения драйвера, который вызывает сбой. [7]
/NOPAE – заставляет Ntldr загружать версию ядра Windows без расширения физического адреса (PAE), даже если система определена как поддерживающая x86 PAE и имеет более 4 ГБ физической памяти. [8]
/NOSERIALMICE[=com x ] – (Устарело во всех версиях после Windows NT 4.0 ) Заменено отсутствием ключа /FASTDETECT . Отключает последовательное обнаружение мыши на указанных COM-портах. Использование /NOSERIALMICE без указания COM-порта отключает последовательное обнаружение мыши на всех COM-портах. [8]
/NUMPROC= nnn – Устанавливает количество процессоров , которые Windows будет запускать при запуске. С помощью этого переключателя пользователь может заставить многопроцессорную систему использовать только указанное вами количество процессоров (число). Полезно для устранения неполадок производительности и неисправных ЦП. [7]
/ONECPU – эквивалентно использованию /NUMPROC=1 . Заставляет Windows использовать только один ЦП в многопроцессорной системе. [8]
/SAFEBOOT:{MINIMAL|NETWORK|DSREPAIR}[(ALTERNATESHELL)] — запускает Windows в безопасном режиме . Необходимо включить двоеточие и один из трех типов, перечисленных выше. Дополнительный параметр, которыйможет добавить пользователь , — это (ALTERNATESHELL) , который сообщает Windows использовать программу, указанную значением HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\AlternateShell, в качестве графической оболочки, а не использовать значение по умолчанию, которым является Windows Explorer. [8] Пользователь также может комбинировать другие параметры boot.ini с /SAFEBOOT: type . Следующие примеры иллюстрируют параметры, которые действуют при выборе параметра безопасного режима в меню восстановления при загрузке. (Примечание: переключатели /SOS , /BOOTLOG и /NOGUIBOOT не требуются ни с одной из этих настроек, но переключатели могут помочь при устранении неполадок.) [7]
Безопасный режим ( /SAFEBOOT:MINIMAL /SOS /BOOTLOG /NOGUIBOOT ) – По умолчанию: использует минимальный набор драйверов устройств и служб для запуска Windows. [11]
Безопасный режим с загрузкой сетевых драйверов ( /SAFEBOOT:NETWORK /SOS /BOOTLOG /NOGUIBOOT ) – режим по умолчанию вместе с драйверами, необходимыми для загрузки сетевых драйверов. [11]
Безопасный режим с поддержкой командной строки ( /SAFEBOOT:MINIMAL(ALTERNATESHELL) /SOS /BOOTLOG /NOGUIBOOT ) — режим по умолчанию, за исключением того, что вместо проводника Windows запускается Cmd.exe . [11]
Windows в режиме восстановления служб каталогов ( /SAFEBOOT:DSREPAIR /SOS ) – (Этот режим действителен только для контроллеров домена на базе Windows.) Выполняет восстановление службы каталогов. [11]
/SOS – отключает графический экран загрузки и использует текстовую загрузку в стиле NT4, отображая номер сборки Windows, номер версии и т. д. В Windows 2000 и XP текст отображается внутри битовой карты CHKDSK (и с индикатором выполнения в 2000).
/USEPMTIMER – указывает, что Windows использует настройки таймера Power Management Timer (PM_TIMER) вместо настроек таймера Time Stamp Counter (TSC), если процессор поддерживает настройки PM_TIMER. [7] По умолчанию Windows Server 2003 Service Pack 2 (SP2) использует таймер PM для всех многопроцессорных APIC или ACPI HAL . Если вы не используете Windows Server 2003 SP2, вы должны принудительно использовать таймер PM с помощью переключателя /USEPMTIMER . [12]
/USERVA= nnn – Настраивает объем памяти в мегабайтах, выделяемой процессам при использовании переключателя /3GB . Этот переключатель позволяет увеличить память ядра для записи таблицы страниц , но при этом сохраняет почти 3 ГБ пространства памяти процесса. [11]
/WIN95 – указывает Ntldr загрузить загрузочный сектор Windows, хранящийся в bootsect.w40 . [8]
/WIN95DOS – указывает Ntldr загрузить загрузочный сектор MS-DOS, хранящийся в bootsect.dos . [8]
/YEAR= yyyy – указывает основной функции времени Windows игнорировать год, который сообщают часы реального времени компьютера, и вместо этого использовать указанный год. Пример: /YEAR=2001 . (Этот переключатель был создан для помощи втестировании Y2K .) [8]
^ "Параметры командной строки Bootsect". Windows Vista: Технический справочник . Microsoft Technet. 2009. Получено 03.07.2011 .
^ ab "Команда bootsect для командной строки MS-DOS и Windows".
^ "Boot Configuration Data Editor Frequently Asked Questions". Windows Server . Microsoft Learn . 2007 . Получено 2024-01-04 .
^ "Ntdetect.com (Installd.cmd)". Microsoft . Архивировано из оригинала 2006-02-06.
^ Microsoft (2000). Windows 2000 Professional Resource Kit (1-е изд.). Редмонд, Вашингтон: Microsoft Press. ISBN1-57231-808-2.
^ Рик Мейбери (2009). "Проблемы запуска и завершения работы, часть 1". Bootcamp . Архивировано из оригинала 2012-07-11 . Получено 25 апреля 2012 .{{cite web}}: CS1 maint: неподходящий URL ( ссылка )
^ abcdefghijklmnopqrstu Microsoft (28 ноября 2007 г.). "Доступные параметры переключения для файлов Boot.ini Windows XP и Windows Server 2003" . Получено 4 января 2024 г. .
^ abcdefghijkl Руссинович, Марк (1 ноября 2006 г.). "Boot INI Options Reference". Microsoft Learn . Microsoft . Получено 4 января 2023 г. .
^ "Потеря DirectDraw Overlay и VMR9 после обновления/обновления". Форум VideoHelp . Июль 2008 г.
^ abcde "Описание параметров загрузки в безопасном режиме в Windows XP". Поддержка Microsoft . Архивировано из оригинала 2015-02-19.
^ «Программы, использующие функцию QueryPerformanceCounter, могут работать неэффективно». Служба поддержки Microsoft . 23 февраля 2023 г.
Внешние ссылки
Как редактировать файл Boot.ini в Windows XP
Соглашения об именовании путей BOOT.INI и ARC и их использование
Справка базы знаний MS по сообщению об ошибке «NTLDR Is Missing» в Windows 2000 и Windows XP (также [1], [2], [3] Архивировано 16 июля 2007 г. на Wayback Machine , [4])