1、 内核源代码代码如何转化为烧写或安装到硬件平台中的系统映像文件?
三步骤:配置、编译、安装。
为什么要配置:硬件的需求;软件的需求。
2、 如何配置内核?
命令:make config(基于文本模式的交互式配置,需要一步一步的配置)
make menuconfig(基于菜单图形化的界面,高效,直观,推荐使用)
3、 make menuconfig的菜单选项与使用?
菜单项的分类:按功能的分类,常用的菜单项有:
选择处理器类型;网络协议;选择需要的驱动支持;文件系统的选择;
三种取值方式<*>:要经过编译的过程,然后连接压缩成内核影像文件iImage,会运行在内存中
<>:不选择该功能。
然后保存配置,会自动保存在顶层目录下,ls –l 查看,这个文件是隐藏文件。文件名是.config。可以修改.config,结果和make menuconfig配置是一样的。一般不会这么去配置,当熟练之后可以直接去修改.config效率会更高。
4、 简化的配置方法与原则。
使用已有的配置结果文件,然后基于已有的修改成自己的。
配置修改原则:不清楚的配置项,不要去配置,保持默认。
在Linux系统的/boot/下有一个配置文件(X86平台的),其实在arch/arm/configs还有基于ARM平台的配置文件。把他拷贝当前的目录linux2.6.39下去,make menuconfig去配置。选择装载一个配置文件。
5、 内核的编译。
编译内核(其实就是编译<*>的文件,生成内核镜像)
编译内核模块(其实就是编译
制作ramdisk(就是把内核模块打包)
A、 编译内核
命令:make zImage(用于小于512k的内核,但是一般的内核都大于512k)
make bzImage(一般用这个命令)
注意有一个编译选项make zImage V=1(显示编译过程的详细信息)
编译完成后在最后一行会提示内核在什么位置。
B、 编译内核模块
命令:make modules (编译完成后存放在磁盘中去)
C、将编译好的内核模块,从内核源代码目录复制至/lib/modules下**,为打包做好准备
命令:make modules_install(只是把所有散落的*.ko内核模块移动到/lib/modules目录下)
C、 对内核模块打包
命令:mkinitrd initrd-$version $version(initrd-$version是要打包的名字(一般是版本名字),$version要打包文件所在的目录(一般版本名字))
如mkinitrdinitrd-2.6.32 2.6.32
视屏中用的指令是:mkinitdir rd-2.6.39 2.6.39(第二个参数是要打包的目录,第一个是要生文件名)
6、 内核安装
A、cp arch/x86/boot/bzImage /boot/vmlinuz-$version (X86上面的安装方法,ARM上不是这个方法)
B、cp initrd-$version /boot/
C、修改/etc/grub.conf
复制最后四行,修改内核名字,然后保存,到此完成内核的配置及修改,然后重新启动Linux系统,在倒计时的时候按下按键,选择要启动的内核。
7、更换Linux的内核为什么还是以前的老的东西?
Linux系统分为两个部分:内核(运行在内存中)和用户空间(硬盘/Flash),所以看到更新内核后的磁盘中的文件等没有发生变化。
8、怎样清理内核源代码?
在编译配置内核源代码的时候产的东西:配置产生了.config;文件编译产生了*.o文件,这些*.o文件又编程了bzimage和*.Ko文件;这些*.o文件称为中间文件。
清零指令:make clean(清理了*.o文件,没有清除掉.config文件)
make distclean(清理了.config文件,同时也可以清除掉*.o文件)
/**************到此完成*
思维导图如下: