![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=1739076924-4CG4JCOLzFTbupkP4TMtWDRG0zeO6M0f-0-092363aa5d771ca5e6b0cb73637f305f)
图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=1739076924-groMWk3bMOs5clnZpphU1lXTL1Tn2DhD-0-fff04e0c9d7c51a8cf2fd223a5d40d30)
图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=1739076924-xIDmkK72V3n4DDH8emkC91ZzaisUq4ti-0-004cfd2589431704e8910e01bcfbea55)
图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=1739076924-T20yCkVobSpGfaYUD0JuTViIXBqds1eG-0-76f2d5474250dd3662668526a2ea60ea)
图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=1739076924-aaG9UZ74bC0WwHVN84Je1HO2rTQh0b3L-0-c57265e97d408f72b8d8021a191ed500)
图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=1739076924-3wy1sXwI4YATtR6xRpMIXmqDVmtmlcgf-0-3c04949c3f1398a42a7135d7d31d01b1)
图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=1739076924-TA20X4nt7HAB7JqtQMyM7YuSRCRBDOoT-0-c5cab2e1f32d76c73602d0c96ccbbb32)
图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=1739076924-ZeNPZSHmqaqyPMXEtzDMAKyJMqdT6rpi-0-5c18fa4082cf67ab31bf1f93f997e9fc)
图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=1739076924-NtJ88F0o7EU3ems1Z1GptS25uUEkYOkU-0-721eaa0f34549f997e9220e780752678)
图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=1739076924-UA3ojIu2mcH0jkc6Msuvvk5BCoGOywX0-0-d74b26b3f6adec7fe7110dc548735fd6)
图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=1739076924-JgLHCMs5P8SrApFbyKbYGgHm0r2kK1dA-0-83fd99c8b3ebc5c9b34480b45001dce4)
图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=1739076924-tUBrqWDoxHwI6Ca3Etg7UyuEOasUkBAO-0-4ac1f9a11232ea2e877d944cd41f8fe1)
图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=1739076924-ppLlfWLaVZEBekUjRZneKhmWyzIUtdIY-0-6a9f40e1cd8d35782ac809836b544f51)
图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=1739076924-80xd8QctNN9KQJTFJaYMbUOTgiXqoCf6-0-10b443c1647e6239df141325fc995f8d)
图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=1739076924-v2fHCIXSWKNIfEAPc5iL8bwcSyvBx1Df-0-fcec98d3711187063a153d688161b5f0)
图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=1739076924-o25q9HU2ii5wzfwqqUopBXKGTCOJM4D5-0-c102d36ba0232a6269134a4652732200)
图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=1739076924-KKIFpu8uXwZU1HDsEWjRNTzjEqCG25Jy-0-ee02eb755654b4ce71e1b7399eaf00d4)
图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=1739076924-ms8wDoa0fV7h9Gb2AYl1ltmXF10oME8R-0-62559720277daa44b62462e61d233c65)
图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=1739076924-ItCqkiXw5YVgMAJExsmfU0PbKSZ70uGW-0-6157b788a1bf5040081761517d4b2576)
图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=1739076924-NbJanV9Kw4mphl3rHqkbTAN6I4KvVQjy-0-5cee798b644b74a98eb1767333cc2324)
图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=1739076924-TgtrdYW774CPXVQZ75vWOAh4Us2hQi7w-0-a9ae51d3035a1db35e33d1c809d276ce)
图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=1739076924-m17WPjyfmLWZctsDgxaxt6zmkSxen3os-0-2abd7c694d97e07d8ccb71d4ad0ae240)
图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=1739076924-Yz1u5DOGsuevljYqZM8kHggji5GM8L8x-0-1dfaa55beb64fe9f86f35c042d0a78a0)
图2-38 “Console drivers”菜单配置图
(23)Sound
对声音设备的支持选项。进入“Sound”后的菜单画面如图2-39所示。
![](https://epubservercos.yuewen.com/FB17CC/3591129504503901/epubprivate/OEBPS/Images/figure_0100_0001.jpg?sign=1739076924-Mu4rLOnFNu59ImWpqTHfmy09i6o0Wm42-0-559953196afebc884224b788b29014d6)
图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=1739076924-feiKq9X8sv2GBChLIKCIeMTMocX9uLYt-0-09fc96b7b8bd6dfd5a3cc855237882d8)
图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=1739076924-I2ZOM54ey64CKMozvfIoi7lV2xhKy9q0-0-043a46adef9161b0a673c55dfcb5692d)
图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=1739076924-5zaTRegWWhwsUAgfW10kqy7P4zLkpdei-0-50654fb20b6178fe705a5b32d9eb9e53)
图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=1739076924-8Zv46YL2YjoaqdKu9gF1TlKEPnvha4nK-0-0423b9f268f38ced2c2fcf6d0b1647b1)
图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=1739076924-ZIQfOl1S4kFOXTdRnWchL2zHAbG9DvEG-0-f40d09f00730388d9749ce6559cf97b8)
图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=1739076924-NC1UctUiJLWaL6VjbnCnseLTAn9VFkIa-0-75a44c28f83b8cd43ced421348d611ae)
图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内核。内核的配置选项很多,本实验仪提供的内核文件已经做好了相应的配置,如果想深入了解内核,还需要很多相关的知识。