基于ARM平台的Linux2622内核编译.docx

上传人:b****1 文档编号:14299630 上传时间:2023-06-22 格式:DOCX 页数:19 大小:464.89KB
下载 相关 举报
基于ARM平台的Linux2622内核编译.docx_第1页
第1页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第2页
第2页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第3页
第3页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第4页
第4页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第5页
第5页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第6页
第6页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第7页
第7页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第8页
第8页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第9页
第9页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第10页
第10页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第11页
第11页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第12页
第12页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第13页
第13页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第14页
第14页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第15页
第15页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第16页
第16页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第17页
第17页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第18页
第18页 / 共19页
基于ARM平台的Linux2622内核编译.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于ARM平台的Linux2622内核编译.docx

《基于ARM平台的Linux2622内核编译.docx》由会员分享,可在线阅读,更多相关《基于ARM平台的Linux2622内核编译.docx(19页珍藏版)》请在冰点文库上搜索。

基于ARM平台的Linux2622内核编译.docx

基于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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2