1、 1 基于 ARM 平台的 Linux2.6.22.6 内核编译 学院:信息工程学院 专业:计算机应用技术 学号: 姓名: 基于 ARM 平台的 Linux2.6.22 内核编译 I 目录 一 引言 . 1 二 Linux 作为嵌入式操作系统的特点 . 1 三 Linux 内核编译选项简介 . 2 3.1 General setup 常规设置 . 2 3.2 Loadable module support . 3 3.3 Block layer 块设备层 . 3 3.4 Processor type and features 中央处理器 (CPU)类型及特性 . 4 3.5 Networkin
2、g 网络 . 4 3.6 Device Drivers 设备驱动程序 . 6 3.7 File systems 文件系统 . 11 四 Linux2.6.22.6 内核的交叉编译步骤 . 11 基于 ARM 平台的 Linux2.6.22 内核编译 1 一 引言 Linux 是最受欢迎的自由电脑 操作系统 内核。它是一个用 C 语言写成,符合POSIX 标准的类 Unix 操作系统。 嵌入式 linux 是将日益流行的 Linux 操作系统进行裁剪修改,使之能在 嵌入式计算机系统 上运行的一种操作系统。嵌入式linux 既继承了 Internet 上无限的开放源代码资源,又具有 嵌入式操作系统
3、的特性。嵌入式 Linux 的特点是版权费免费 ;购买费用媒介成本技术支持全世界的自由 软件 开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能 RT_Linux Hardhat Linux 等嵌入式 Linux支持,实时性能稳定性好安全性好。 本文主要进行基于 ARM9 S3C2410 的 Linux2.6.22.6 内核移植,硬件平台是博创 UP-CUP S2410 教学试验箱。宿主机开发环境是 CentOS5.5 操作系统。 二 Linux 作为嵌入式操作系统的特点 Lin
4、ux 做嵌入式 系统有其独特的 优势,首先, Linux 是开放源代码的,不存在黑箱技术,遍布全球的众多 Linux 爱好者又是 Linux 开发者的强大技术支持;其次, Linux 的内核小、效率高,内核的更新速度很快 ,linux 是可以定制的,其系统内核最小只有约 134KB。第三, Linux 是免费的 OS,在价格上极具竞争力。 Linux 还有 着 嵌入式操作系统 所需要的很多特色,突出的就是 Linux 适应于多种CPU 和多种硬件平台,是一个跨平台的系统。到目前为止,它可以支持二三十种CPU。而且性能稳定,裁剪性很好,开发和使用都很容易。很多 CPU 包括家电业芯片,都开始做
5、Linux 的平台移植工作。移植的速度远远超过 Java 的开发环境。也就是说,如果今天用 Linux 环境开发产品,那么将来换 CPU 就不会遇到困扰。同时, Linux 内核 的结构在网络方面是非常完整的, Linux 对网络中最常用的TCP/IP 协议 有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络 , Toker ring(令牌环网 )、光纤甚至卫星的支持。所以 Linux 很适于做信息家电的开发。 Linux 的大小适合嵌入式操作系统 Linux 固有的模 块性,适应性和可配置性,使得这很容易做到。另外, Linux 源码的实用性和成千上万的程序员热切基于 ARM
6、 平台的 Linux2.6.22 内核编译 2 期望它用于无数的嵌入式应用软件中,导致很多嵌入式 Linux 的出现 。 三 Linux 内核编译选项简介 Linux 内核提供了多种编译方法,既可以基于 XWindow 图形界面方式进行编译,同时在文本界面下也有相应的字符界面或者简单的基于选项问答式的编译 ,在本文我们选择文本字符界面的编译方式,其相应的命令为 make menuconfig。 Linux 内核提供了多种编译选项,我们可以根据自己的平台实际情况进行相关模块的删减。 下面基于 Linux2.6.19.x 内核进行一些主要编译选项的说明。 3.1 General setup 常规设
7、置 Local version - append to kernel release 在内核版本后面加上自定义的版本字符串 (小于 64字符 ),可以用 “uname -a“命令看到 Support for paging of anonymous memory (swap) 使用交换分区或者交换文件来做为虚拟内存 System V IPC System V进程间通信 (IPC)支持 ,许多程序需要这个功能 .必选 ,除非你知道自己在做什么 POSIX Message Queues POSIX 消息队列 ,这是 POSIX IPC 中的一部分 Auditing support 审计支持 ,某些内
8、核模块 (例如 SELinux)需要它 ,只有同时选择其子项才能对系统调用进行审计 Enable support for printk 允许内核向终端打印字符信息 ,在需要诊断内核为什么不能运行时选择 Enable ELF core dumps 内存转储支持 ,可以帮助调试 ELF 格式的程序 Enable eventpoll support 基于 ARM 平台的 Linux2.6.22 内核编译 3 支持事件轮循的系统调用 Use full SLAB allocator 使用 SLAB 完全取代 SLOB 进行内存分配 ,SLAB 是一种优秀的内存分配管理器 ,推荐使用 3.2 Loadab
9、le module support 可加载模块支持 Enable loadable module support 打开可加载模块支持 ,如果打开它则必须通过 ” make modules_install” 把内核模块安装在 /lib/modules/中 Module unloading 允许卸载已经加载的模块 Forced module unloading 允许强制卸载正在使用中的模块 (比较危险 ) Module versioning support 允许使用其他内核版本的模块 (可能会出问题 ) Source checksum for all modules 为所有的模块校验源码 ,如果你
10、不是自己编写内核模块就不需要它 Automatic kernel module loading 让内核通过运行 modprobe 来自动加载所需要的模块 ,比如可以自动解决模块的依赖关系 3.3 Block layer 块设备层 Enable the block layer 块设备支持 ,使用硬盘 /USB/SCSI 设备者必选 IO Schedulers IO调度器 基于 ARM 平台的 Linux2.6.22 内核编译 4 Deadline I/O scheduler 使用轮询的调度器 ,简洁小巧 ,提供了最小的读取延迟和尚佳的吞吐量 ,特别适合于读取较多的环境 (比如数据库 ) Defa
11、ult I/O scheduler 默认 IO 调度器 3.4 Processor type and features 中央处理器 (CPU)类型及特性 Processor family 处理器系列 ,请按照你实际使用的 CPU 选择 Firmware Drivers 固件驱动程序 High Memory Support 最高内存支持 ,总内存小于等于 1G 的选 “off“,大于 4G 的选 “64G“ Memory model 一般选 “Flat Memory“,其他选项涉及内存热插拔 Math emulation 数学协处理器仿真 ,486DX 以上的 cpu 就不要选它了 Enable
12、 seccomp to safely compute untrusted bytecode 只有嵌入式系统可以不选 Timer frequency 内核时钟频率 ,桌面推荐 “1000 HZ“,服务器推荐 “100 HZ“或 “250 HZ“ 3.5 Networking 网络 Networking options 网络选项 Network packet debugging 基于 ARM 平台的 Linux2.6.22 内核编译 5 在调试不合格的包时加上额外的附加信息 ,但在遇到 Dos 攻击时你可能会被日志淹没 Packet socket 这种 Socket 可以让应用程序 (比如 tcp
13、dump,iptables)直接与网络设备通讯 ,而不通过内核中的其它中介协议 Packet socket: mmapped IO 让 Packet socket 驱动程序使用 IO 映射机制以使连接速度更快 Unix domain sockets 一种仅运行于本机上的效率高于 TCP/IP 的 Socket,简称 Unix socket.许多程序都使用它在操作系统内部进行进程间通信 (IPC),比如 X Window 和 syslog TCP/IP networking TCP/IP 协议当然要选 IP: multicasting 群组广播 ,似乎与网格计算有关 ,仅在使用 MBONE 的时
14、候才需要 IP: advanced router 高级路由 ,如果想做一 个路由器就选吧 IP: policy routing 策略路由 IP: equal cost multipath 用于路由的基于目的地址的负载均衡 IP: verbose route monitoring 显示冗余的路由监控信息 IP: kernel level autoconfiguration 在内核启动时自动配置 ip 地址 /路由表等 ,需要从网络启动的无盘工作站才需要这个东西 IP: tunneling IP隧道 ,将一个 IP 报文封装在另一个 IP报文内的技术 IP: GRE tunnels over IP
15、 基于 ARM 平台的 Linux2.6.22 内核编译 6 基于 IP 的 GRE(通用路由封装 )隧道 IP: multicast routing 多重传播路由 The IPv6 protocol 你要是需要 IPv6 就选吧 IrDA (infrared) subsystem support 红外线支持 ,比如无线鼠标或无线键盘 Bluetooth subsystem support 蓝牙支持 Generic IEEE 802.11 Networking Stack 通用无线局域网 (IEEE 802.11 系列协议 )支持 3.6 Device Drivers 设备驱动程序 Gener
16、ic Driver Options 驱动程序通用选项 Select only drivers that dont need compile-time external firmware 只显示那些不需要内核对外部设备的固件作 map 支持的驱动程序 ,除非你有某些怪异硬件 ,否则请选上 Prevent firmware from being built 不编译固件 .固件一般是随硬件的驱动程序提供的 ,仅在更新固件的时候才需要重新编译 .建议选上 Userspace firmware loading support 提供某些内核之外的模块需要的用户空间固件加载支持 ,在内核树之外编译的模块可能
17、需要它 Driver Core verbose debug messages 让驱动程序核心在系统日志中产生冗长的调试信息 ,仅供调试 Memory Technology Devices (MTD) 基于 ARM 平台的 Linux2.6.22 内核编译 7 特殊的存储技术装置 ,如常用于数码相机或嵌入式系统的闪存卡 Plug and Play support 即插即用支持 ,若未选则应当在 BIOS 中关闭 “PnP OS“.这里的选项与 PCI 设备无关 PnP Debug Messages 该选项仅供调试使用 ISA Plug and Play support ISA 设备即插即用支持
18、Block devices 块设备 Network block device support 让你的电脑成为网络块设备的客户端 RAM disk support 内存中的虚拟磁盘 ,大小固定 (由下面的选项决定 ,也可给内核传递“ramdisk_size=参数 “来决定 ),它的功能和代码都比 shmem 简单许多 Default number of RAM disks 默认 RAM disk 的数量 Default RAM disk block size (bytes) 每一个 RAM disk 的默认块大小 ,设为 PAGE_SIZE 的值时效率最高 Initial RAM filesys
19、tem and RAM disk (initramfs/initrd) support 如果启动计算机所必须的模块都在内核里的话可以不选此项 Misc devices 杂项设备 SCSI device support SCSI 设备 SCSI device support 有任何 SCSI/SATA/USB/光纤 /FireWire/IDE-SCSI 仿真设备之一就必须选上 legacy /proc/scsi/ support 基于 ARM 平台的 Linux2.6.22 内核编译 8 一些老的刻录程序可能需要它 SCSI disk support SCSI 硬盘或 U盘 SCSI gener
20、ic support 若有 SCSI 硬盘 /CD-ROM/tape 之外的 SCSI 设备才需要选择 SCSI media changer support 一种 SCSI 备份设备 Network device support 网络设备 Network device support 网络设备支持 ,当然要选啦 PHY device support 数据链路层芯片简称为 MAC 控制器 ,物理层芯片简称之为 PHY,通常的网卡把 MAC和 PHY 的功能做到了一颗芯片中 ,但也有一些仅含 PHY 的 “软网卡 “ Ethernet (10 or 100Mbit) 目前最广泛的 10/100M 网卡 Ethernet (1000 Mbit) 目前已成装机主流的 1000M 网卡 Ethernet (10000 Mbit) 万兆网卡无福消受啦 Token Ring devices 令牌环网设备 Wireless LAN (non-hamradio) 无线 LAN PCMCIA network device support PCMCIA 或 CardBus 网卡 Wan interfaces WAN 接口