Показать полную графическую версию : [решено] fixmbr, fixboot и bootsect.exe /NT60 (NT52) - чем они отличаются?
firedevil
01-11-2010, 19:15
Возник вот такой вопрос. Есть несколько команд для восстановления загрузщика, а именно fixmbr, fixboot и bootsect.exe /NT60 (NT52). Так вот, чем они отличаются друг от друга, точнее чем отличается последняя команда от двух первых? И еще вопрос, команда fixboot восстанавливает только загрузочный код загрузочного сектора или весь загрузщик полностью (ntldr, boot.ini, ntdetekt.com)?
И еще, в командной строке Vista не распознаются многие команды из командной строки XP. Где найти мануал для командной строки Vista. Поиск не дал результатов.
firedevil, долго бороздил просторы Google, чтобы дать более-менее вразумительный ответ. Сложность заключается в "недоговоренности" о терминологии, особенно при локализации справочной информации.
Для понимания нужно различить понятия Загрузочный сектор — Википедия (http://ru.wikipedia.org/wiki/Загрузочный_сектор) и Главная загрузочная запись — Википедия (http://ru.wikipedia.org/wiki/Главная_загрузочная_запись). Кстати, почитайте статьи по ссылкам.
Очень хорошая статья "Главная Загрузочная Запись - Master Boot Record (MBR)" (http://akina.hop.ru/mbr.php3)
Пересказывать не буду, почитаете. Справочная информация от MS опять же запутывает в терминологии, но, основываясь на полученных ранее знаниях, границу провести все-таки можно: http://support.microsoft.com/kb/314058/ru
И, наконец, прояснение достигается в описании ключей команд bootrec http://support.microsoft.com/kb/927392. Эта ссылка дана исключительно для ознакомления, так как в XP использована быть не может. Но в ней конкретизирована терминология.
Отличие fixboot и fixmbr от bootsect хотя бы в том, что последняя утилита появилась гораздо позднее первых двух. Судя по названию, она ближе по функционалу к fixboot.
Эти команды ни в коем случае не восстанавливают загрузочные файлы XP (или любой другой системы) ntldr, ntdetect.com...
Какие именно команды для Vista вас интересуют? Думаю, нужно конкретизировать вопрос, но не в этом форуме.
firedevil
02-11-2010, 08:20
okshef, я знаю отличие MBR от загрузочного сектора. Но вот не понятно что конкретно восстанавливает bootsect.exe, MBR, загрузочный сектор или и то и другое.
Но если fixmbr, fixboot, bootsect не восстанавливают загрузочные файлы (ntldr, boot.ini, ntdetect.com) то что они восстанавливают, ведь в описании например fixboota написано что оно восстанавливает загрузочный сектор, а в него включаются загрузочный код и загрузочные файлы системы?
firedevil, я знаю, что иногда (чисто практический опыт) применение одной bootsect недостаточно. Срабатывают fixboot + fixmbr. Хотя в справке по bootsect есть описание ключа /mbr, в котором говорится, что при его использовании вся MBR не переписывается, а, следовательно, переписывается только boot-сектор.
fixboota написано что оно восстанавливает загрузочный сектор, а в него включаются загрузочный код и загрузочные файлы системы? »
загрузочный сектор, это и есть загрузочный сектор - это последовательность кода, возможно, assembler-a. Нужен он для того, чтобы указать, какие файлы, находящиеся на жестком диске, нужны для загрузки ОС, причем неважно какой. Например, для XP это файл ntldr, для Win 7/Vista - bootmgr, для других систем - свои, и т.д.
Поэтому выполнение команды не может восстановить загрузочные файлы, на то они и файлы.
firedevil
02-11-2010, 11:16
okshef, Тогда как восстановить загрузочные файлы операционной системы, в случае их повреждения, неужели придется копировать их из установочного диска
firedevil
02-11-2010, 14:27
А вот фукции Восстановления системы, sfc/scannow, восстанавливают поврежденные загрузочные файлы? Ведь последняя функция например, выявляет изменения системных файлов и заменяет их в случае наличия повреждении.
И еще вопрос. Если раздел только один, то загрузочный код MBR как и в случае со множеством разделов передает управление сначала загрузоному сектору, а уже потом загрузочный сектор передает управление ntldr, или загрузочный код MBR передает управление непосредственно ntldr, по причине отсутсвия других разделов?
sfc /scannow "штудирует" папку Windows и не более того. В XP реализован один механизм, в 7/Vista - другой.
И работа утилиты ни коим образом не касается файлов загрузки (как бы это странно не звучало).
На следующий вопрос отвечу чуть позже.
Продолжаем разговор. :) (Карлсон)®
firedevil, прошу прощения за первую редакцию моего сообщения. Да, именно так все и происходит.
Если раздел только один, то загрузочный код MBR как и в случае со множеством разделов передает управление сначала загрузочному сектору, а уже потом загрузочный сектор передает управление ntldr, или загрузочный код MBR передает управление непосредственно ntldr, по причине отсутствия других разделов? »
Вы упустили один момент, что загрузчик сначала определяет активный раздел, а затем ищет на нем загрузочный сектор.
Цитата из Википедии:
Код загрузчика (rem - загрузчик, который мы обозвали BR)
После завершения процедуры POST в ОЗУ по адресу 0x0000:0x7c00 записывается код загрузчика (rem - Вот его-то и правит Fixmbr), после чего ему передается управление. Задача загрузчика: проанализировать таблицу разделов жёсткого диска, а затем либо передать управление загрузочному коду активного раздела (rem - Вот его-то и правит bootsect или fixboot), либо загрузить в память ядро операционной системы и передать ему управление.
Отличие fixboot от bootsect в том, что первая команда безусловно перезаписывает загрузочный код на активный раздел, а вторая обладает более расширенными функциями (см. справку по bootsect /?)
По всей видимости, bootsect еще и способна вносить изменения в код загрузчика, хотя....
За умными словами и множеством ссылок прошу не считать сказанное ранее истиной в последней инстанции, ибо "много в этой истории непонятного"... А также прошу более компетентных людей откликнутся и высказать свое мнение.
Обратился за помощью к Гуру. Вот что еще выяснил.
bootsect /nt....... с ключом /mbr перезаписывает код загрузчика в MBR без затрагивания таблицы разделов, что можно считать более деликатной версией команды fixmbr (bootrec /fixmbr)
firedevil
03-11-2010, 09:10
Вы упустили один момент, что загрузчик сначала определяет активный раздел, а затем ищет на нем загрузочный сектор. »
okshef, ну на самом деле про это я знал просто не стал уточнять, т.к. на суть вопроса это не влияло :)
Вот насчет bootsect есть вопрос. У bootsecta одними из параметров является SYS, All, Or. Насколько я понял первая команда перезаписывает загрузочный сектор на системном разделе, вторая команда для всех разделов, и третья команда позволяет выбирать конкретно на какие разделы записать загрузочный сектор. В связи с этим вопрос, если активный раздел может быть только один, то следовательно и загрузочный сектор создается только для активного раздела, тогда зачем нужен параметр SYS если по умолчанию загрузочный сектор и так утанавливается на системный, он же активный раздел, далее, зачем нужен атрибут All если не имеет смысла записывать загрузочный сектор на все разделы, а только на активный раздел?
Обратимся к "Марксу":
SYS Updates the master boot code on the system partition used to boot Windows.
REM Следовательно, утилита автоматически определяет раздел, помеченный флагом активности, возможно, использует дополнительные признаки. Какие - не знаю.
ALL Updates the master boot code on all partitions. ALL does not necessarily update the boot code for each volume. Instead, this option updates the boot code on volumes that could be used as Windows boot volumes, which excludes any dynamic volumes that are not connected with an underlying disk partition. This restriction is present because boot code must be located at the beginning of a disk partition.
REM Задел на будущее - запись загрузочного сектора на тома, которые могут быть использованы как загрузочные.
<DriveLetter> Updates the master boot code on the volume associated with this drive letter. Boot code will not be updated if either
1) <DriveLetter> is not associated with a volume or
2) <DriveLetter> is associated with a volume not connected to an underlying disk partition.
REM Без комментариев. Из разряда инструкций "В микроволновой печи нельзя сушить домашних животных.
firedevil, наверное, по результатам нашего исследования можно статью написать. Этакая загадка для теоретиков. А судя по отсутствию возражающих, может быть, я прав в своих догадках.
firedevil
03-11-2010, 10:08
SYS Updates the master boot code on the system partition used to boot Windows.
REM Следовательно, утилита автоматически определяет раздел, помеченный флагом активности, возможно, использует дополнительные признаки. Какие - не знаю. »
Но ведь даже если не указать параметр SYS утилита по любому автоматически определит активный раздел
ALL Updates the master boot code on all partitions. ALL does not necessarily update the boot code for each volume. Instead, this option updates the boot code on volumes that could be used as Windows boot volumes, which excludes any dynamic volumes that are not connected with an underlying disk partition. This restriction is present because boot code must be located at the beginning of a disk partition.
REM Задел на будущее - запись загрузочного сектора на тома, которые могут быть использованы как загрузочные. »
В этом опять нет смысла. Насколько я понял загрузочный сектор из не активного раздела не может запустить загрущик операционной системы который находиться на активном разделе. Тем более на активном разделе есть свой загрузочный сектор который запускает систему.
Насчет командной строки Vista. Где можно найти описание параметров команд move и xcopy?
Давайте посмотрим на синтаксис
bootsect {/help|/nt60|/nt52} {SYS|ALL|<DriveLetter>:} [/force] [/mbr]
параметр в {фигурных скобках} - обязателен, то есть, если не указать параметр SYS, утилита вернет ошибку.В этом опять нет смысла. »
Возрожу: Как перенести файлы загрузки Windows 7 на другой жесткий диск (http://www.oszone.net/10752/move_Windows7_boot_files)
firedevil, +1 за то, что статью нужно дополнить.
А нет, не забыл: Перенесение файлов загрузки с помощью утилиты bcdboot.exe (http://www.oszone.net/10752/move_Windows7_boot_files#bcdboot) - пункт 2. Эх, терминология...
Насчет командной строки Vista »
Давайте не будем мешать все в одну кучу, тем более прикрепленная тема этого раздела На заметку. Перечень системных команд. (http://forum.oszone.net/thread-109006.html)
firedevil
03-11-2010, 14:28
okshef, что означает параметр forсe в команде bootsect?
Отличие между bootsect от fixmbr, fixboot насколько я понял выражается в том что bootsect создавался как способ решения проблем возникающие в системах с двумя OS. То есть, bootsect отличается от fixmbr, fixboot тем что может восстанавливать загрузочные сектора как Vista, так и XP.
firedevil, насчет /force, это вы бы и сами могли...
/force Forcibly dismounts the volume(s) during the boot code update. You should use this option with caution.
Иными словами, тома отмонтируются во время выполнения команды (механизм отмонтирования точно мне неизвестен, но, как один из способов: сначала удалить букву тома, а затем заново присвоить)
То есть, bootsect отличается от fixmbr, fixboot тем что может восстанавливать загрузочные сектора как Vista, так и XP. »
Скорее всего, так оно и есть. Для XP свои fixboot и fixmbr, для Vista - свои. А тут - все "в одном флаконе".
firedevil
03-11-2010, 21:25
okshef, в статье про перенос загрузочных файлов Windows 7 в другой раздел, в качестве способа переноса используется командная строка. Так вот, не проще ли использовать для этих целей Live CD Ubuntu например, т.е. просто перетащить загрузочные файлы из одного раздела в другой?
Нет. Даже если само по себе перемещение состоится удачно, параметры будут неверны. Задача статьи - все сделать средствами Windows без дополнительных средств.
firedevil
05-11-2010, 12:13
Какие именно параметры будут неверны, речь идет о BCD?
firedevil
08-11-2010, 10:54
okshef, в некотрых статьях пишут что команда fixmbr, восстанавливает главную загрузочную запись на системном разделе, и тут возник вопрос, а разве MBR находиться на разделе, ведь он должен находиться в начале диска, вне разделов?
Второй вопрос, в мануалах также указывается о том что MBR должен быть совместим с операционной системой на активном разделе. Может здесь какая то ошибка, может имелось ввиду совместимость загрузочного сектора с устанавливаемой системой? Насколько я понял MBR универсален, и не имеет значения какая операционая система установлена, или я ошибаюсь?
firedevil, это то, о чем я говорил в самом начале - недоговоренность в понятиях и особенности локализации.а разве MBR находиться на разделе, ведь он должен находиться в начале диска, вне разделов? »
так и есть: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/bootcons_fixmbr.mspx?mfr=true
Repairs the master boot record of the boot disk.
ни о каких разделах и речь не идет, в отличие от
Fixboot
Writes a new partition boot sector to the system partition.
boot disk - имеется в виду физическое устройство, HDD, который является загрузочным.
Проверяется элементарно: в ком строке
diskpart
sel disk X
detail disk
system partition - активный раздел диска, на котором находятся файлы загрузки всех установленных систем.
MBR универсален »
почему? Разве загрузочный код не имеет права на совершенствование? У меня нет достаточной компетенции, да и желания, честно говоря, самому разбираться в хитростях ассемблера.
Можете сами поискать информацию о разнице загрузочного кода XP, 7 и Ubuntu, например. Но, думаю, вы ближе к истине, чем кажется - загрузка системы, в большинстве своем, BIOS-зависимая, а значит, и код должен быть понятен BIOS, в первую очередь.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.