С чего стартанули

Тема в разделе "WASM.OS.DEVEL", создана пользователем Stamerlan, 29 дек 2008.

  1. Stamerlan

    Stamerlan New Member

    Публикаций:
    0
    Регистрация:
    10 июн 2007
    Сообщения:
    44
    Любой загрузчик загружается по адресу 0x7C00. Вот в чем вопрос: Как определить с какого устройства (floppy(A: B:)/HDD(0:0 0:1))?
    Нужно что бы знать откуда ядро грузить.
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    В регистре dl будет номер устройства загрузки. Поэтому его лучше не трогать или сохранить. Потом этот номер надо передавать в прерывание int 0x13 как номер устройства, с которого надо считать сектора. По поводу раздачи номеров устройств был спор (поиск по форуму), но у Ральфа Брауна написано так.
     
  3. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Можно загрузить вторичный загрузчик, опираясь исключительно на значение из регистра dl, а там уже использовать свое собственное соглашение об именовании загрузочных устройств, например, как это реализовано в ntldr. Хотя лично я определяю загрузочное устройство по значению регистра dl, при этом эмуляция флоппика/харда при загрузке с CD/DVD использоваться не должна.
     
  4. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Stamerlan
    Вместе с загрузчиком храним файл. В котором написанно откда грузимся. Так делает МС это более уневерсально чем через EDD пробовать определять.
     
  5. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Так я об этом же. В конфиг. файле загрузчика храним имя загрузочного устройства в каком-либо оригинальном формате, причем чем этот формат универсальнее, тем лучше. Здесь проблема может возниктуть только при загрузке со сменных носителей, но кто "серьезные" оси загружает со сменных носителей! Я загружаю, поэтому использую EDD и другие методы. EDD надежен, только проблема в том, что не все устройства поддерживают идентификацию через EDD. А вообще в связи с этим не мешало бы почитать BIOS Boot Spec.
     
  6. Stamerlan

    Stamerlan New Member

    Публикаций:
    0
    Регистрация:
    10 июн 2007
    Сообщения:
    44
    Всем пасибки!
     
  7. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Загрузочный флоппик - это практически всегда основной A (3F0h-3F7h, Drive Sel 0). Поддержку двух номеров флоппиков 0 и 1 считаю более чем достаточной. При использовании одного из этих номеров в BIOS полностью игнорирую это значение, заменяя его на Drive Sel из DOR.