1、实验五 编译linux内核实验五 编译linux内核一、 实验目的掌握编译ARM linux系统内核的过程。二、 实验内容完成编译Linux 内核。三、 预备知识:熟悉Linux 基本操作。四、 实验设备:安装Redhat9 的PC 机,并且配置好ARMlinux 的开发环境五、 实验步骤:1. 输入cd /pxa270_linux/linux/进入Linux 内核文件所在的目录ls查看内核文件结构2. 输入export ARCH=armexport CROSS_COMPILE=arm-linuxmakemake clean /*一般不使用*/系统将彻底清空以前的编译结果,删除所有的.o 文件
2、,二进制文件。3 输入make menuconfig /*推荐使用*/这条命令是用来调用菜单式的配制内核界面,相应的还有命令行式的配制方法make menuconfig 界面是图形化的内核裁减界面。通过此部分,我们可以方便的选择,决定那部分被加载并编译入LINUX 内核,那部分被编译为模块,那些部分不用。在此我们可以装载一个我们已经保存好的设置。用上下键选择Load an Alternate Configuration File,回车进入下边的界面。输入config_ours, 这个文件是事先保存好的配置文件。用户也可以使用Save Configuration to an Alternate
3、File 保存自己的配置文件。选择ok,保存并推出make menuconfig。配置结果会保存在./linux/include/linux 文件夹下的autoconfig.h 文件中。4 输入make dep5 编译内核,输入make zImage得到LINUX 的内核文件zImage, 保存在./arch/arm/boot 下make clean 后第一次使用make zImage 命令,会占用相当长的时间。宿主机会根据autoconfig.h 文件对系统进行编译。首先使用交叉编译器(arm-linux-gcc)把各个文件夹下用过的.c 文件编译为二进制的目标文件,其次用链接器(arm-l
4、inux-ld)把这些目标文件连接到一起;最后压缩,就得到了内核的镜像文件zImage。这个文件是可以写入嵌入式系统的核心。6 编译模块make modules编译模块驱动程序,凡是在menuconfig 中被选为的都会在这条命令运行时被编译。至此内核的编译已经完成,可以把生成的zImage 文件复制到/tftpboot/目录中,为今后的实验做准备。cp ./arch/arm/boot/zImage /tftpboot/ -f7. 将生成的的内核烧写到目标板上 下载zImage文件到RAM中 启动目标板,回车,进入blob命令行方式: #tftp zImage -kernel 将新生成的zIm
5、age映像下载到RAM中。为了避免经常烧写flash造成flash坏区,因此测试的时候只需要下载到SDRAM中就可以。 #go 0xa0008000 观察结果。8、将LOGO信息加入到内核中,按照上述步骤重新编译内核: 进入Console drivers选项,选择Frame buffer support选项,将OURS LOGO support选中,保存重新编译,将生成的zImage文件放到/tftpboot目录下,按照步骤8重新下载到RAM中,观察实验结果。9 将NFS服务去掉,看看是否还可以mount nfs 进入File System选项, 找到Networking File Syste
6、m, 进入该选项,将NFS file system support去掉 重新编译内核,并下载,观察是否可以mount上NFS。make menuconfig 选项的说明:在linux 中,工程化的编程都会使用make menuconfig, 它是一个比较成熟的裁减界面。不同工程之间的menuconfig 会有差别,但大体相同。下别就把主要的部分做以说明:Code maturity level options这个选项的作用域是整个编译配置空间,如果这里选中相应的级别,不符合此条件的选项就不会在后面出现。这个选项是代码的成熟程度的选择,意思是如果你需要一个非常成熟稳定的系统,那么有些新功能就不能使
7、用,一个包含有新功能的系统就可能存在相应的风险。可以根据你自己的需求选择。Loadable module support这个选项是你的内核对内核模块的支持选项,包括是否支持和支持的一些配置等,选择此项会使一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。System Type择对系统的支持,如什么样的ARM 内核,什么样的配置平台等,此例提供的内核是给S3C2410 准备的,如果使用不同的处理器其系统或是不同的内核时此处的选项可能不同。General Setup这里是内核本身的一些属性的配置,包括压缩方式,
8、网络支持等很多属性。Parallel port support这个选项顾名思义就是选择内核对并口的支持情况,当选中对并口支持后会出现新的选项来配置支持不同类型不同模式的并口。Memory Technology Devices (MTD)对MTD 设备的支持选项,这个选项对嵌入式系统比较重要,内核对各种Flash 的支持都在这里配置,包括种类,分区等。Plug and Play configuration内核对即插即用的支持选项,这个选项在嵌入式系统中极少使用。Block devices内核对块设备的支持选项,各种磁盘系统的支持Multi-device support多设备的支持,主要是RAID
9、 和LVM 的支持,这个在嵌入式系统中极少使用Networking support对网络设备的支持选项,通常对网卡的支持在这里选择,也是常用的选项,例如系统配置不同的网卡时就要在这里选中不同的选项。ATA/IDE/MFM/RLL supportIDE 口的支持,这里选择支持不同的IDE 设备,包括CDROM HARDDISK TAP 等SCSI supportSCSI 设备的支持选项,也比较少使用I2C device support智能IO 结构支持,嵌入式也比较少使用ISDN supportISDN 的支持选项Input device support输入设备核支持,通常当需要支持USAB 的
10、HID 设备时选中Character devices字符型设备的支持,这个选项是嵌入式系统经常使用的选项,嵌入式系统中大量的设备都属于Char 型的设备Multimedia devices多媒体设备的支持File systems内核对不同文件系统的支持选项,在这里选择需要支持的文件系统Sound对声音设备的支持选项USB support各种USB 设备的支持Bluetooth support蓝牙设备的支持Kernel hacking内核DeBug 用的一些选项,用于报告各种信息Load and Alternate Configration FileLoad 不同的配置文件Save Configration to an Alternate File保存配置文件实验小结:本实验我们编译了Linux 内核。内核的配置选项很多,实验仪提供的内核文件已经做好了相应的配置,如果想深入了解内核,还需要很多相关的知识。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1