LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1497|回复: 4

关于Linux启动代码bootsect.S setup.S head.S 的问题。

[复制链接]
发表于 2006-6-16 12:01:04 | 显示全部楼层 |阅读模式
1、在bootsect.S中将setup从磁盘拷贝到内存0x90200处,拷贝的扇区数是4,也就是拷贝2048字节,如果setup大于2048字节怎么办呢?我的系统上就是7千多字节,我看了代码似懂非懂的似乎在setup.S里有处理。
2、在三个.S执行过程中,bootsect setup system的位置是怎样移动的,我是这样理解(地址均为绝对地址):加电自检后,如果从软盘引导系统(我看的2.6.16不再支持,必须要用boot loader),BIOS读入bootsect到0x7c00,bootsect将自己移动到0x90000(512字节),bootsect将setup从磁盘读入到0x90200,紧挨着bootsect。bootsect将system(head.S+misc.o+kernel)从磁盘读入到0x10000,然后setup把通过BIOS获得的系统信息拷贝到0x90000开始的区域给保护模式代码所用,bootsect被覆盖。然后下面就不怎么看得懂了。
问题:
(1)setup如何搬system的?
(2)setup怎么跳到head.S去执行的?
以上似乎根据-D__BIG_KERNEL__有不同的分支,请高人指点。

----------------------------------
再贴一些看不懂的代码片段,请高手帮忙注释
---------------1-----------------
                ......
start_of_setup:
# Bootlin depends on this being done early
        movw        $0x01500, %ax
        movb        $0x81, %dl
        int        $0x13
                ......
---------------2-----------------
                ......
        movw        $1, %ax                # protected mode (PE) bit
        lmsw        %ax                # This is it!
        jmp        flush_instr

flush_instr:
        xorw        %bx, %bx        # Flag to indicate a boot
        xorl        %esi, %esi        # Pointer to real-mode code
        movw        %cs, %si
        subw        $DELTA_INITSEG, %si
        shll        $4, %esi                # Convert to 32-bit pointer
# jump to startup_32 in arch/i386/boot/compressed/head.S
#       
# NOTE: For high loaded big kernels we need a
#        jmpi    0x100000,__BOOT_CS
上面的一段似乎会跳去head.S,可是jmpi    0x100000,__BOOT_CS就不理解了,此时kernel还没有decompress,怎么会从setup直接跳到0x100000呢?
----------------------------------
 楼主| 发表于 2006-6-16 12:02:18 | 显示全部楼层
偶先吃饭去了,但愿回来的时候....嘿嘿
回复 支持 反对

使用道具 举报

发表于 2006-6-16 13:10:16 | 显示全部楼层
可以参考赵炯的《linux内核剖析》,里面有详细的描述
回复 支持 反对

使用道具 举报

发表于 2006-6-18 17:59:09 | 显示全部楼层
参看《linux1.0核心游记》,有详细的描述!从系统被bios加载到解压缩,有详细的图片流程图!呵呵!
回复 支持 反对

使用道具 举报

发表于 2006-6-20 10:19:43 | 显示全部楼层

没人记得么?

没人记得么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表