基于ARM平台的Linux2622内核编译.docx
- 文档编号:26735634
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:19
- 大小:464.89KB
基于ARM平台的Linux2622内核编译.docx
《基于ARM平台的Linux2622内核编译.docx》由会员分享,可在线阅读,更多相关《基于ARM平台的Linux2622内核编译.docx(19页珍藏版)》请在冰豆网上搜索。
基于ARM平台的Linux2622内核编译
基于ARM平台的Linux2.6.22.6内核编译
学院:
信息工程学院
专业:
计算机应用技术
学号:
姓名:
目录
一.引言1
二.Linux作为嵌入式操作系统的特点1
三.Linux内核编译选项简介2
3.1Generalsetup常规设置2
3.2Loadablemodulesupport3
3.3Blocklayer块设备层3
3.4Processortypeandfeatures中央处理器(CPU)类型及特性4
3.5Networking网络4
3.6DeviceDrivers设备驱动程序6
3.7Filesystems文件系统11
四.Linux2.6.22.6内核的交叉编译步骤11
一.引言
Linux是最受欢迎的自由电脑操作系统内核。
它是一个用C语言写成,符合POSIX标准的类Unix操作系统。
嵌入式linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。
嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。
嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_LinuxHardhatLinux等嵌入式Linux支持,实时性能稳定性好安全性好。
本文主要进行基于ARM9S3C2410的Linux2.6.22.6内核移植,硬件平台是博创UP-CUPS2410教学试验箱。
宿主机开发环境是CentOS5.5操作系统。
二.Linux作为嵌入式操作系统的特点
Linux做嵌入式系统有其独特的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;其次,Linux的内核小、效率高,内核的更新速度很快,linux是可以定制的,其系统内核最小只有约134KB。
第三,Linux是免费的OS,在价格上极具竞争力。
Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台,是一个跨平台的系统。
到目前为止,它可以支持二三十种CPU。
而且性能稳定,裁剪性很好,开发和使用都很容易。
很多CPU包括家电业芯片,都开始做Linux的平台移植工作。
移植的速度远远超过Java的开发环境。
也就是说,如果今天用Linux环境开发产品,那么将来换CPU就不会遇到困扰。
同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。
提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Tokerring(令牌环网)、光纤甚至卫星的支持。
所以Linux很适于做信息家电的开发。
Linux的大小适合嵌入式操作系统——Linux固有的模块性,适应性和可配置性,使得这很容易做到。
另外,Linux源码的实用性和成千上万的程序员热切期望它用于无数的嵌入式应用软件中,导致很多嵌入式Linux的出现。
三.Linux内核编译选项简介
Linux内核提供了多种编译方法,既可以基于XWindow图形界面方式进行编译,同时在文本界面下也有相应的字符界面或者简单的基于选项问答式的编译,在本文我们选择文本字符界面的编译方式,其相应的命令为makemenuconfig。
Linux内核提供了多种编译选项,我们可以根据自己的平台实际情况进行相关模块的删减。
下面基于Linux2.6.19.x内核进行一些主要编译选项的说明。
3.1Generalsetup
常规设置
Localversion-appendtokernelrelease
在内核版本后面加上自定义的版本字符串(小于64字符),可以用"uname-a"命令看到
Supportforpagingofanonymousmemory(swap)
使用交换分区或者交换文件来做为虚拟内存
SystemVIPC
SystemV进程间通信(IPC)支持,许多程序需要这个功能.必选,除非你知道自己在做什么
POSIXMessageQueues
POSIX消息队列,这是POSIXIPC中的一部分
Auditingsupport
审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计
Enablesupportforprintk
允许内核向终端打印字符信息,在需要诊断内核为什么不能运行时选择
EnableELFcoredumps
内存转储支持,可以帮助调试ELF格式的程序
Enableeventpollsupport
支持事件轮循的系统调用
UsefullSLABallocator
使用SLAB完全取代SLOB进行内存分配,SLAB是一种优秀的内存分配管理器,推荐使用
3.2Loadablemodulesupport
可加载模块支持
Enableloadablemodulesupport
打开可加载模块支持,如果打开它则必须通过”makemodules_install”把内核模块安装在/lib/modules/中
Moduleunloading
允许卸载已经加载的模块
Forcedmoduleunloading
允许强制卸载正在使用中的模块(比较危险)
Moduleversioningsupport
允许使用其他内核版本的模块(可能会出问题)
Sourcechecksumforallmodules
为所有的模块校验源码,如果你不是自己编写内核模块就不需要它
Automatickernelmoduleloading
让内核通过运行modprobe来自动加载所需要的模块,比如可以自动解决模块的依赖关系
3.3Blocklayer
块设备层
Enabletheblocklayer
块设备支持,使用硬盘/USB/SCSI设备者必选
IOSchedulers
IO调度器
DeadlineI/Oscheduler
使用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)
DefaultI/Oscheduler
默认IO调度器
3.4Processortypeandfeatures
中央处理器(CPU)类型及特性
Processorfamily
处理器系列,请按照你实际使用的CPU选择
FirmwareDrivers
固件驱动程序
HighMemorySupport
最高内存支持,总内存小于等于1G的选"off",大于4G的选"64G"
Memorymodel
一般选"FlatMemory",其他选项涉及内存热插拔
Mathemulation
数学协处理器仿真,486DX以上的cpu就不要选它了
Enableseccomptosafelycomputeuntrustedbytecode
只有嵌入式系统可以不选
Timerfrequency
内核时钟频率,桌面推荐"1000HZ",服务器推荐"100HZ"或"250HZ"
3.5Networking
网络
Networkingoptions
网络选项
Networkpacketdebugging
在调试不合格的包时加上额外的附加信息,但在遇到Dos攻击时你可能会被日志淹没
Packetsocket
这种Socket可以让应用程序(比如tcpdump,iptables)直接与网络设备通讯,而不通过内核中的其它中介协议
Packetsocket:
mmappedIO
让Packetsocket驱动程序使用IO映射机制以使连接速度更快
Unixdomainsockets
一种仅运行于本机上的效率高于TCP/IP的Socket,简称Unixsocket.许多程序都使用它在操作系统内部进行进程间通信(IPC),比如XWindow和syslog
TCP/IPnetworking
TCP/IP协议当然要选
IP:
multicasting
群组广播,似乎与网格计算有关,仅在使用MBONE的时候才需要
IP:
advancedrouter
高级路由,如果想做一个路由器就选吧
IP:
policyrouting
策略路由
IP:
equalcostmultipath
用于路由的基于目的地址的负载均衡
IP:
verboseroutemonitoring
显示冗余的路由监控信息
IP:
kernellevelautoconfiguration
在内核启动时自动配置ip地址/路由表等,需要从网络启动的无盘工作站才需要这个东西
IP:
tunneling
IP隧道,将一个IP报文封装在另一个IP报文内的技术
IP:
GREtunnelsoverIP
基于IP的GRE(通用路由封装)隧道
IP:
multicastrouting
多重传播路由
TheIPv6protocol
你要是需要IPv6就选吧
IrDA(infrared)subsystemsupport
红外线支持,比如无线鼠标或无线键盘
Bluetoothsubsystemsupport
蓝牙支持
GenericIEEE802.11NetworkingStack
通用无线局域网(IEEE802.11系列协议)支持
3.6DeviceDrivers
设备驱动程序
GenericDriverOptions
驱动程序通用选项
Selectonlydriversthatdon'tneedcompile-timeexternalfirmware
只显示那些不需要内核对外部设备的固件作map支持的驱动程序,除非你有某些怪异硬件,否则请选上
Preventfirmwarefrombeingbuilt
不编译固件.固件一般是随硬件的驱动程序提供的,仅在更新固件的时候才需要重新编译.建议选上
Userspacefirmwareloadingsupport
提供某些内核之外的模块需要的用户空间固件加载支持,在内核树之外编译的模块可能需要它
DriverCoreverbosedebugmessages
让驱动程序核心在系统日志中产生冗长的调试信息,仅供调试
MemoryTechnologyDevices(MTD)
特殊的存储技术装置,如常用于数码相机或嵌入式系统的闪存卡
PlugandPlaysupport
即插即用支持,若未选则应当在BIOS中关闭"PnPOS".这里的选项与PCI设备无关
PnPDebugMessages
该选项仅供调试使用
ISAPlugandPlaysupport
ISA设备即插即用支持
Blockdevices
块设备
Networkblockdevicesupport
让你的电脑成为网络块设备的客户端
RAMdisksupport
内存中的虚拟磁盘,大小固定(由下面的选项决定,也可给内核传递"ramdisk_size=参数"来决定),它的功能和代码都比shmem简单许多
DefaultnumberofRAMdisks
默认RAMdisk的数量
DefaultRAMdiskblocksize(bytes)
每一个RAMdisk的默认块大小,设为PAGE_SIZE的值时效率最高
InitialRAMfilesystemandRAMdisk(initramfs/initrd)support
如果启动计算机所必须的模块都在内核里的话可以不选此项
Miscdevices
杂项设备
SCSIdevicesupport
SCSI设备
SCSIdevicesupport
有任何SCSI/SATA/USB/光纤/FireWire/IDE-SCSI仿真设备之一就必须选上
legacy/proc/scsi/support
一些老的刻录程序可能需要它
SCSIdisksupport
SCSI硬盘或U盘
SCSIgenericsupport
若有SCSI硬盘/CD-ROM/tape之外的SCSI设备才需要选择
SCSImediachangersupport
一种SCSI备份设备
Networkdevicesupport
网络设备
Networkdevicesupport
网络设备支持,当然要选啦
PHYdevicesupport
数据链路层芯片简称为MAC控制器,物理层芯片简称之为PHY,通常的网卡把MAC和PHY的功能做到了一颗芯片中,但也有一些仅含PHY的"软网卡"
Ethernet(10or100Mbit)
目前最广泛的10/100M网卡
Ethernet(1000Mbit)
目前已成装机主流的1000M网卡
Ethernet(10000Mbit)
万兆网卡无福消受啦
TokenRingdevices
令牌环网设备
WirelessLAN(non-hamradio)
无线LAN
PCMCIAnetworkdevicesupport
PCMCIA或CardBus网卡
Waninterfaces
WAN接口
PPP(point-to-pointprotocol)support
点对点协议,PPP已经基本取代SLIP了,用ADSL的可要仔细选择了
PPPmultilinksupport
多重链路协议(RFC1990)允许你将多个线路(物理的或逻辑的)组合为一个PPP连接一充分利用带宽,这不但需要pppd的支持,还需要ISP的支持
PPPfiltering
允许对通过PPP接口的包进行过滤
PPPsupportforasyncserialports
通过标准异步串口(COM1,COM2)使用PPP,比如使用老式的外置modem(非同步modem或ISDNmodem)上网
PPPsupportforsyncttyports
通过同步tty设备(比如SyncLink适配器)使用PPP,常用于高速租用线路(比如T1/E1)
PPPDeflatecompression
为PPP提供Deflate(等价于gzip压缩算法)压缩算法支持,需要通信双方的支持才有效
PPPBSD-Compresscompression
为PPP提供BSD(等价于LZW压缩算法,没有gzip高效)压缩算法支持,需要通信双方的支持才有效
PPPMPPEcompression(encryption)
为PPP提供MPPE加密协议支持,它被用于微软的P2P隧道协议中
PPPoverEthernet
这就是ADSL用户最常见的PPPoE啦,也就是在以太网上跑的PPP协议
PPPoverATM
在ATM上跑的PPP
Inputdevicesupport
输入设备
Genericinputlayer(neededforkeyboard,mouse...)
通用输入层,要使用键盘鼠标的就必选
Mouseinterface
鼠标接口
Touchscreeninterface
触摸屏
Eventinterface
能够利用/dev/input/eventX来存取输入设备的事件
Eventdebugging
该选项仅供调试
Keyboards
键盘驱动,一般选个AT键盘即可
Mouse
鼠标驱动,一般选个PS/2鼠标即可
Touchscreens
触摸屏驱动
Miscellaneousdevices
其他杂项驱动,一般选个PC喇叭即可
HardwareI/Oports
硬件I/O端口
SerialI/Osupport
使用PS/2键盘或鼠标的就必选
i8042PCKeyboardcontroller
PS/2接口的键盘和鼠标
Serialportlinediscipline
串口键盘或鼠标
PS/2driverlibrary
为PS/2接口上的设备提供驱动(比如PS/2鼠标或标准AT键盘)
Rawaccesstoserioports
不是hacker就别选了
Gameportsupport
就是早年"小霸王"游戏机上的那种手柄
USBsupport
USB支持
3.7Filesystems
文件系统
JFSfilesystemsupport
IBM的JFS文件系统
ROMfilesystemsupport
用于嵌入式系统的内存文件系统的支持
CD-ROM/DVDFilesystems
CD-ROM/DVD文件系统
ISO9660CDROMfilesystemsupport
CD-ROM的标准文件系统
DOS/Windows的文件系统
MSDOSfssupport
古老的MSDOS文件系统
VFAT(Windows-95)fssupport
从Win95开始使用的VFAT文件系统
DefaultcodepageforFAT
默认代码页
DefaultiocharsetforFAT
默认字符集
NetworkFileSystems
网络文件系统
四.Linux2.6.22.6内核的交叉编译步骤
1.由于系统运行的体系结构为ARM,而且要编译出能够在目标板上运行的程序,需要在主机上进行交叉编译,因此,首先需要修改内核源码根目录下的Makefile,如下图。
2.进入arch/arm/plat-s3c24xx,打开common-smdk.c文件,进行Flash分区信息的更改。
3.配置内核,在配置内核前,先拷贝s3c2410开发板的默认配置到内核根目录下,以简化配置过程。
4.在配置过程中主要注意处理器类型的选择、嵌入式文件系统的支持以及一些嵌入式输入输出接口的支持。
以下是配置过程需要注意的选项。
SystemType --->
S3C2410Machines --->
[*]SMDK2410/A9M2410
这一项是处理器支持,选择ARM处理器的SMDK2410。
Userspacebinaryformats --->
<>Kernelsupportfora.outandECOFFbinaries
去除该选项,a.out和ECOFF是两种可执行文件的格式,在ARM-Linux下一般都用ELF,所以这两种基本用不上。
Networking --->
Networkingoptions --->
<*>Packetsocket
[*] Packetsocket:
mmappedIO
Wireless --->
---ImprovedwirelessconfigurationAPI
---Wirelessextensions
[] Enablefulldebuggingoutput(NEW)
--- IEEE802.11WEPencryption(802.1x)
<*> IEEE802.11iCCMPsupport(NEW)
<*> IEEE802.11iTKIPencryption(NEW)
Networkdevicesupport --->
Ethernet(10or100Mbit) --->
<*>DM9000support
由于本实验箱使用的是DM9000网卡,所以选上此项。
Filesystems-->
<>Secondextendedfssupport
<>Ext3journallingfilesystemsupport#去除对ext3的支持
<*>Kernelautomountersupport
<*>Kernelautomounterversion4support(alsosupportsv3)
<*>FilesysteminUserspacesupport
Pseudofilesystems-->
[*]Virtualmemoryfilesystemsupport(formershmfs)
<*>Userspace-drivenconfigurationfilesystem(EXPERIMENTAL)
Miscellaneousfilesystems-->
<*>YAFFS2filesystemsupport
<*>JournallingFlashFileSystemv2(JFFS2)support
[*] JFFS2write-bufferingsupport
[] JFFS2summarysupport(EXPERIMENTAL)
[] JFFS2XATTRsupport(EXPERIMENTAL)
[*] AdvancedcompressionoptionsforJFFS2
[*] JFFS2ZLIBcompressionsupport
[*] JFFS2RTIMEcompressionsupport
[*] JFFS2RUBINcompressionsupport
JFFS2defaultcompressionmode(priority) --->
NetworkFileSystems-->
<*>NFSfilesystemsupport
[*]ProvideNFSv3clientsupport
[*]ProvideclientsupportfortheNFSv3ACLprotocolextension
[*] ProvideNFSv4clientsupport(EXPERIMENTAL)
[*] AllowdirectI/OonNFSfiles
<*>NFSserversupport
[*] ProvideNFSv3serversupport
[*]Provideser
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ARM 平台 Linux2622 内核 编译