![ARM嵌入式系统开发完全入门与主流实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/801/653801/b_653801.jpg)
2.11 实验:编译Linux内核
实验目的:
了解ARM系统内核的编译过程。
实验内容:
完成Linux内核的编译。
预备知识:
熟悉Linux的基本操作。
实验设备:
安装Redhat9的PC,配置好ARM-Linux的开发环境。
实验步骤:
1. 查看内核文件结构
打开Linux下的一个终端,输入:
cd /s3c2410_linux/kernel/
即可进入Linux内核文件所在的目录,然后输入:
ls
此时在屏幕上即可输出Linux内核所包含的文件。
2. 清理以前的编译结果
在打开的终端上输入:
make clean make dep
在按回车键后即可清理掉以前的编译结果。
3. 编译内核
在打开的终端上输入:
make menuconfig /*推荐使用*/
这条命令是用来调用菜单式的配制内核界面的,相应的还有命令行式的配制方法
make config /*不推荐使用*/
在按回车键后即会出现类似于vivi的配置界面的界面,如图2-16所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0088_0001.jpg?sign=1739164382-agTXTOXWds5nvyDZMSU3zePwlNElZLp5-0-83321925ae97e722003ff3b8f18f9d19)
图2-16 Linux内核配置菜单图
下面简单介绍一下各个选项的含义。
(1)Code maturity level options
这个选项的作用域是整个配置空间,如果在这里选中响应的级别,则不符合此条件的选项就不会在后面出现。这个选项是代码的成熟程度的选择,意思是如果你需要一个非常成熟稳定的系统,那么有些新功能就不能使用,并且一个包含有新功能的系统就可能存在相应的风险,可以根据自己的需求选择。进入“Code maturity level options”菜单后的画面如图2-17所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0089_0001.jpg?sign=1739164382-HAuSvUk2CSsfwAol2ML5cRWIjAH0yhB8-0-f1de449dbb8b15ac2508a3bdfe2abbf3)
图2-17 “Code maturity level options”菜单配置图
(2)Loadable module support
这个选项是你的内核对内核模块的支持选项,包括是否支持和支持的一些配置等,选择此项会使内核文件变大。进入“Loadable module support”后的菜单画面如图2-18所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0089_0002.jpg?sign=1739164382-IdZjIeRhWl3JFbnBIvQAWIhSU7HFZE8g-0-51d07c064acd1a011d05226107848786)
图2-18 “Loadable module support”菜单配置图
(3)System Type
选择对系统的支持,如选择什么样的ARM内核、什么样的配置平台等。实验仪提供的内核是给S3C2410提供的,如果使用不同的处理器系统或是不同的内核,此处的选项可能不同。进入“System Type”后的菜单画面如图2-19所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0090_0001.jpg?sign=1739164382-qRTOc2eeVQRwVXJ8RcFJ2h5Lktlm6ysv-0-c386800840e3839699b833d948e0aa7c)
图2-19 “System Type”菜单配置图
(4)General setup
这里是内核本身的一些属性的配置,包括压缩方式、网络支持等很多属性。进入“General setup”后的菜单画面如图2-20所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0090_0002.jpg?sign=1739164382-pmyDtX298pKGTTRAR0pT8zMXtCgZRHeM-0-c6808d85d1c7882a8007d086b307d31a)
图2-20 “General Setup”菜单配置图
(5)Parallel port support
这个选项顾名思义就是选择内核对并口的支持,当选中对并口支持后会出现新的选项来配置不同类型、不同模式的并口。进入“Parallel port support”后的菜单画面如图2-21所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0091_0001.jpg?sign=1739164382-OHI7f4HSuZx5d5i4l8GNzkg72qQdIFhv-0-f5f990a77d18fa025360116dabe0bfda)
图2-21 “Parallel port support”菜单配置图
(6)Memory Technology Devices (MTD)
这个选项是对MTD设备的支持选项,对嵌入式系统比较重要,内核对各种Flash的支持都在这里配置,包括种类、分区等。进入Memory Technology Devices后的菜单画面如图2-22所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0091_0002.jpg?sign=1739164382-jqFopKrsExYG3mSg9B3bmuNQGoTZtY8Z-0-3172fbba5520b3b7ae025e9b5832a8aa)
图2-22 “Memory Technology Devices”菜单配置图
(7)Plug and Play configuration
内核对即插即用的支持选项,这个选项在嵌入式系统中极少使用。进入“Plug and Play Support”后的菜单画面如图2-23所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0092_0001.jpg?sign=1739164382-VWIUimNc2umaZR7sdMnFDZ8nlUrhOlOI-0-a45254ae5360557b5ea0cbaaf4e6ba06)
图2-23 “Plug and Play configuration”菜单配置图
(8)Block device
内核对块设备的支持选项,支持各种磁盘系统。进入“Block device”后的菜单画面如图2-24所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0092_0002.jpg?sign=1739164382-naJ6ZGOey5ZBfSPn9B8LyiDljApEwmNA-0-5966b3eff2f04877ac6b91e96dab1fd6)
图2-24 “Block device”菜单配置图
(9)Multi-device support(RAID and LVM)
内核对多设备的支持选项,主要是对RAID和LVM的支持,这个在嵌入式系统中极少使用。进入“Multi-device support(RAID and LVM)”后的菜单画面如图2-25所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0093_0001.jpg?sign=1739164382-VQTLCp7trdu4ZIZGCSBDkZrHZlPyf8iU-0-4f7d74b95eb343f4f38fbeca3705409b)
图2-25 “Multi-device support(RAID and LVM)”菜单配置图
(10)Networking options
内核的网络支持选项,Linux对网络的支持是内核级的,在这里可以配置对不同网络协议的支持情况。进入“Networking options”后的菜单画面如图2-26所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0093_0002.jpg?sign=1739164382-lfuYenzA5V8AxJukNSSj5vMf9xd4mgEX-0-0c2a939d3a4567ad0b20e8329f01a77a)
图2-26 “Networking options”菜单配置图
(11)Network device support
内核对网络设备的支持选项,通常对网卡的支持在这里选择,是常用的选项,例如系统在配置不同的网卡时就要在这里选中不同的选项。进入“Network device support”后的菜单画面如图2-27所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0094_0001.jpg?sign=1739164382-hwfHZnAixCp4lXZyoibRJDHWZ1d1XiZe-0-3f26fd11cb93a480981d84b884dca723)
图2-27 “Network device support”菜单配置图
(12)Amateur Radio support
业余无线电支持选项,在嵌入式系统中极少使用。进入“Amateur Radio support”后的菜单画面如图2-28所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0094_0002.jpg?sign=1739164382-7UTO2AAkxgyx7Q5N1drn76BWcbEm8R7U-0-e4d533e7bc2ee3ebf95cf8c7b26c1eff)
图2-28 “Amateur Radio support”菜单配置图
(13)IrDA (infraed) support
IrDA支持选项,就是对红外线通信口的支持。进入“IrDA (infraed) support”后的菜单画面如图2-29所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0095_0001.jpg?sign=1739164382-Uk0COdwd05fCBPPt5mhg8JthAqyj4zut-0-5cc7b4c65d3b3f89c13ca227d8108e9d)
图2-29 “IrDA (infraed)support”菜单配置图
(14)ATA/IDE/MFM/RLL support
对IDE口的支持选项,这里选择支持不同的IDE设备,包括CDPOM、HARDDISK、TAP等。进入“ATA/IDE/MFM/RLL support”后的菜单画面如图2-30所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0095_0002.jpg?sign=1739164382-wJY5x9QBZ4K7l1M4pCBlrFDu8jKaLO0G-0-b96f974529cb945fca46412cca931389)
图2-30 “ATA/IDE/MFM/RLL support”菜单配置图
(15)SCSI support
SCSI设备的支持选项,也比较少使用。进入“SCSI support”后的菜单画面如图2-31所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0096_0001.jpg?sign=1739164382-EosKT8C1qILDxmI6IjCw2LDpF41CzwZf-0-4eead27337e6702097387cb4d54535fc)
图2-31 “SCSI support”菜单配置图
(16)I2O device support
智能IO结构支持,在嵌入式系统中也比较少使用。进入“I2O device support”后的菜单画面如图2-32所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0096_0002.jpg?sign=1739164382-TsbOc0P1qF0d5arcJViC0fmpWBgA3ETW-0-86266981695b1b1697933a7133d07196)
图2-32 “I2O device support”菜单配置图
(17)ISDN subsystem
ISDN的支持选项。进入“ISDN subsystem”后的菜单画面如图2-33所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0097_0001.jpg?sign=1739164382-3B83PV7XbQUpq1Vu0wYj6dogTLP0o1de-0-a7c708a152eec94f57e3c39c4da67cd2)
图2-33 “ISDN subsystem”菜单配置图
(18)Input core support
输入设备核支持选项,通常当需要支持USAB的HID设备时选中。进入“Input core support”后的菜单画面如图2-34所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0097_0002.jpg?sign=1739164382-gJ2RG2eYXpiZdcb2JhWE6eCYmYlZJ8Xp-0-d7aad578422adc065890d5d43f804d08)
图2-34 “Input core support”菜单配置图
(19)Character devices
字符型设备的支持选项,这个选项是在嵌入式系统中经常使用的选项,嵌入式系统中大量的设备都属于Char型的设备。进入“Character devices”后的菜单画面如图2-35所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0098_0001.jpg?sign=1739164382-GqiKQoKJWodsCfI2bofQKdiNLra4CvKn-0-0c5a21f616857f3d95bfb24f2c20c397)
图2-35 “Character devices”菜单配置图
(20)Multimedia devices
多媒体设备的支持选项。进入“Multimedia devices”后的菜单画面如图2-36所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0098_0002.jpg?sign=1739164382-SOa1vSqPfKS3AMFltQgtxLRtQdlk3eN8-0-4cacb06fb2b3a6b6d041a9e25b590d87)
图2-36 “Multimedia devices”菜单配置图
(21)File systems
内核对不同文件系统的支持选项,在这里选择需要支持的文件系统。进入“File systems”后的菜单画面如图2-37所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0099_0001.jpg?sign=1739164382-1jzce1zAVL0tFU2I4rCx79XdXiSsG8tO-0-c54bc813b694fb70200240938f817378)
图2-37 “File systems”菜单配置图
(22)Console drivers
控制台的选择选项,这里主要选择是否把Console定位到VGA上面,以及是否对Frame-Buffer支持。进入“Console drivers”后的菜单画面如图2-38所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0099_0002.jpg?sign=1739164382-j41qtw8h0n6c5piWK7Msyh0d8zLy2tEj-0-c9a9a547f661191969090e4c09e39652)
图2-38 “Console drivers”菜单配置图
(23)Sound
对声音设备的支持选项。进入“Sound”后的菜单画面如图2-39所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0100_0001.jpg?sign=1739164382-wyRDF9dx3Ih2mzifsankOOh8VhVJw7WD-0-ca4f3afb280f0292d0fa3302527bc363)
图2-39 “Sound”菜单配置图
(24)Mutimedia Capabilities Port drivers
多媒体设备的支持选项。进入“Mutimedia Capabilities Port drivers”后的菜单画面如图2-40所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0100_0002.jpg?sign=1739164382-QMyAlgJ9fazlRdtYvhjBDy0pme5A4b8x-0-77489691484e1020a73aef995e478a20)
图2-40 “Mutimedia Capabilities Port drivers”菜单配置图
(25)USB support
各种USB设备的支持选项。进入“USB support”后的菜单画面如图2-41所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0101_0001.jpg?sign=1739164382-cZdy3vQL2r2yPrrCSRCPgsepqhtgryqd-0-8df02ebd9ca28038a03fe7792457a4ac)
图2-41 “support for USB”菜单配置图
(26)Bluetooth support
蓝牙设备的支持选项。进入“Bluetooth support”后的菜单画面如图2-42所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0101_0002.jpg?sign=1739164382-DMqVbFmiST3oJMN4o8ThYE1MG5FH9YL4-0-684e72e33b8d21714aaa591f7a8b0535)
图2-42 “Bluetooth Subsystem support”菜单配置图
(27)Kernel backing
内核Debug用的一些选项,用于报告各种信息。进入“Kernel backing”后的菜单画面如图2-43所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0102_0001.jpg?sign=1739164382-rfwY9L2q6NQ7bUUAsbwuWcxBkND2cQ0i-0-6087594c0d0162208c89e210853f9585)
图2-43 “Kernel backing”菜单配置图
(28)Load and Alternate Configration File
Load不同的配置文件。进入“Load and Alternate Configration File”后的菜单画面如图2-44所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0102_0002.jpg?sign=1739164382-WwsmLuCXgO1zqxcpn7yccIsgwWedwe7r-0-9a2cee3b197c9543ad0e54048ffdebdc)
图2-44 “Load and Alternate Configration File”菜单配置图
(29)Save Configration to an Alternate File
保存配置文件。进入“Save Configration to an Alternate File”后的菜单画面如图2-45所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0103_0001.jpg?sign=1739164382-mmSmhli3RDPf1JwOw6V1NBf3DaAK2Q1i-0-0e6b2f211e2bcbf2abca05cb398f91ef)
图2-45 “Save Configration to an Alternate File”菜单配置图
在设置好各选项后选择“Exit”退出和保存就可以了。
4. 生成内核文件
在设置好各选项后退出,输入:
make zImage
zImage文件是通过内核编译后生成的Linux内核文件,按回车键后即会在屏幕上看到其相应的生成过程。
5. 编译模块驱动程序
当内核编译完成后输入:
make modules
即可开始模块驱动程序的编译,凡是在menuconfig中被选为<M>的都会在这条命令运行时被编译。
至此内核的编译已经完成,把生成的zImage文件复制到/tftpboot/目录中备用:
cp ./arch/arm/boot/zImage /tftpboot/ -f
实验小结:
本次实验编译了Linux内核。内核的配置选项很多,本实验仪提供的内核文件已经做好了相应的配置,如果想深入了解内核,还需要很多相关的知识。