GRUB ругается на Multiboot заголовок

Тема в разделе "WASM.BEGINNERS", создана пользователем karioth, 22 мар 2008.

  1. karioth

    karioth New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2008
    Сообщения:
    2
    Делаю по спецификации. Помогите пожалуйста с примерами. Или подскажите, что не так делаю.
    Вот исходник.
    Код (Text):
    1.                                 org 100000h  ; 1 Mb
    2.                                 use32
    3. ; ----------------------------------------------------------------------------
    4. ; byte 0 of file kernel.sys
    5. ; ----------------------------------------------------------------------------
    6. kernel_entry:                   jmp kernel_start
    7.  
    8. ; ----------------------------------------------------------------------------
    9. ; multiboot header
    10. ; ----------------------------------------------------------------------------
    11.                                 align 4
    12.  
    13. multiboot_magic                 equ 0x1BADB002
    14. multiboot_flags                 equ 0x00010003
    15. multiboot_checksum              equ -(multiboot_magic + multiboot_flags)
    16.  
    17. multiboot_header                dd multiboot_magic      ; magic
    18.                                 dd multiboot_flags      ; flags
    19.                                 dd multiboot_checksum   ; checksum
    20.                                 dd multiboot_header     ; header_addr
    21.                                 dd $$                   ; load_addr
    22.                                 dd kernel_end           ; load_end_addr
    23.                                 dd kernel_end + 2000h   ; bss_end_addr
    24.                                 dd kernel_start         ; entry_addr
    25.  
    26.                                 dd 1                    ; text mode
    27.                                 dd 80                   ; 80x25
    28.                                 dd 25
    29.                                 dd 0
    30.  
    31. ; ----------------------------------------------------------------------------
    32. ; kernel start point
    33. ; ----------------------------------------------------------------------------
    34. kernel_start:                   nop
    35.                                 mov esi, kernel_msg_greeting
    36.                                 mov edi, 0B800h + (80 * 2 * 10)      ; line 10
    37.                                 mov ecx, kernel_msg_greeting_end - kernel_msg_greeting
    38.                                 cld
    39.                                 rep movsb
    40. kernel_end_loop:                jmp kernel_end_loop
    41.                                
    42. kernel_msg_greeting             db 'Hello from My OS kernel'
    43. kernel_msg_greeting_end         db 0
    44.  
    45. kernel_end                      db 0
    Пробовал с multiboot_load_end_addr =0 и с multiboot_bss_end_addr=0, в этом случае по спецификации должен грузиться весь файл, bss сегмента нет.

    GRUB в любом случае выдает такое сообщение:
    [Multiboot-kludge, loadaddr=0x100000, text-and-data=0x61, bss=0x2000, entry=0x100034]
    и не хочет передавать управление
     
  2. green5

    green5 New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2006
    Сообщения:
    29
    Адрес:
    Protvino
    А мож передает?

    mov edi, 0B800h + (80 * 2 * 10) ; line 10

    Попробуй поменять на:
    mov edi, 0B8000h + (80 * 2 * 10) ; line 10

    А как menu.lst выглядит?
     
  3. karioth

    karioth New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2008
    Сообщения:
    2
    Тормоз я :) Перепутал адрес экрана.
    И точно передает. Так что все норм, спасибо за наводку.

    menu.lst такое:
    Код (Text):
    1. default 0
    2. timeout 30
    3.  
    4. title MS-DOS
    5. root (hd0,0)
    6. chainloader +1
    7.  
    8. title MyOS
    9. root (hd0,0)
    10. kernel /kernel/bin/kernel.sys