Master Boot Record

Тема в разделе "WASM.OS.DEVEL", создана пользователем sn0w, 11 мар 2011.

  1. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    958
    тут в википедии нашел материалы про MBR. (http://ru.wikipedia.org/wiki/Главная_загрузочная_запись)
    говорится там и о наличии таблицы разделов, и о том что она не стандартизована, однако посмотрев MBR с диска с винсевен, никакой таблицы я там не обнаружил, выходит что действительно, используют ее в основном в качестве стартового кода для поиска и загрузки загрузчика?

    сделал на фасме демо-код, который выводил просто строчку "HELLO BOOT WORLD", записал его на флешку. затем записал случайный файл. когда снова открыл - mbr был переписан дефолтным. т.е. при актах записи мбр переписывался. затем я еше раз переписал его своим кодом и перезагрузился. все сработало как и должно было, но после того как загрузилась винда - флешка оказалась в формате RAW хотя до этого была фат32. надо добавить что первый сектор я обнулял, записывал вначало код а в конец - сигнатуру.

    подскажите, как ее переписать так чтобы не слетел формат.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну разумеется.

    Драйвера файловой системы винды кэшируют метаданные + диспетчер кэша кэширует сам диск.
    Само собой, чтобы перетирать MBR/бутсектора, нужно сначала размонтировать том, потом переписать данные, а потом снова смонтировать. Иначе никак =)

    Ну ясен пень - ты же похерил таблицу разделов =)

    ах, да, кстати
    нет же, таблица разделов там есть.
    просто в MBR есть место только для 4х разделов, поэтому чтобы писать большие таблицы, юзают специальный extended раздел. может это тебя смутило?
     
  3. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Т.е. используют то, чего ты не обнаружил ;)

    Нужно писать туда, где таблицы нет. Вообще в MBR перед таблицей разделов остается 446 байт. Одна сейчас считается, что код MBR-загрузчика должен иметь размер 440 байт. Могу объяснить почему, но думаю пока не стоит вдаваться в детали.

    В принципе это не трудно восстановить, потому что раздел(ы) флешки наверняка остался нетронутым. Были на флешке полезные данные?

    Или "юзают" GPT. Но для этого нужно выполнить ряд спец. действий, которые скорее всего выполнены не были, поэтому пока не будем об этом говорить.
     
  4. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    958
    теперь ясно.

    да, но как я понял - доп. раздел на диске может быть только один, ну а т.к. кроме как 80 или 00 они не маркируются, то по идее, для запуска он должен быть еще и единственным активным на диске (еще и сам загрузчик должен это поддерживать)?

    и смутило меня просто вот такое дело (когда прочитал определение - решил что это жестко должно выполняться)
    [​IMG]

    в выделенном блоке я ожидал увидеть записи о разделе, хотябы одну, но никак не текст

    чего то я запутался, а где она?
     
  5. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Не нужно делать расширенный раздел активным :)

    Ты либо смотришь не весь диск, а конкретный раздел, либо у тебя флешка имеет структуру без разбиения на разделы (что по нынешним временам весьма странно). Если второе, то ты испортил не таблицу разделов (которой действительно в загрузочном секторе раздела/неразбитого диска нет), а т.н. структуру BPB с информацией о структуре ФС на разделе, которая находится в начале сектора, а не в конце. Определись сначала со структурой флешки, а потом уже пиши загрузочный код на нее.
     
  6. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    958
    это просто фантазия была - например активный доп раздел - там загрузчик и все получается рекурсивно какбы)

    а во флешке(скрин сверху) я работал только в рамках первого сектора(никаких разбиений там нет), т.е. 512 байт. с физическим диском ситуация правильная.

    впрочем я понял - таблица разделов присутствует только когда их больше чем 1. о чем в википедийном определении также оговаривается.
     
  7. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Сомнительное утверждение. На флешках практически всегда присутствует только один раздел, тем не менее они обычно размечаются с использованием таблицы разделов.
     
  8. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Phantom_84
    Ну не знаю. Я давненько не связывался с чужими флешками, но когда мне по работе приходилось их втыкать в свой комп -- они практически все были без таблицы разделов. Прям как на дискете, только объём поболе.
     
  9. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.742
    >диска с винсевен, никакой таблицы я там не обнаружил,

    Значит плохо искал.

    > выходит что действительно, используют ее в основном в качестве стартового кода для поиска и загрузки загрузчика?

    Нет выходит что плохо искал ...
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    И тебя не смутили символы 'BOOTMGR' (имя файла загрузчика в Vista+, пришедшего на смену NTLDR)? :)
     
  11. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    958
    нет, чего смущаться) типичный шеллкод в вакууме (Ж))). но кстати на харде да. есть таблица. видимо я промахнулся в опциях открытия (раздел/физ диск). но на флехе ее нет у меня.
     
  12. MisHel64

    MisHel64 Member

    Публикаций:
    0
    Регистрация:
    9 мар 2011
    Сообщения:
    182
    Флешка может быть отформатирована в 4х форматах.
    1) FDD 2) HDD 3) ZIP 4) Dual

    Что живет в нулевом секторе зависит от формата.
    В 1 и 4 живет BOOT сектор, в 2,3,4 живет MBR. (Термины не правильные, но так понятней.)
    С завода большинство флешек идет как FDD с FAT
     
  13. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    А такое возможно сделать стандартными средствами? Я подобную структуру размечаю вручную.

    Ну не знаю... Лично я пользуюсь исключительно флешками/флеш-картами Kingston. Они размечаются с использованием таблицы разделов. Многие другие по моим наблюдениям тоже, т.к. я частенько заглядываю в начальный сектор флешек и вижу там MBR с оригинальным кодом (точно не от виндов). Может это зависит от марки? Потом все-таки не FDD, а ZIP, т.к. опция FDD-USB соответствует какому-либо стандартному формату разметки флоппика, что по понятным причинам не подходит для флешек.
     
  14. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    а что такое dual. не когда не слышал?
     
  15. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Это когда начальный сектор содержит и таблицу разделов и структуры ФС. После него продолжается образ с соответствующей ФС, а уже затем описанный в таблице разделов раздел(ы). Существует даже возможность совместить образы.
     
  16. MisHel64

    MisHel64 Member

    Публикаций:
    0
    Регистрация:
    9 мар 2011
    Сообщения:
    182
    Лично я пользуюсь исключительно флешками Kingston DataTraveler, последняя купленная была на 4Гб, и была BigFdd.

    Не понял сути высказывания. Это различные форматы.

    USB-FDD не содержит MBR и должен мапится BIOSом на 0x00
    USB-ZIP содержит MBR и должен мапится BIOSом на 0x00
    USB-HDD содержит MBR и должен мапится BIOSом на 0x80

    Вот как BIOS отличает эти форматы, и на основании чего принимает решение что эмулировать (FDD/HDD/ZIP), и на какое устройство вешать, откровенно не знаю, официальной документации по этому вопросу не нашел, но с удовольствием почитал бы. Ковыряние BIOSа и опыт наводят на очень странные мысли.

    [offtopic] а на этом форуме есть уведомление на e-mail?[/offtopic]
     
  17. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    то есть по сути получается 5 разделов.
    один который сам описывает и 4 из pt?
    или их всего 4 а первый описывает раздел с 1 сектора?
     
  18. MisHel64

    MisHel64 Member

    Публикаций:
    0
    Регистрация:
    9 мар 2011
    Сообщения:
    182
    Но не одновременно.
    Обычно один раздел описывают и через BOOT и через MBR.
     
  19. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    а почему. если сначало описать раздел(например где симтема)
    а потом через pt еще 4 раздела (начинающиеся после первого)
     
  20. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Может содержать... Вообще разметку с MBR можно и в образе флоппика сделать... С этими опциями вообще не все так просто. У каждого производителя BIOS могут быть свои нюансы. Прежде всего они оказывают влияние на номер диска, трехмерную геометрию и набор используемых функций BIOS, также часто на возможность использовать структуры, находящиеся непосредственно на диске (некоторые BIOS используют данные из PT, некоторые даже из BPB, а некоторые на этапе загрузки вообще делают из разметки с MBR разметку без MBR, виртуально отсекая дорожку с MBR и пространство за пределами раздела и корректируя поле HiddenSectors в BPB - я бы в это никогда не поверил, если бы не столкнулся сам с таким поведением BIOS).

    Нет, получается либо образ без деления на разделы, за которым находятся "скрытые" разделы, либо разметка с разделами, в которой между MBR и собственно разделами находится "скрытый" образ, который часто совмещается с первым разделом.