1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

помогите загрузиться с флэшки

Тема в разделе "FASM", создана пользователем gh88, 7 мар 2012.

  1. gh88

    gh88 New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2012
    Сообщения:
    7
    Здравствуйте, уважаемые участники конференции.
    Имеется флэшка, необходимо с нее установить ОС на другой комп. Проблема в том, что никак не получается правильно создать MBR, Boot sector. Пробовал много чего, но не запускается с нее, пишет вставьте системный диск. Для исследования темы поставил эмулятор qemu (чтобы не перезагружаться каждый раз) и программу Winhex (для прямой записи побайтово на флэш).
    В ассемблере набрал следующее:

    Код (ASM):
    1. mov ah, 0x0e
    2. mov al, '!'
    3. int 0x10
    Откомпилировал, получил коды команд:

    Код (Text):
    1. B4 0E B0 21 CD 10
    Прописал эти байты в нулевой сектор флэшки. По идее, биос после POST читает первые 512 байт кода MBR и передает им управление, т.е. должно было по логике появиться '!', но этого не происходит. В чем я не прав?
     
  2. gh88

    gh88 New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2012
    Сообщения:
    7
    Итак, появилось продолжение.
    Я полностью стер все с флэшки (заполнил нулями все байты), отформатировал в FAT32 Парагоном, сделал раздел активным, прописал вышеуказанный код по адресу активного раздела (смещение 7E00h), эмулятор qemu вывел желанный '!'.УРА! НО! Реальный биос у меня поддерживает загрузку только с USB-HDD, и если учитывать, что USB-stick != USB-HDD по структуре (ну я так фактически предполагаю исходя из фактов), то биос просто не видит мою флэшку как HDD! А чтобы он увидел, надо разметить как USB-HDD. Я установил UltraISO и отформатировал флэшку в режиме USB-HDD+ (хз что это значит, но вроде звучит то, что нужно). На этом я застрял, похоже мой биос не понимает разметки UltraISO. Кто может чем-то помочь?
     
  3. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    231
    полный код MBR в студию!
     
  4. gh88

    gh88 New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2012
    Сообщения:
    7
    MBR флэшки (дальше нули):
    MBR:
    Код (Text):
    1. FA 31 C0 8E D8 8E C0 8E D0 BC 00 7C FB FC 89 E6 BF 00 06 B9 00 01 F3 A5 EA DC 06 00 00 10 00 01 00 00 7C 00 00 00 00 00 00 00 00 00 00 80 3F 00 FF 00 7C 00 1E 0E 1F 3A 16 10 00 74 06 1F EA 36 E7 00 F0 3D FB 54 75 05 8C D8 FB EB 1D 80 FC 08 75 1B E8 81 00 8A 36 13 00 FE CE 8B 0E 15 00 86 CD C0 E1 06 0A 0E 11 00 31 C0 F8 EB 65 80 FC 02 72 CB 80 FC 04 77 C6 60 80 CC 40 50 BE 00 00 C7 04 10 00 30 E4 89 44 02 89 5C 04 8C 44 06 66 31 C0 66 89 44 0C 88 F0 F6 26 11 00 88 CF 88 EB C0 EF 06 81 E1 3F 00 01 C8 48 89 C7 A1 13 00 F7 26 11 00 F7 E3 01 F8 81 D2 00 00 89 44 08 89 54 0A 58 30 C0 8A 16 10 00 E8 0C 00 88 26 03 00 61 A1 02 00 1F CA 02 00 9C FF 1E 22 00 C3 80 FA 8F 7F 04 88 16 2D 06 BE 87 07 E8 8D 00 BE BE 07 31 C0 B9 04 00 F6 04 80 74 03 40 89 F5 81 C6 10 00 E2 F2 48 74 02 CD 18 BF 05 00 BE 1D 06 C7 44 02 01 00 66 8B 46 08 66 89 44 08 B8 00 42 8A 16 2D 06 CD 13 73 0D 4F 74 49 30 E4 8A 16 2D 06 CD 13 EB D8 A1 FE 7D 3D 55 AA 75 37 FA 66 A1 4C 00 66 A3 3F 06 BE 13 04 8B 04 48 89 04 C1 E0 06 8E C0 31 FF BE 1D 06 B9 60 00 FC F3 A5 C7 06 4C 00 17 00 A3 4E 00 FB 8A 16 2D 06 89 EE FA EA 00 7C 00 00 BE AA 07 E8 02 00 EB FE AC 20 C0 74 09 B4 0E BB 07 00 CD 10 EB F2 C3 53 74 61 72 74 20 62 6F 6F 74 69 6E 67 20 66 72 6F 6D 20 55 53 42 20 64 65 76 69 63 65 2E 2E 2E 0D 0A 00 42 6F 6F 74 20 66 61 69 6C 65 64 00 00 00 EA EB D4 CA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 01 01 00 06 FE 3F 7B 3F 00 00 00 80 8F 1E 00 55 AA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     
  5. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    gh88
    вобще есть программы для форматирования флешек как USB HDD. DriveKey например.
     
  6. gh88

    gh88 New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2012
    Сообщения:
    7
    K10
    Скачал HP Drive Key Boot Utility, все выполнил как предлагала программа по умолчанию, результат: эмулятор qemu/реальный комп - не работает. Комп пишет вставьте системный диск и нажмите Enter, эмулятор qemu - boot failed.
     
  7. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    gh88
    Если просто нужна загрузка с флешки бери grub4dos, читай man по нему и вперед! (загружается практически все, включая извращения с запуском truecrypt.iso с флешки для запуска шифрованной ОС )
     
  8. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    gh88
    Я надеюсь в биосе поставил загрузку с usb hdd?
     
  9. gh88

    gh88 New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2012
    Сообщения:
    7
    gloomyraven
    Уже пробовал.
    K10
    Конечно.

    Сегодня, после того как раздел флэшки создался (не помню уже как) третьим в партишн тэйбл MBR после загрузки перестало писать вставьте системный диск. Теперь мигает курсор, но больше ничего не происходит. Ну хоть что-то.
    Да, и, конечно, в эмуляторе все запускается и все очень хорошо работает. Я тут было подумал, что у меня комп старый, попробовал на другом - там мат плата где-то 2010 г.в. с AMD phenom 945, т.е. не старая, дак вот, там тоже Gigabyte, тоже Award BIOS и тоже только USB-HDD!!! (похоже в Биос Award вообще нет отдельной опции загрузки именно с усб-флэш).Там грузится (Plop основное меню) и если нажать загрузку PBR флэшки где лежит загрузчик grub4dos-виснет.
     
  10. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    gh88
    Сделай на флешке раздел cd-rom и закатай туда загрузчик, системы, которые не могут грузиться с флешки могут прохавоть такую ерунду.
     
  11. gh88

    gh88 New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2012
    Сообщения:
    7
    gloomyraven
    Там нужно перепрошивать контроллер флэшки.

    А кто-нибудь может прописать в самое начало MBR любой флэшки вот это
    Код (Text):
    1. EB0748656C6C6F2100BE027CAC3C007409BB0700B40ECD10EBF2EBFE
    и загрузиться с нее ? (только не в виртуальной машине, а на реальном компе)
    Работает?
    Это откомпилированное:
    Код (Text):
    1. jmp m1
    2. nop ;H
    3. nop ;e
    4. nop ;l
    5. nop ;l
    6. nop ;o
    7. nop ;!
    8. nop ;00
    9. m1:
    10. mov si, 0x7C00+0x2
    11. next:
    12. lodsb
    13. cmp al, 00
    14. jz _end
    15. mov bx, 0x7
    16. mov ah, 0xE
    17. int 0x10
    18. jmp next
    19. _end:
    20. jmp _end
    Просто мне не на чем проверить сейчас.

    А вообще я так понял, что у меня проблема с тем, что БИОС как-то проверяет флэшку перед тем как оттуда начать исполнять команды. Ну, теоретически, такое могло быть сделано для анализа и автоматического отбора подходящей флэшки (на случай если их несколько подсоединено). Такое возможно вообще?

    И вообще, было бы здорово посмотреть на MBR и VBR флэшек тех у кого Award BIOS и с флэшки грузится.
     
  12. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    gh88
    последние два байта сектора должны быть AA55 или 55AA. точно не помню.
     
  13. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    231
    gh88
    скопируй на флешку виндовый MBR, все должно работать
    55AA нет и таблицы разделов
     
  14. gh88

    gh88 New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2012
    Сообщения:
    7
    Я попробовал сделать на HDD, по IDE подключил, там все работает уже в реале, в т.ч. grub4dos, syslinux, и прога выводящая Hello! и больше ничего не делающая, причем в разных комбинациях MBR и VMR. Делаю тоже самое на флэшке - не работает. Сейчас MBR флэшки полностью такой-же, как и на рабочем винте, за исключением байтов кол-ва цилиндров, размера и тд., буквально 5 байт только расходятся.
    БИОС отказывается выполнять код с флэшки, причем ВООБЩЕ!
    Я читал в интернете про похожие проблемы с Gigabyte. Там людям помогало какое-то меню загрузки по F9,10,11,12 или прямо в Boot Priority появляется флэшка и ее можно выбрать. У меня никакое меню не вызывается, а касательно загрузки есть только First boоt device, second boot device, third boot device. Больше ничего нет.
    Я вижу как минимум четыре решения проблемы: кастомизировать (читай дизассемблировать) БИОС, перепрошить флэшку как CD-ROM, купить USB-сидиром или проапгнейдить комп и расстаться с gigabyte))
    Что скажете?
     
  15. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    а вы какую ОС хотите поставить с USB? Еще вопрос какая у вас материнка? Возможно есть другой способ запустить установку ОС? расскажите подробнее про задачу (можно в ПМ).


    P.S. на старых материнках повально не работает загрузка с флешок. (с этим еще в 2003 сталкивался).