免费注册 查看新帖 |

Chinaunix

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

kernel 2.6 内核的生成过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-09 18:15 |只看该作者 |倒序浏览

                kernel 2.6 内核的生成过程
先从安装新内核后生成的文件说起
step 1:
    更新内核的最后一条指令    make install
    运行了/linux-2.6.11/arch/i386/boot/install.sh 2.6.11\
    arch/i386/boot/bzImage System.map "" 命令
    该命令将bzImage System.map 拷贝到/boot目录更改为相应的名字,
    然后调用相关的脚本根据系统的配置以及/lib/modules/2.6.11/modulse.dep生成initrd
    然后更改/boot/grub/grub.conf 文件
    此时即可使用新的内核引导系统。
step 2:如何生成step 1 所需的文件(bzImage,modules...)呢?
    我们首先看一下编译命令 make做了那些工作
    1:编译vmlinux(内核必须组件以及静态(built-in)的模块)
        ld -m elf_i386  -o vmlinux \
        -T arch/i386/kernel/vmlinux.lds \
        arch/i386/kernel/head.o arch/i386/kernel/init_task.o  \
        init/built-in.o --start-group  usr/built-in.o  \
        arch/i386/kernel/built-in.o  arch/i386/mm/built-in.o  \
        arch/i386/mach-default/built-in.o  arch/i386/crypto/built-in.o  \
        kernel/built-in.o  mm/built-in.o  fs/built-in.o  ipc/built-in.o  \
        security/built-in.o
crypto/built-in.o  lib/lib.a  arch/i386/lib/lib.a  \
        lib/built-in.o  arch/i386/lib/built-in.o  drivers/built-in.o  \
        sound/built-in.o  net/built-in.o --end-group .tmp_kallsyms2.o
    2:生成bzImage(这个文件是将vmlinux进行压缩,然后和bootsect,以及setup)
        最先生成的vmlinuxi(size:1,048,646)位于/src根目录下,
        通过以下命令生成第6步所需的vmlinux.bin
        1:objcopy -O binary -R .note -R .comment -S  vmlinux\
            arch/i386/boot/compressed/vmlinux.bin(size:864,390)
        2:gzip -f -9  arch/i386/boot/compressed/vmlinux.bin.gz(size:422,008)
        3:ld -m elf_i386  -r --format binary --oformat elf32-i386 -T \
            arch/i386/boot/compressed/vmlinux.scr\
            arch/i386/boot/compressed/vmlinux.bin.gz\
            -o arch/i386/boot/compressed/piggy.o(size:422,675)
        4:ld -m elf_i386  -Ttext 0x100000 -e startup_32\
            arch/i386/boot/compressed/head.o\
            arch/i386/boot/compressed/misc.o \
            arch/i386/boot/compressed/piggy.o \
            -o arch/i386/boot/compressed/vmlinux(size:439,400)
        5:objcopy -O binary -R .note -R .comment -S  
            arch/i386/boot/compressed/vmlinux\
            arch/i386/boot/vmlinux.bin(size:436,228)
        6:arch/i386/boot/tools/build -b \
            arch/i386/boot/bootsect \
            arch/i386/boot/setup \
            arch/i386/boot/vmlinux.bin CURRENT \
            > arch/i386/boot/bzImage(size:439,812)
            (以上命令均在src根目录下执行)
    3:编译相关的modules(生成相关的modules.ko)
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/35387/showart_274313.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP