zoukankan      html  css  js  c++  java
  • linux内核源代码、配置与编译

    内核源代码下载:www.kernel.org

    Linux内核源代码采用树形结构进行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具可读性。

    linux内核代码最好不要在windows下解压,因为同名(大小写)会丢失一些code。

    source insight:添加汇编文件:option->Document option 添加.c、.h、.s、.S

    内核目录:

    arch目录 :内核所支持的每种CPU体系,在该目录下都有对应的子目录。每个CPU的子目录,又进一步分解boot,mm,kernel等子目录,分别包含控制系统引导内存管理系统调用等 。

    documentation :内核的文档

    drivers目录:设备驱动程序。

    做移植时:主要该arch和driver下。

    include目录 :内核所需要的头文件。与平台无关的头文件在include/linux 子目录下,与平台相关的头文件则放在相应的子目录中 

    script:配置内核的脚本。

    内核配置与编译: 执行这些命令的位置是在内核代码的顶层目录下

    linux内核具有可定制的优点,具体步骤:

    1.清除临时文件、中间文件和配置文件(三种命令,删掉不同的类型)

    make clean:remove most generated files but keep the config

    make mrproper:remove all generated files+config files

    make distclean:mrproper+remove editor backup and patch files(最全的)

    但不是最全的就是最好的,加入只编译后,只需要删除.o文件,不需要删除配置文件,则make clean(根据需要来删除)

     

    2.确定目标系统的软硬件配置情况,比如CPU的类型、网卡的型号、所需支持的网络协议等。

    3.配置内核:结果保存在.config文件中。

    make config:基于文本模式的交互式配置。
    make menuconfig:基于文本模式的菜单型配置 。(推荐使用)

      特点:直观高效,简单。利用空格键,选取值。

    make oldconfig:使用已有的配置文件(.config),但会询问新增的配置选项。

    make xconfig:图形化配置(需要安装图形化系统,其它前面三个既可以在文本模式下使用,也可以在图形化系统使用)

     内核配置通常在一个已有的配置文件基础上,通过修改得到新的配置文件,linux内核提供了一系列可供参考的内核配置文件,位于ARCH/$CPU/configs

    如:ARCH/ARM/configs下。。。把这个配置文件拷贝到内核的顶层文件下。

    *:y  ;空格:N

     

    配置内核文件的原则:

    找到一个可以参考的结果文件,基于这个文件再调整。

    4.内核编译

    make zImage

    make bzImage

    区别:在X86平台,zImage只能用于小于512K的内核,在其他平台两种方式是没有区别的。

    如需要获取详细编译情况,可使用:

    make zImage V=1

    make bzImage V=1

    编译好的内核位于arch/$cpu/boot,

    5.编译内核模块:

    make modules

    6.安装内核模块

    make modules_install

    将编译好的内核模块从内核源代码目录copy到/lib/modules下

    7.制作init ramdisk

    mkinitrd  initrd-$version   $version

    initrd-$version :取名字  

     $version:内核的版本

    注意:$version通过查询/lib/modules下的目录得到。

    安装内核:1cp arch/x86/boot/bzImage     /boot/vmlinuz-$version   //把内核.img拷贝出来

    2cp initrd-$version /boot/                    //把ramdisk拷贝出来
    3、修改/etc/grub.conf

  • 相关阅读:
    Casperjs循环执行(重复执行不退出)
    casperjs批量执行多个url
    CasperJS API介绍
    phantomjs waitFor
    phantomjs 长图截屏
    Linux Shell函数
    全废话SQL Server统计信息(2)——统计信息基础
    JavaScript推断undefined的技巧
    Activity Test1
    Android触摸事件(五)-CropBitmapActivity关于裁剪工具的使用
  • 原文地址:https://www.cnblogs.com/Caden-liu8888/p/7752549.html
Copyright © 2011-2022 走看看