Всё о MBR, Boot-Record, Геометрии дисков (флешек)
Так уж исторически сложилось, что после покупки флеш-брелков они форматируются как FDD, тобишь большая дискета. Ну и стандартные процедуры форматирования (по крайней мере та же WinXP) делают тоже самое, считают устройство дискетой и форматируют как дискету. Это важно! По сравнению с HDD дискета НЕ ИМЕЕТ MBR, таблицы разделов, а по первому сектору находится Boot-Record. Соответственно загрузиться с такого устройства можно ТОЛЬКО в режиме эмуляции FDD и все, других вариантов нет. А чтобы получить загрузочное устройство - нужно просистемить (вписать Boot-Record) дискету, т.е. загрузчик помещается в первый сектор. Т.к. вам в большинстве случаев усиленно хочется установить grub4dos в MBR, то все очень просто - нет MBR, нет конфетки. Т.е. фигушки. Такое грузиться не будет ни при каких обстоятельствах. При необходимости получить именно загрузочную USB-дискету - вписывать загрузчик нужно в Boot-Record!!! И только в него. Но это не все, нужно будет также поправить grldr (HEX-edit'ором) или пересборкой grldr из исходников, с целью исключить из встроенного меню строку игнорирования поиска menu.lst с дискет. Прочитать вышенаписанное 100 раз и осознать раз и навсегда. После осознания приходит логический вывод, лучше использовать режим эмуляции HDD, на котором я более подробно и остановлюсь. Для начал читать тут: Главная загрузочная запись MBR под микроскопом Master Boot Record (MBR) Традиционная логическая структура жёсткого диска Логическая структура жесткого диска Если осилили, то значит уже сделан большой шаг))). Как вы (я надеюсь) уяснили структуры организации FDD и HDD существенно отличаются и следовательно нет какого-либо иного способа получить USB-HDD, кроме как воссоздать структуру HDD на флешке. Вот тут и начинается самое интересное. Заботясь о том, что пользователи бараны и не знают о том чего они хотят, Microsoft позаботилась о том, чтобы вы не смогли создать HDD-организацию данных, если устройство видимое Windows считается флопиком. Какой можно найти выход из сложившейся ситуации? 1. Сказать операционке, что она работает с HDD и нивалнует))) Hitachi Microdrive После чего можно обычными методами бить флешку на разделы, форматировать и все будет хорошо. 2. Создать структуру через сторонние программы, которым пофигу то, что думает по поводу типа носителя Windows HP USB Disk Storage Format Tool (HPUSBFW_Special) Но другой вопрос насколько верно подобные утилиты воссоздают структуру и геометрию диска. 3. Сделать все ручками. Описывать не буду, слишком многа букаф. Исходя из того, что структура размещения служебных данных меняется - нет безболезненного способа смены вида носителя HDD<->FDD без потери данных, т.к. многое нужно пересчитывать. Теоретически такую программу сделать можно, но нафиг никому (из тех кто знает как) не нужно. Вот тут встает еще один интересный вопрос: А чем поглядеть - правильно ли созданна структура служебных областей? Есть ли MBR? Что с Boot-Record? Как поживает Partition Table и все ли нормально с геометрией? Вот вам ряд программ (ссылки давать не буду, искать лениво, гугл вам в помощь): 1. Acronis Disk Director 2. Paragon Partition Manager 3. WinHEX 4. Да в принципе что угодно, что позволит как минимум поглядеть в HEX-виде различные сектора диска, а в иделе сможет показать дешифрованную информацию, т.к. читать HEX-коды можно, но неудобно. Итого, только в том случае, если вы знаете, что флешка со структурой данных HDD-типа, имеет смысл устанавливать grub4dos в MBR!!! Ну где должен жить MBR вы уже в курсе? В первом секторе))), там где на FDD вместо этого живет Boot-Record. Интересуют именно 512 байт. Если представляете что и как - достаточно одного взгляда, чтобы точно и определенно сказать (поглядев в HEX-код) MBR перед вами или BR (Boot-Record). Кстати, таблица разделов живет в тех же 512 байтах, т.е. настоятельно не рекомендую ручками переносить этот сектор с другого винчестера))). Править таблицу в таких случаях надо. Акронисы и некоторые другие программы умеют сами пересчитывать таблицу размещения, так что пользуйтесь ими. На всякий случай, в очередной раз: прописать стандартную MBR можно: 1. Через консоль восстановления (fixmbr) 2. Из под Win98/Dos (fdisk /mbr) 3. Сторонними программами 4. Из предварительно созданной копии (тупо скопировать 512 байт в первый сектор) 5. Из любого другого MBR (но потом поправить Partition Table) При этом предпочтение нужно отдавать более новым версиям MBR (Master Boot Record - тока щаз догадался, что до сих пор не расшифровал), т.к. они местами отличаются... Назначение стандартного MBR достаточно простое - предварительная загрузка, определение активного раздела, передача управления на Boot-Record активного раздела. Нестандартные MBR могут делать свои действия, и нестандартных MBR много))), практически все загрузчики пишутся в MBR перенакрывая стандартную функциональность и расширяя ее своей (grub4dos не исключение) Но тут есть еще ряд проблем: 1. А фиг его знает как и что BIOS читает с MBR при старте с устройства или же BIOS может быть "заточен" под стандартный MBR и ниче другое (т.е. могут быть проблемы) 2. Тупо могут быть ошибки в коде нестандартного MBR (grub4dos тоже этим грешит, ошибки правятся, и не факт, что их сейчас нет или не появятся новые) 3. Пресловутая геометрия, о которой будет чуть ниже (и позже). Достоинства помещения grub4dos или иного загрузчика в MBR - в большинстве случаев не нужен Boot-Record, т.е. он может быть поврежден или отсутствовать, при этом загрузчик сможет все равно работать (как пример: chainloder /ntldr - загрузка непосредственно лоадера { да, да... это тоже загрузчик))) } ntldr минуя Boot-Record) Ну и еще одно достоинство - вроде как просто все это... и достаточно хорошо документировано. Далее по программе непонятное слово "геометрия" применительно к дискам (флешкам). Перечитать еще раз (а лучше несколько раз) Главная Загрузочная Запись - Master Boot Record (MBR) Когда компьютеры были маленькими, а о законе Мура особенно никто не задумывался, тогда была CHS))), и хотя щаз LBA, но наследие прошлого осталось. Кстати, человеку свойственно на одни и теже грабли наступать неоднократно, вот тому подтверждение: LBA-48 Короче говоря, так уж исторически сложилось, что некоторые вещи поменять нельзя, и хоть есть более логичные и казалось бы очевидные способы адресации все до сих пор завязано на CHS (Cylinder-Head-Sector), т.е. цилиндр, головка, сектор. И даже не думайте искать на флешке цилиндры с головками. Биосу побарабану, они должны быть и они есть))). Теперь вернемся к флешкам. Дело в том, что количество ячеек памяти на флеш-памяти конечно и дешифратор работает тоже с определенным набором адресов (ну с поправкой на блочный принцип доступа). Про трансляции рассказывать не хочу, да и это не важно. Просто уясните один факт: в MBR все в CHS, с учетом LBA-адресации и цифери должны быть там правильные, т.к. при попытке доступа за пределы флешки - ничего хорошего из этого не получится. Более того, правильная геометрия нужна: для старта некоторых операционных систем, для правильной работы загрузчиков и менеджеров, для корректной работы программ модифицирующих ФС и разделы. Но в тоже время, некорректная геометрия не обязательно приведет к тому что у вас не будет грузиться что-либо))). Тут все зависит от того как повезет, как BIOS отработает и какую операционку вы стартануть пытаетесь. Отчего возникают проблемы с геометрией? Дык напомню, изначально имелась флешка размеченная как флопик, а вы пытаетесь сделать из нее HDD (где как минимум есть смещение на границу головки для выравнивания, согласно некоторых стандартов, для примера 63 сектора [хотя не факт, может меняться]). Ну и далее вся пляска начинается от объема флешки, где высчитывается количество получаемых секторов, и расчитываются границы раздела. Дык вот, после пересчета некоторыми программами (аля форматерами) вполне может получится что значения CHS "вылазят" за пределы флешки или наоборот не дотягивают до конца, и как итог: получаем CHS<>LBA разной степени тяжести. А они должны быть равны. Что тут можно сделать? 1. Вручную пересчитать))) размер раздела и скорректировать таблицу так, чтобы все совпадало. Тяжело, но можно. Формулы пересчета глядеть по ссылке выше. 2. Воспользоваться чем-нить, что сделает расчеты для вас))). Ну как пример я знаю Partition Magic (есть на том же Хирене). Т.е. алгоритм действий (дубово простой, но рабочий): а) Сначала уменьшаем последний (или единственный раздел) в каком-нить Акронисе или Парагоне б) Загружаем Parition Magic и в нем расширяем до конца диска Если не сделать шаг a) то Parition Magic при старте скорее всего ругнется на левую геометрию и попробует ее починить))). Иногда он чинит насмерть :). Если же вы подсунете уменьшенный раздел, то ругаться не должен, а растянет его корректно. Да, кстати, про LARGE-адресацию забудьте. Это был неудачный мутант, которого сейчас найти проблематично. И напоследок, в grub4dos последних версий появились дополнительные параметры к команде geometry --tyne --sync (рекомендую ознакомиться). И как итог: надеюсь после прочтения этой части вы точно можете сказать что у вас все впорядке с геометрией??? Таааак... Ну будем считать что на данном этапе у вас диск с правильной HDD-структурой и правильной геометрией диска. Далее размышлизмы по поводу загрузчиков... Как уже писалось выше grub4dos в MBR может давать весьма странные эффекты на некоторых компьютерах (ошибки BIOS, ошибки grub4dos, ошибки User'а), посему моя личная рекомендация: оставьте MBR родным!!! Нефиг там делать grub4dos. Но всеже перечислю варианты их плюсы и минусы: 1. grub4dos в MBR. "+" - относительная простота установки, практически все утилиты пытаются его именно туда запхать, исключены промежуточные этапы в загрузке, т.е. Boot-Record раздела в принципе не нужен; "-" - возможны проблеммы с совместимостью на материнках с кривым биосом. 2. Стандартный MBR и grub4dos в Boot-Record. "+" - гораздо бОльшая совместимость с оборудованием, "-" - более тяжело его туда вписать, необходимость контроля того чтобы загрузчик находился в активном разделе (критично если на флешке несколько разделов), выполняется двухэтапная загрузка MBR->Boot-Record. 3. Стандартный MBR и стандартный Boot-Record. "+" и "-" практически все относящееся к пункту 2. Единственное, что grub4dos еще дополнительно нужно прописывать в boot.ini (плюс нужен ntldr в корне флешки) если загрузочный сектор у вас от NT, если от Win9x/Dos то лучше не морочить голову и вписать от NT ))) 4. Стандартный MBR и патченый стандартный Boot-Record от NT. Все то что для пункта 3, только можно обойтись без ntldr и boot.ini (патчится сектор на предмет замены ntldr на grldr), уточню, что просто переименовывать файл grldr в ntldr с неизменным загрузочным сектором не желательно. Может глючить. 5. Извращения типа Plop в MBR -> Grub4dos в Boot-Record и еще какая-нить хрень прикручена... (рассматривать извращения не буду: многабукаф,глюкаф и прочих особенностей). Я просто не в состоянии расмотреть все комбинации установки и предугадать все нюансы ваших действий, поэтому следующая часть в картинках будет о том, как сделать работающую флешку по наиболее рабочему (на мой взгляд) методу используя то что есть под рукой (для того чтобы можно было показать в картинках). Комментарии к картинкам))) : 1. Измывательства над флешкой начнем с того, что нафиг грохнем первые 128 секторов флешки (взято отболды, с запасом)
2. Совершенно нормально, что сейчас флешка не считается чем-то удобоворимым для операционки
3. Отформатируем ее стандартными средствами (шоб поглядеть что из этого получится)
4. Доформатировалась, щаз пустая.
5. Вот этот скрин интересен, обратите внимание на сектор 1 - MBR нифига там нету, и хотя в свойствах стиля раздела написано, что-то про MBR, но на практике в HEX-эдиторе видно, что это наглая ложь и провокация. Вот какую ерундень мы получим, если будем пытаться форматировать стандартными методами.
6. Акронис не хотит работать с FDD, он просто не показывает их как устройства для работы... Парагон в этом смысле более непревередливый. Плевать он хотел на тип устройства и флешка в нем отображается. Здесь я и подчищу сектор 1, чтобы видеть что в него будет вписано. Внимание!!! После любых модификаций MBR или Boot-Record флешку обязательно "передернуть", т.е. отключить и потом подключить. Иначе механизм кеширования сыграет с вами неинтересную шутку и вы будете долго ломать голову - че происходит и почему что-то куда-то не пишется...
После передергивания флешки (напомню 1 сектор забит нулями) она уже не FDD, а просто неразмеченное блочное устройство, которое прекрасно разбивается на разделы и форматируется как HDD.
После форматирования (и "передергивания") акронис опознал флешу))) и уже соглашается с ней работать, собственно вы перед собой видите MBR, опознать сможете по характерным строкам.
В Boot-Record (CHS=0,1,1=63 сектор) какая-то фигня от Парагона))), возможно даже рабочая (не проверял).
Поскольку я не уверен в корректности MBR и Boot-Record, то поступаю очень просто: 1. Гружу консоль восстановления (если кто не в курсе ее можно установить на винчестер с помощью команды "путь к инсталлу winXP\I386\WINNT32.EXE /cmdcons") 2. fixmbr флешка (например fixmbr f:) 3. fixboot флешка (например fixboot f:) Все, после этих действий я уверен, что имею стандартные MBR и Boot-Record. Как вы можете заметить - перезаписываетя не весь сектор))), маркеры остались от Парагона (ну и фиг с ними, потом на свои исправлю)
Как исправляются маркер и label раздела вы видите:
А вот тут (от нефиг делать я попробую новую утилю, которую до этого ниразу не тестировал, а заодно погляжу че она делает, т.е. совмещаю приятное с полезным) Grub4DOS Toolbox for Windows, GUI installer for grub4dos Собственно, как вы можете видеть я щаз поставлю grub4dos в BR раздела, а MBR оставлю стандартным.
Ну вброшу на флешку эмулятор и загрузчик grldr, а заодно (как описывал в теоретической части) поставлю активность на раздел
Окончательная доводка (всеже меняю маркеры), а то в прошлый раз отмену нажал))). Ну и заодно показываю че щаз в BR (63 сектор) и копии BR (которая находится в 69 секторе и содержит старый BR от Парагона). Найдите 10 отличий
Усе, запускаю эмулятор и гляжу геометрию новыми командами. Тут я еще и показал как ее отфиксить средствами grub4dos новой версии, но сам еще эту фичу особо не тестил, т.к. Парагон создал раздел с правильной геометрией, что меня несказанно удивило... Я пересчитал и все сошлось. Появляется уважение к разработчикам Парагона, т.к. после форматера от HP у меня всегда была "левая" геометрия которую приходилось править.
Вот и все... И если кто-то еще меня спросит - почему у него не стартует grub4dos, то вы уж извините. Буду посылать на юга и читать факинг мануалы. P.S. Свою миссию я выполнил, если кто оформит статью - хвала ему и почет. Я этим безобразным делом заниматься (от природной лени) не буду. Ну и добавлю от себя. KDn'у огромный РЕСПЕКТ за проделанную работу. Если найдете где-то ошибки, пишите, будем исправлять :) При копировании данной статьи прошу указывать источник и автора, для вас стараемся.
Источник: http://KDn |