需要的材料
硬件方面
嵌入式linux开发板(又称为目标机):arm9,arm11,armcortexA系列开发板均可
个人PC(又称为上位机或宿主机):一般的个人PC均可,搭载操作系统为windows或者linux。本文为搭载linux的x86PC。
开发板与上位机通信工具:串口,网线,USB
软件方面
linuxkernel内核源码树
交叉编译工具连
linuxkernel内核开发环境的搭建
编译linuxkernel的软件要求:
编译和运行3.xkernel要求多种最新版本的软件包。查阅Document/Changes可以得到要求的最小版本号以及如何更新这些软件包。小心过旧的软件包版本会间接造成某些难以解决的错误,因此不要设想在编译时出现错误的时候再去更新软件包。
Current Minimal Requirements============================ Upgrade to at *least* these software revisions before thinking you'veencountered a bug! If you're unsure what version you're currentlyrunning, the suggested command should tell you. Again, keep in mind that this list assumes you are already functionallyrunning a Linux kernel. Also, not all tools are necessary on allsystems; obviously, if you don't have any ISDN hardware, for example,you probably needn't concern yourself with isdn4k-utils. o Gnu C 3.2 # gcc --versiono Gnu make 3.80 # make --versiono binutils 2.12 # ld -vo util-linux 2.10o # fdformat --versiono module-init-tools 0.9.10 # depmod -Vo e2fsprogs 1.41.4 # e2fsck -Vo jfsutils 1.1.3 # fsck.jfs -Vo reiserfsprogs 3.6.3 # reiserfsck -Vo xfsprogs 2.6.0 # xfs_db -Vo squashfs-tools 4.0 # mksquashfs -versiono btrfs-progs 0.18 # btrfscko pcmciautils 004 # pccardctl -Vo quota-tools 3.09 # quota -Vo PPP 2.4.0 # pppd --versiono isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep versiono nfs-utils 1.0.5 # showmount --versiono procps 3.2.0 # ps --versiono oprofile 0.9 # oprofiled --versiono udev 081 # udevd --versiono grub 0.93 # grub --version || grub-install --versiono mcelog 0.6 # mcelog --versiono iptables 1.4.2 # iptables -V
linuxkernel内核配置
linuxkernel的配置选项非常多,从零配置工作量极大,因此一般的配置流程分为两步,先进行预配置,这步主要是利用他人的成果,再进行个性化定制,这步就是根据需要进行细化配置了。通常会有两种情行下,一种是从旧内核升级到新内核时进行配置,一种是从新开始使用默认配置再定制。
使用预定义配置再定制
1预配置的两种方法
1)使用源代码中提供的预定义配置文件
预定义配置文件在目录arch/$(ARCH)/configs/中,其中$(ARCH)是指处理器架构类型,如arm,x86,mips等。
使用预定义配置的方法如下:
make ARCH=${ARCH} ${PLATFORM}_defconfig
“makeARCH=${ARCH}${PLATFORM}_defconfig"使用arch/$ARCH/configs/${PLATFORM}_defconfig文件中的默认值来创建一个./.config文件。ARCH参数是必要的,既然默认配置文件所在路径中包含了ARCH。
查看内核源代码支持哪些ARCH,可以查看源代码树中的arch目录下有哪些目录名。而具体开发板应该使用哪个ARCH是很好确定的,比如开发板的cpu为armcortexA8,则ARCH为arm,相应的CROSS_COMPILE就是与ARCH一致的交叉编译工具链前缀,为了确定PLATFORM,可以查看arch/$ARCH/configs/下的文件名,也可以使用如下命令
make ARCH=arm help
从输出中你就可以看到${PLATFORM}_defconfig应该如何书写了,如果没有你的开发板名称,你可以找一个近似的平台作为参考,在此基础上进行配置也不错。
2)使用外部提供的.config文件进行配置
2个性化定制
个性化定制时,常用如下命令,它们的区别是配置的方式不同。
“makemenuconfig”-Updatecurrentconfigutilisingamenubasedprogram使用基于菜单的程序更新当前配置
“makexconfig”-UpdatecurrentconfigutilisingaQTbasedfront-end使用基于QT的前端更新当前配置
注意是更新(Update),这意味着如果当前已经配置过内核(即存在.config文件),那么该命令执行后会读取.config中的配置项,在此基础上进行配置。
从旧内核配置升级到新内核配置
linuxkernel内核编译
linuxkernel内核安装与运行
linuxkernel内核开发与调试
找一个让心里安静和干净的地方,自己变得跟水晶一般透明,