- ARM嵌入式系統開發完全入門與主流實踐
- 封景剛 吳寶江編著
- 2557字
- 2019-01-01 05:02:22
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所示。

圖2-16 Linux內核配置菜單圖
下面簡單介紹一下各個選項的含義。
(1)Code maturity level options
這個選項的作用域是整個配置空間,如果在這里選中響應的級別,則不符合此條件的選項就不會在后面出現。這個選項是代碼的成熟程度的選擇,意思是如果你需要一個非常成熟穩定的系統,那么有些新功能就不能使用,并且一個包含有新功能的系統就可能存在相應的風險,可以根據自己的需求選擇。進入“Code maturity level options”菜單后的畫面如圖2-17所示。

圖2-17 “Code maturity level options”菜單配置圖
(2)Loadable module support
這個選項是你的內核對內核模塊的支持選項,包括是否支持和支持的一些配置等,選擇此項會使內核文件變大。進入“Loadable module support”后的菜單畫面如圖2-18所示。

圖2-18 “Loadable module support”菜單配置圖
(3)System Type
選擇對系統的支持,如選擇什么樣的ARM內核、什么樣的配置平臺等。實驗儀提供的內核是給S3C2410提供的,如果使用不同的處理器系統或是不同的內核,此處的選項可能不同。進入“System Type”后的菜單畫面如圖2-19所示。

圖2-19 “System Type”菜單配置圖
(4)General setup
這里是內核本身的一些屬性的配置,包括壓縮方式、網絡支持等很多屬性。進入“General setup”后的菜單畫面如圖2-20所示。

圖2-20 “General Setup”菜單配置圖
(5)Parallel port support
這個選項顧名思義就是選擇內核對并口的支持,當選中對并口支持后會出現新的選項來配置不同類型、不同模式的并口。進入“Parallel port support”后的菜單畫面如圖2-21所示。

圖2-21 “Parallel port support”菜單配置圖
(6)Memory Technology Devices (MTD)
這個選項是對MTD設備的支持選項,對嵌入式系統比較重要,內核對各種Flash的支持都在這里配置,包括種類、分區等。進入Memory Technology Devices后的菜單畫面如圖2-22所示。

圖2-22 “Memory Technology Devices”菜單配置圖
(7)Plug and Play configuration
內核對即插即用的支持選項,這個選項在嵌入式系統中極少使用。進入“Plug and Play Support”后的菜單畫面如圖2-23所示。

圖2-23 “Plug and Play configuration”菜單配置圖
(8)Block device
內核對塊設備的支持選項,支持各種磁盤系統。進入“Block device”后的菜單畫面如圖2-24所示。

圖2-24 “Block device”菜單配置圖
(9)Multi-device support(RAID and LVM)
內核對多設備的支持選項,主要是對RAID和LVM的支持,這個在嵌入式系統中極少使用。進入“Multi-device support(RAID and LVM)”后的菜單畫面如圖2-25所示。

圖2-25 “Multi-device support(RAID and LVM)”菜單配置圖
(10)Networking options
內核的網絡支持選項,Linux對網絡的支持是內核級的,在這里可以配置對不同網絡協議的支持情況。進入“Networking options”后的菜單畫面如圖2-26所示。

圖2-26 “Networking options”菜單配置圖
(11)Network device support
內核對網絡設備的支持選項,通常對網卡的支持在這里選擇,是常用的選項,例如系統在配置不同的網卡時就要在這里選中不同的選項。進入“Network device support”后的菜單畫面如圖2-27所示。

圖2-27 “Network device support”菜單配置圖
(12)Amateur Radio support
業余無線電支持選項,在嵌入式系統中極少使用。進入“Amateur Radio support”后的菜單畫面如圖2-28所示。

圖2-28 “Amateur Radio support”菜單配置圖
(13)IrDA (infraed) support
IrDA支持選項,就是對紅外線通信口的支持。進入“IrDA (infraed) support”后的菜單畫面如圖2-29所示。

圖2-29 “IrDA (infraed)support”菜單配置圖
(14)ATA/IDE/MFM/RLL support
對IDE口的支持選項,這里選擇支持不同的IDE設備,包括CDPOM、HARDDISK、TAP等。進入“ATA/IDE/MFM/RLL support”后的菜單畫面如圖2-30所示。

圖2-30 “ATA/IDE/MFM/RLL support”菜單配置圖
(15)SCSI support
SCSI設備的支持選項,也比較少使用。進入“SCSI support”后的菜單畫面如圖2-31所示。

圖2-31 “SCSI support”菜單配置圖
(16)I2O device support
智能IO結構支持,在嵌入式系統中也比較少使用。進入“I2O device support”后的菜單畫面如圖2-32所示。

圖2-32 “I2O device support”菜單配置圖
(17)ISDN subsystem
ISDN的支持選項。進入“ISDN subsystem”后的菜單畫面如圖2-33所示。

圖2-33 “ISDN subsystem”菜單配置圖
(18)Input core support
輸入設備核支持選項,通常當需要支持USAB的HID設備時選中。進入“Input core support”后的菜單畫面如圖2-34所示。

圖2-34 “Input core support”菜單配置圖
(19)Character devices
字符型設備的支持選項,這個選項是在嵌入式系統中經常使用的選項,嵌入式系統中大量的設備都屬于Char型的設備。進入“Character devices”后的菜單畫面如圖2-35所示。

圖2-35 “Character devices”菜單配置圖
(20)Multimedia devices
多媒體設備的支持選項。進入“Multimedia devices”后的菜單畫面如圖2-36所示。

圖2-36 “Multimedia devices”菜單配置圖
(21)File systems
內核對不同文件系統的支持選項,在這里選擇需要支持的文件系統。進入“File systems”后的菜單畫面如圖2-37所示。

圖2-37 “File systems”菜單配置圖
(22)Console drivers
控制臺的選擇選項,這里主要選擇是否把Console定位到VGA上面,以及是否對Frame-Buffer支持。進入“Console drivers”后的菜單畫面如圖2-38所示。

圖2-38 “Console drivers”菜單配置圖
(23)Sound
對聲音設備的支持選項。進入“Sound”后的菜單畫面如圖2-39所示。

圖2-39 “Sound”菜單配置圖
(24)Mutimedia Capabilities Port drivers
多媒體設備的支持選項。進入“Mutimedia Capabilities Port drivers”后的菜單畫面如圖2-40所示。

圖2-40 “Mutimedia Capabilities Port drivers”菜單配置圖
(25)USB support
各種USB設備的支持選項。進入“USB support”后的菜單畫面如圖2-41所示。

圖2-41 “support for USB”菜單配置圖
(26)Bluetooth support
藍牙設備的支持選項。進入“Bluetooth support”后的菜單畫面如圖2-42所示。

圖2-42 “Bluetooth Subsystem support”菜單配置圖
(27)Kernel backing
內核Debug用的一些選項,用于報告各種信息。進入“Kernel backing”后的菜單畫面如圖2-43所示。

圖2-43 “Kernel backing”菜單配置圖
(28)Load and Alternate Configration File
Load不同的配置文件。進入“Load and Alternate Configration File”后的菜單畫面如圖2-44所示。

圖2-44 “Load and Alternate Configration File”菜單配置圖
(29)Save Configration to an Alternate File
保存配置文件。進入“Save Configration to an Alternate File”后的菜單畫面如圖2-45所示。

圖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內核。內核的配置選項很多,本實驗儀提供的內核文件已經做好了相應的配置,如果想深入了解內核,還需要很多相關的知識。