免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2352 | 回复: 5
打印 上一主题 下一主题

内核加载疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-26 20:34 |只看该作者 |倒序浏览
是否所有版本的内核镜像都被bootloader(grub)加载到物理内存1M处吗?
但为什么在 System.out文件中会有如下:
        C0400000 T _text
        C0400000 T startup_32
内核镜像被加载到4M 处?

论坛徽章:
0
2 [报告]
发表于 2011-01-26 21:17 |只看该作者
只是虚拟地址是C0400000, uboot要负责搬运内核代码段,数据段,到内存相应虚拟地址的地方。

也不晓得你这cpu是x86还是啥,可以肯定不是mips。读读cpu软件手册,就知道对应的物理内存是多少了?

论坛徽章:
0
3 [报告]
发表于 2011-01-26 21:19 |只看该作者

论坛徽章:
0
4 [报告]
发表于 2011-01-26 21:25 |只看该作者
回复 3# chobit_s


    内核镜像最终会被加载到内存的何处是由bootloader 决定的吧?

论坛徽章:
0
5 [报告]
发表于 2011-01-26 22:18 |只看该作者
本帖最后由 chobit_s 于 2011-01-26 22:23 编辑

回复 4# zd零
决定内核镜像最终地址(0xc0400000 / 0xc1000000)不是bootloader
虽然bootloader把整个内核加载到内存中(grub不了解,lilo加载的在内核,最后还要内核启动代码调整一下内核位置),编译成的内核整体大致是:
|1|2|
1--head(负责解压|2|到0xc0400000 或 0xc1000000)      
2--head + kernel  (这部分被加载到内存4MB或16MB处,决定这个4MB还是16MB是内核自己,
见source/arch/x86/kernel/vmlinux.lds.S(2.6.34)中
. = LOAD_OFFSET + LOAD_PHYSICAL_ADDR;   //这里0xc0000000 + 4MB / 16MB

# cat /proc/kallsyms |grep c0400000
c0400000 T startup_32  //这个函数是在|2|的开始处,内核被|1|解压后就跳到这里
c0400000 T _text

-------
我以上说的忽略了initrd
grub真不知道, initrd最近也才开始琢磨

论坛徽章:
0
6 [报告]
发表于 2011-01-27 09:29 |只看该作者
回复 5# chobit_s

   
    谢谢您的回答!

    以下是我的愚见:
    在 2.6.12 内核中
  1. . = __PAGE_OFFSET + 0x100000;
  2.   /* read-only */
  3.   _text = .;                        /* Text and read-only data */
复制代码
而在较高版本内核中 如:2.6.22.1
  1. . = LOAD_OFFSET + LOAD_PHYSICAL_ADDR;
  2.   phys_startup_32 = startup_32 - LOAD_OFFSET;

  3.   .text.head : AT(ADDR(.text.head) - LOAD_OFFSET) {
  4.           _text = .;                        /* Text and read-only data */
复制代码
LOAD_PHYSICAL_ADDR = 0x400000

    是否是这样呢?2.6.12内核映像最终在内存中地址为1MB 而 2.6.22.1 却在4MB 对于更高版本内核 在16MB !
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP