内核源代码下载:www.kernel.orglinux
Linux内核源代码采用树形结构进行组织,很是合理地把功能相关的文件都放在同一个子目录下,使得程序更具可读性。 windows
linux内核代码最好不要在windows下解压,由于同名(大小写)会丢失一些code。网络
source insight:添加汇编文件:option->Document option 添加.c、.h、.s、.Sspa
内核目录:code
arch目录 :内核所支持的每种CPU体系,在该目录下都有对应的子目录。每一个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等 。
blog
documentation :内核的文档
ip
drivers目录:设备驱动程序。内存
作移植时:主要该arch和driver下。rem
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下的目录获得。
安装内核:1、cp arch/x86/boot/bzImage /boot/vmlinuz-$version //把内核.img拷贝出来
2、cp initrd-$version /boot/ //把ramdisk拷贝出来
3、修改/etc/grub.conf