Linux内核配置与编译
1. 清除临时文件
1. make clean
删除产生的文件,但保存配置。
2. make mrproper
删除产生的文件同时删除配置
3. make distclean
删除mrproper并且删除补丁之类的。
2.对确定的目标系统的软硬件配置情况。比如CPU、网卡型号,所需支持的网络协议等。
3.配置内核的命令:
1)make config:基于文本模式的交互式配置
会每一个问题一个一个的问你,是否需要配置,很麻烦。
2)make menuconfig:基于文本模式的菜单型配置。(推荐使用)
对于每一个选项,都本身就有一个默认的值。
menuconfig安装功能进行了分类。
通过空格可以变换前面的选项。或是y n m,y对应*,m对应M,n对应空。
Y N M的选择之间的区别可以用一下来反映:
(*)A.c --------------A.o ------------zImage
(*)B.c --------------B.o-------------zImage
(M)D.c --------------D.o
( )E.c -------------
Y和M有编译过程,N没有编译过程,且Y有链接过程。
3)make oldconfig:使用已有的配置文件(.config),但是会询问新增的配置选项
与config类似,一直询问问题。与make config相比,要求你必须做决定的配置项相对较少。只有后面有new的,才会询问。
4)make xconfig:图形化的配置(需安装图形化系统)
通常参考一个已有的内核。例如:在Linux 2.6.29中的一个arch/文件
打开arch下的一个arm文件。再在其中打开config,在config中的所有文件都是供你去参考的配置文件。例如:我们选择的6410的开发板,我们就应该去参考s3c6410_defconfig,接下来将s3c6410_deconfig复制到相对应的arch/arm/mach-s3c6410。
内核的编译
make zImage
make bzImage
在X86平台,zImage只能用于小于512k的内核(其他平台没有区别)
选项 make zImageV=1
make bzImage V=1 加了等于1的时候,可以看到所有的编译过程。
编译好的内核在arch/arm/里的相对应的体系结构/boot
编译内核模块 makemodules
安装内核模块,makemodules_install
将编译好的内核模块从内核源代码目录copy至/lib/modules下
内核模块编译好了之后,要去制作ramdisk
mrinitrd initrd -$version $version
第一个version是取得名字,第二个version是你的内核版本。
***mrinitrd在有些环境下没有,需要自己安装,此时,用mkinitramfs代替mrinitrd这样就可以制作initrd文件了。***
例如:mrinitrdinitrd initrd-2.6.29 2.6.29
是将linux2.6.29下的lib文件夹中的modules里的2.6.29做成ramdisk文件,所以第二个version要与modules里的文件一样。(此步还没解决。)
内核安装(x86平台)
1.cp arch/x86/boot/bzImage/boot/vmlinuz-$version(取一个名字)
***$version为所编译的内核版本号***
2.将做好的ramdisk cp到boot下
Cp $initrd/ boot/
3.修改/ect/grub.conf 或者 /etc/lilo.conf