linux内核编译

补丁patch-2.6-xxx.是基于内核2.6.xx的,可以再内核2.6.xx直接打上,并不需要1和2,如果打上了1或2,需要先卸掉在安装3.
pathc -p1 <../patch-2.6.xx.3
虚拟机上的redhat2.4只能编译2.6.18一下的linux内核,如果想编译更高的,需安装fedora,否则出现
*******************************
arch:包含硬件体系结构相关的代码,每个平台一个目录。
block:块设备驱动的IO调度
crypto:常用加密和散列算法
documentation:内核各部分的通用解释和注释
drivers:驱动,每个驱动一个目录
fs:各种文件系统
include:头文件,系统相关的头文件在include/linux下
init:内核初始化代码
ipc:进程间通信代码
kernel:内核最核心部分,包括进程调度,定时器等,与平台相关的在arch/*/kernel下
lib:库文件
mm:内存管理代码
net:网络相关代码,实现了各种协议
scripts:包含用于配置内核的脚本文件
security:安全密钥相关
sound:alsa,oss音频设备核心代码和常用驱动
usr:实现了常用于打包和压缩的cio:initrd的镜像,一般用不到。

makefile将13个目录分为5类:
init-y   :=init/
drivers-y:=drivers/ sound/
net-y    :=net/
libs-y   :=lib/
core-y   :=usr/
..
core-y   +=kernel/ mm/ fs/ ipc/ security/ crypto/ block/
另外include和documentation,scripts不包含在内,剩下的arch在include $(srctree)/arch/$(ARCH)/Makefile
对于ARCH在make时通过make ARCH=xxx传入。对于非x86平台同过make CROSS_COMPILE=arm-linux-xx指定交叉编译器
为方便可在makefile中修改
185 ARCH    ?=$(SUBARCH) --> arm
186CROSS_COMPILE   ?=    -->arm-linux-xx
***********************************************
makefile通过-include include /config/auto.conf来间接应用.config文件,前者是后者去掉注释后的文件。 
auto.conf文件通过make config记录xxx=y/m/ ,这些变量被makefile引用
makefile编译时在每个目录下面都会生成built-in.o文件,他将要被编译进内核,makefile中的obj-y中的.o文件由当前目录下的.c/.S生成,并连同下级目录中的built-in.o生成本级目录的built-in.o文件。
obj-m中的文件不会被编进built-in.o中,页不会被编译进内核。后面的目标由一个文件生成直接加上即可;如果由多个.o文件生成,需再加一行<module_name>-obj:
obj-$(XXX) +=isdn.o
isdn-obj:xx1.o xx2.o xx3.o

lib-y表示将要被编译成库文件lib.a,同时出现在obj-y和lib-y总的.o,不会被编译进lib.a,
编译时若需要进入下一级子目录,只需如下即可 obj-(XXX) +=subdir/

配置时通过make menuconfig ARCH=arm CROSS_COMPILE=xxx读取arch/$(ARCH)/Kconfig文件来生成配置界面。 
每个子目录中都有makefile和Kconfig文件。
Kconfig示例如下:**********************************************************
menu "xxxxxxxxxxxx" ##进入后将换掉界面
comment "xxxxxxxxxxx" 帮助信息,第一行,在config文件中作为注视
choice       ##本界面展开
prompt "xxxx"
default XXXXX
config XXXX
config XXX
endchoice
config JFFS2_FS_POSIX_ACL ##定义选项名,省略CONFIG_前缀,必须
bool "jffs2 posix access control lists" ##5种类型:bool(y/n),tristate(y/n/n)string,hex,int,必须
depends on JFFS2_FS_XATTR ##若依赖值不选中,取默认值
default y
select FS_POSIX_ACL ##若本项选中,select项自动选中。
help
xxxxxxxxxxxxxxxx
source "xx/xx" ##引入另一个Kconfig文件
endmenu
*****************************************************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值