bini 发表于 2005-2-16 19:03:07

2.6.10内核bootsect.S的新手问题.

向各位大侠请教一下,这里头是不是没有搬移setup.S的地方,一开始就显示错误消息??
.....

/*
*        bootsect.S                Copyright (C) 1991, 1992 Linus Torvalds
*
*        modified by Drew Eckhardt
*        modified by Bruce Evans (bde)
*        modified by Chris Noe (May 1999) (as86 -> gas)
*        gutted by H. Peter Anvin (Jan 2003)
*
* BIG FAT NOTE: We're in real mode using 64k segments.Therefore segment
* addresses must be multiplied by 16 to obtain their respective linear
* addresses. To avoid confusion, linear addresses are written using leading
* hex while segment addresses are written as segment:offset.
*
*/

#include <asm/boot.h>

SETUPSECTS        = 4                        /* default nr of setup-sectors */
BOOTSEG                = 0x07C0                /* original address of boot-sector */
INITSEG                = DEF_INITSEG                /* we move boot here - out of the way */
SETUPSEG        = DEF_SETUPSEG                /* setup starts here */
SYSSEG                = DEF_SYSSEG                /* system loaded at 0x10000 (65536) */
SYSSIZE                = DEF_SYSSIZE                /* system size: # of 16-byte clicks */
                                        /* to be loaded */
ROOT_DEV        = 0                         /* ROOT_DEV is now written by "build" */
SWAP_DEV        = 0                        /* SWAP_DEV is now written by "build" */

#ifndef SVGA_MODE
#define SVGA_MODE ASK_VGA
#endif

#ifndef RAMDISK
#define RAMDISK 0
#endif

#ifndef ROOT_RDONLY
#define ROOT_RDONLY 1
#endif

.code16
.text

.global _start
_start:

        # Normalize the start address
        jmpl        $BOOTSEG, $start2

start2:
        movw        %cs, %ax
        movw        %ax, %ds
        movw        %ax, %es
        movw        %ax, %ss
        movw        $0x7c00, %sp
        sti
        cld

        movw        $bugger_off_msg, %si

msg_loop:
        lodsb
        andb        %al, %al
        jz        die
        movb        $0xe, %ah
        movw        $7, %bx
        int        $0x10
        jmp        msg_loop

die:
        # Allow the user to press a key, then reboot
        xorw        %ax, %ax
        int        $0x16
        int        $0x19

        # int 0x19 should never return.In case it does anyway,
        # invoke the BIOS reset code...
        ljmp        $0xf000,$0xfff0


bugger_off_msg:
        .ascii        "Direct booting from floppy is no longer supported.\r\n"
        .ascii        "Please use a boot loader program instead.\r\n"
        .ascii        "\n"
        .ascii        "Remove disk and press any key to reboot . . .\r\n"
        .byte        0
       

        # Kernel attributes; used by setup

        .org 497
setup_sects:        .byte SETUPSECTS
root_flags:        .word ROOT_RDONLY
syssize:        .word SYSSIZE
swap_dev:        .word SWAP_DEV
ram_size:        .word RAMDISK
vid_mode:        .word SVGA_MODE
root_dev:        .word ROOT_DEV
boot_flag:        .word 0xAA55

kakuyou 发表于 2005-2-17 10:52:58

"Direct booting from floppy is no longer supported.\r\n"
"Please use a boot loader program instead.\r\n"

这段话的英文意思不知道?

就是说直接从软盘启动不再被支持了。

2.6的内核必须要使用某个boot启动器来启动。

也就是说bootsec.S不再有任何用处了。

bini 发表于 2005-2-17 15:23:03

谢谢,kakuyou:? .
如方便又有时间的话,请问那里有关于2.6内核的启动过程方面的资料可以提供.我想从机器的启动开始一步步研究2.6的内核.

ydlrhzc 发表于 2005-2-23 11:00:47

看2.4内核,或者研究一下grub

xue_hu2001 发表于 2005-2-25 09:56:21

你还是先看看linux0.11吧 :-):-):-):-):-)
页: [1]
查看完整版本: 2.6.10内核bootsect.S的新手问题.