当前位置:文档之家› Linux内核裁剪的具体过程和方法

Linux内核裁剪的具体过程和方法

Linux内核裁剪的具体过程和方法
Linux内核裁剪的具体过程和方法

Linux内核裁剪的具体过程和方法

根据部分网摘资料和实际烧录结果进行整理:

内核功能:

在能够实现AT91SAM9260开发板基本功能的基础上,通过串口连接上读卡器后能进行一系列的操作和控制功能等,将读卡器的相应数据进行存储或者通过网络传输到远程的PC 机上。远程PC机能够通过网络方式在开发板上对所连接的读卡器参数进行更新配置,如设置天线接口、设置读卡方式等。(待与读卡器配套使用后再对内核的功能描述进行补充和完善。)

编译环境:

源代码解压完成后,进入linux 2.6.19目录下,使用VI命令编辑Makefile。确定编译环境为arm交叉编译工具与本机的安装路径一致ARCH = arm

CROSS_COMPILE = /opt/timesys/toolchains/armv5l-linux/bin/armv5l-linux-

内核版本是linux 2.6.19 ,开发板的版本是AT91SAM9260 BOARD V1.01 ,主机系统是ubuntu11.10

内核配置:

内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig 等等,它们的功能都是一样的,区别应该从名字上就能看出来,只有make oldconfig是指用系统当前的设置(./.config)作为缺省值。这里用的是make menuconfig。需要牢记:不必要的驱动越多,内核就越大,不仅运行速度慢、占用内存多,在少数情况下、还会引发其他问题。具体步骤如下:首先确定shell是bash。然后$make menuconfig。有一些默认的符号其含义如下:"[ ]"表示该选项有两种选择方式;[*] 直接编译进内核;[] 不编译;"<>"表示该选项有三种选择方式; <*>直接编译进内核; 编译成模块形式,但不编译进内核;<> 不编译。

在menuconfig中配置:(详细介绍内核配置选项及删改情况)

第一部分:

Code maturity level options ---> 代码成熟等级选项

[]Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动。当内核中含有不成熟的代码或驱动,需要选上,主要用在测试阶段。(产品成熟后,再去掉此选项)这里选上

第二部分:

General setup ---> 通用的一些选项

2.1 () Local version - append to kernel release 在内核版本后追加的字符串,字符串不得超过64字节

2.2 [ ] Automatically append version information to the version string 自动在内核版本后追加的字符串,这个选项是与git库相关的,通常可以不选这里不选

2.3 [ ] Support for paging of anonymous memory (swap) 支持交换内存,没有特殊要求请选择这里不选

2.4 [*] System V IPC 进程间通信(IPC)支持,许多程序需要这个功能.必选,

除非有自己的其他要求这里选上

2.5 [ ] IPC Namespaces IPC命名空间支持,不确定可以不选这里不选

2.6 [*] POSIX Message Queues POSIX消息队列,通常需要配置这里选上

2.7 [ ] BSD Process Accounting 可以将行程资料记录下来,通常建议配置《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

2.8 [ ] Export task/process statistics through netlink (EXPERIMENTAL) 通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

2.9 [ ] UTS Namespaces UTS名字空间支持,不确定可以不选这里不选

2.10 [*] Auditing support 审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计这里选上

2.11 <*> Kernel .config support 把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息这里选上

2.12 [*] Enable access to .config through /proc/config.gz 允许通过/proc/config.gz访问内核的配置信息这里选上

2.13 [ ] Kernel->user space relay support (formerly relayfs) 在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口这里不选

2.14 () Initramfs source file(s) initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白这里不选

2.15 [*] Optimize for size (Look out for broken compilers!) 编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码这里选上

2.16 Configure standard kernel features (for small systems) --->配置标准的内核特性(为小型系统)

2.16.1 --- Configure standard kernel features (for small systems) 配置标准的内核特性(为小型系统)

2.16.2 --- Load all symbols for debugging/kksymoops 装载所有的调试符号表信息,仅供调试时选择

2.16.3 [ ] Do an extra kallsyms pass 除非你在kallsyms中发现了bug并需要报告这个bug才打开该选项这里不选

第三部分:

Loadable module support --->提供系统模块的选择配置

3.1 [*] Enable loadable module support 启用模块支持这个选项可以让你的

内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了,否在无法启动系统。这里选上

3.2 [*] Module unloading 提供模块卸载功能。如果模块不需要卸载,可以不选择本选项这里选上

3.3 [ ] Forced module unloading 强迫模块卸载这里不选

3.4 [ ] Module versioning support 模块版本,如果选中,则该模块可以支持多种版本的内核这里不选

3.5 [ ] Source checksum for all modules 源文件的校验和,可以不选这里不选

3.6 [*] Automatic kernel module loading 自动装载模块的功能这里选上

第四部分:

Block layer --->该菜单选项(Block layer)主要提供系统调度方式的选择

4.1 --- Enable the block layer

4.2 [ ] Support for tracing block io actions 支持追踪块I/O调度的动作这里不选

4.3 IO Schedulers ---> 选择I/O调度方式

4.3.1 <*> Anticipatory I/O scheduler 占先式调度方式这里选上

4.3.2 < > Deadline I/O scheduler 比Anticipatory更为小巧,在数据吞吐量非常大的数据库系统中表现得更有优势这里不选(在后期实验后再定)

4.3.3 < > CFQ I/O scheduler 桌面系统适用,采用平均分配策略的调度

4.3.4 Default I/O scheduler (Anticipatory) ---> 选择默认的调度方式

4.3.4.1 (X) Anticipatory 这里选上

4.3.4.2 ( ) No-op 这里不选

第五部分:

System Type ---> 主要提供处理器型号及其特性的配置

5.1 ARM system type (Atmel AT91) ---> 从中选择适合的处理器型号,如我们选择Samsung S3C2410。当然下面一系列选项都是仅针对S3C2410处理器而设计的。它们的配置文件在arch/arm/mach-s3c2410/Kconfig文件中

5.1.5 (X) Atmel AT91 选择Atmel AT91系列,前面选项和后面选项都不选

5.2 Atmel AT91 System-on-Chip ---> 选择Atmel AT91系列芯片

5.2.1 Atmel AT91 Processor (AT91SAM9260) --->

5.2.1.2 (X) AT91SAM9260 《针对读卡器项目选择》,其他选项都不选

5.2.2 [*] Atmel AT91SAM9260-EK Evaluation Kit 这里选上

5.2.3 [ ] Enable DataFlash Card support 这里不选

5.2.4 [ ] Enable 16-bit data bus interface to NAND flash 这里不选

5.2.5 [*] Programmable Clocks 这里选上

5.3 [*] Support ARM926T processor 这里选上

5.4 [ ] Support Thumb user binaries 如果希望内核支持用户空间的thumb程序就选择该选项这里不选

5.5 [ ] Disable I-Cache (I-bit) 这里不选

5.6 [ ] Disable D-Cache (C-bit) 用于开启或关闭I-Cache 这里不选

5.7 [ ] Force write through D-cache 强制通过D-Cache写入这里不选

5.8 [ ] Round robin I and D cache replacement algorithm 这里不选

第六部分:

Bus support ---> 主要选择总线PCCARD接口支持,大多数嵌入式系统可以不选择。

6.1 PCCARD (PCMCIA/CardBus) support ---> 总线PCCARD接口支持《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

第七部分:

Kernel Features ---> 主要选择内核特性。这里针对ARM平台,一般可以采用默认值。

7.1 [ ] Preemptible Kernel (EXPERIMENTAL) 抢占式内核。这是2.6内核提供的新特性,建议使用这里不选

7.2 [ ] Dynamic tick timer 动态tick定时器这里不选

7.3 [ ] Use the ARM EABI to compile the kernel 使用ARM EABI编译内核《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

7.4 Memory model (Flat Memory) ---> 这里只有Flat Memory可以选择

7.4.1 (X) Flat Memory 这里选上

7.5 [ ] 64 bit Memory and IO resources (EXPERIMENTAL) 这里不选

7.6 [ ] Timer and CPU usage LEDs 《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

第八部分:

Boot options --->主要选择内核启动选项,包括系统启动时传递的内核命令行参数

8.1 (0x0) Compressed ROM boot loader base address zImage存放的基地址

8.2 (0x0) Compressed ROM boot loader BSS address BSS地址

8.3 (mem=64M console=ttyS0,115200 root=/dev/mtdblock0) Default kernel

8.4 [ ] Kernel Execute-In-Place from ROM 从ROM中直接运行内核,该内核使用

make xipImage编译这里不选

8.5 (0x00080000) XIP Kernel Physical Location (NEW) 选择XIP后,内核存放的物理地址

第九部分:

Floating point emulation ---> 主要提供和浮点相关选项。因为Linux本身不支持浮点运算,所以即使系统中使用了支持浮点运算的协处理器,也必须从中选择一种算法实现浮点。

9.1 --- At least one emulation must be selected

9.2 [*] NWFPE math emulation 在内核中使用NWFPE浮点模拟这里选上

9.3 [ ] Support extended precision 支持扩展精度这里不选

9.4 [ ] FastFPE math emulation (EXPERIMENTAL) 在内核中使用FastFPE浮点模拟,它的速度比NWFPE快这里不选

9.5 [ ] VFP-format floating point maths 这里不选

第十部分:

Userspace binary formats --->提供在用户空间使用的二进制文件格式选择

10.1 [*] Kernel support for ELF binaries 提供ELF格式支持,这个要选择这里选上

10.2 < > Kernel support for a.out and ECOFF binaries 提供a.out和ECOFF格式支持,被ELF取代这里不选

10.3 < > Kernel support for MISC binaries 提供其他一些格式支持,如果使用类似Linux下的DOS模拟器这类的软件,请选择该选项这里不选

10.4 < > RISC OS personality 这里不选

第十一部分:

Power management options ---> 电源管理选项

11.1 [ ] Power Management support 提供电源管理支持《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

11.2 < > Advanced Power Management Emulation 高级电源管理的支持,笔记本中常用这里不选

第十二部分:

Networking ---> 提供和网络相关的一些配置选择,内容比较多。

12.1 [*] Networking support 网络支持这里选上

12.2 Networking options ---> 根据实际情况选择需要的网络协议

12.2.1 [ ] Network packet debugging 网络数据包调试,可以不选这里不选

12.2.2 <*> Packet socket 数据包协议支持,如需要tcpdump等应用,需要选中该选项这里选上

12.2.3 [ ] Packet socket: mmapped IO 这里不选

12.2.4 <*> Unix domain sockets UNIX主机用来存取网络资源的标准支持,多数程序需要它这里选上

12.2.5 < > Transformation user configuration interface 支持使用本地软件进行IPsec用户配置接口配置这里不选

12.2.6 [ ] Transformation sub policy support (EXPERIMENTAL) 这里不选

12.2.7 <*> PF_KEY sockets PF_KEY套接字协议,如果使用IPsec就必须选择该选项。一般可以不使用该选项这里选上

12.2.8 [*] TCP/IP networking TCP/IP网络协议这里选上

12.2.9 [ ] IP: multicasting IP多播技术,选中这里不选

12.2.10 [ ] IP: advanced router IP高级路由这里不选

12.2.11 [*] IP: kernel level autoconfiguration 允许内核启动时利用BOOTP 或者RARP来设置设备的IP和路由表,配置NFS时必须选择!!这里选上

12.2.12 [*] IP: DHCP support DHCP协议这里选上

12.2.13 [ ] IP: BOOTP support BOOTP协议这里不选

12.2.14 [ ] IP: RARP support RARP协议这里不选

12.2.15 < > IP: tunneling 隧道传输支持这里不选

12.2.16 < > IP: GRE tunnels over IP 使计算机能够压缩IPv4或IPv6的数据,并发送到另一协议中,不用选这里不选

12.2.17 [ ] IP: ARP daemon support (EXPERIMENTAL) 这里不选建立一块缓存以保存物理地址到IP地址的映射,不用选这里不选

12.2.18 [ ] IP: TCP syncookie support (disabled per default) 可避免网络上的SYN Flooding的DoS攻击这里不选

12.2.19 < > IP: AH transformation 提供对Ipsec AH的支持这里不选

12.2.20 < > IP: ESP transformation 提供对Ipsec ESP的支持这里不选

12.2.21 < > IP: IPComp transformation 提供对Ipsec IPComp的支持这里不选

12.2.22 < > IP: IPsec transport mode 这里不选

12.2.23 < > IP: IPsec BEET mode 这里不选

12.2.24 <*> INET: socket monitoring interface 提供对TCP套接字的支持这里选上

12.2.25 [ ] TCP: advanced congestion control ---> TCP高级阻塞控制这里不选

12.2.25.1 --- TCP: advanced congestion control TCP阻塞控制,在上级菜单选中后进入下级菜单中还有BIC-TCP、H-TCP、TCP-Hybla和TCP Vegas等算法可供选择

12.2.26 < > The IPv6 protocol IPv6协议支持《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

12.2.27 [ ] Security Marking 这里不选

12.2.28 [ ] Network packet filtering (replaces ipchains) ---> 网络数据包过滤,如果用做网关,必须选择《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

12.2.29 DCCP Configuration (EXPERIMENTAL) ---> 数据报拥塞控制协议,可不选《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

12.2.30 SCTP Configuration (EXPERIMENTAL) ---> 流控制传输协议,可不选《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

12.2.31 TIPC Configuration (EXPERIMENTAL) ---> 透明相互处理通信协议,可不选《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

12.2.32 < > Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) 提供ATM(异步传输模式)支持,可不选《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

12.2.33 < > 802.1d Ethernet Bridging 802.1d以太网桥,一般应用可以不选这里不选

12.2.33 < > 802.1Q VLAN Support 802.1Q VLAN支持,如果用做防火墙等产品时需要选中该选项这里不选

12.2.34 < > DECnet Support DECnet支持,多用于现在的Compaq设备中,一般可不选这里不选

12.2.35 < > ANSI/IEEE 802.2 LLC type 2 Support IEEE 802.2 LLC2型协议(Logical Link Control),可不选这里不选

12.2.36 < > The IPX protocol IPX协议,Novell使用的通信协议,可不选《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选12.2.37 < > Appletalk protocol support 与苹果计算机数据进行存储时使用《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

12.2.38 < > CCITT X.25 Packet Layer (EXPERIMENTAL) X.25 协议支持(CCITT国际电报电话咨询委员会)这里不选

12.2.39 < > LAPB Data Link Driver (EXPERIMENTAL) 对802.1d Ethernet Bridging的扩充这里不选

12.2.40 < > Acorn Econet/AUN protocols (EXPERIMENTAL) 早期的一种网络协议,速度较慢,不用选《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

12.2.41 < > WAN router 无线路由器这里不选

12.2.42 QoS and/or fair queueing ---> 当内核通过网络设备来传送包时,必须

决定每个包的顺序。如果不选中,内核会采用标准的FIFO方式;如果选中,则采用下级菜

单中的一种算法,例如CBQ、HTB、HFSC、ATM、PRIO、RED、SFQ、TEQL、TBF、GRED等《在

读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

12.2.43 Network testing ---> 网络测试《在读卡器项目中没用到此项功能,

其子选项以后再进行相关说明》这里不选

12.3 [ ] Amateur Radio support ---> 业余无线电支持,一般不需要这

里不选

12.4 < > IrDA (infrared) subsystem support ---> 红外子系统支持,如果系统

中没有相关设备,不用选择这里不选

12.5 < > Bluetooth subsystem support ---> 蓝牙子系统支持,如果系统中没

有相关设备,不用选择这里不选

12.6 < > Generic IEEE 802.11 Networking StackGeneric IEEE 802.11 Networking Stack 通用的IEEE 802.11网络协议栈支持《在读卡器项目中没用到此项功能,其子选

项以后再进行相关说明》这里不选

第十三部分:

Device Drivers ---> 设备驱动

13.1 Generic Driver Options ---> 通用驱动选项,默认值即可

13.1.1 [*] Select only drivers that don't need compile-time external firmware 没有特别的固件需要支持,请选择该项这里选上

13.1.2 [*] Prevent firmware from being built 该选项能够防止重新构建固

件,请选择这里选上

13.1.3 < > Userspace firmware loading support 提供从用户空间加载固件的支

持这里不选

13.2 Connector - unified userspace <-> kernelspace linker --->用户空间和内核空间

连接器

《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

13.3 Memory Technology Devices (MTD) ---> MTD设备支持,嵌入式系统使用。

在给内核MTD重新分区之前,有一点应该注意,2.6.16(含)以前内核与2.6.17(含)以后内

核的MTD重新分区方法是不一样的,前者是需要增加新的分区信息,而后者源代码初始文件

中已含分区信息,需要的是修改分区信息。

13.3.1 <*> Memory Technology Device (MTD) support MTD支持这

里选上

13.3.2 [ ] Debugging 调试功能(此选项选上后才有下一个选项)这里不

13.3.3 < > MTD concatenating support 连接多个MTD设备,例如使用JFFS2

文件系统管理多片Flash的情形。FS2410上只有1片Nand Flash,可以不选这

里不选

13.3.4 [*] MTD partitioning support Flash分区支持,建议选中(在实

践过程中,如果不选会导致系统无法完成正常的启动)这里选上

13.3.5 < > RedBoot partition table parsing 使用RedBoot解析Flash分区表,

如果需要读取这个分区表的信息,选中本项(此项选上后,才有后续3个选项)这

里不选

13.3.6 [*] Command line partition table parsing 允许通过内核命令行

传递MTD分区表信息这里选上

13.3.7 < > ARM Firmware Suite partition parsing 使用AFS分区信息这里

不选

13.3.8 <*> Direct char device access to MTD devices 该选项可以将系

统中的MTD设备看做字符设备进行读/写这里选上

13.3.9 <*> Caching block device access to MTD devices 文件系统挂载

后,模拟块设备进行访问。常用于只读文件系统。如果是DiskOnChip请使用NFTL方式

这里选上

13.3.10 < > FTL (Flash Translation Layer) support 提供Flash翻译层支持,

可以不选这里不选

13.3.11 < > NFTL (NAND Flash Translation Layer) support NAND Flash

翻译层支持,可以不选。上面两个选项用于PCMCIA较多,或者DiskOnChip 这里不选

13.3.12 < > INFTL (Inverse NAND Flash Translation Layer) support 提供

INFTL支持,DiskOnChip使用这里不选

13.3.13 < > Resident Flash Disk (Flash Translation Layer) support 提

供RFD支持,可以为嵌入式系统提供类似BIOS的功能这里不选

13.3.14 < > NAND SSFDC (SmartMedia) read only translation layer 这里

不选

13.3.15 RAM/ROM/Flash chip drivers ---> RAM/ROM/Flash驱动

13.3.15.1 < > Detect flash chips by Common Flash Interface (CFI) probe

通过闪存接口检测内存,可以不使用(此项选上后才有第三项)这里不选

13.3.15.2 <*> Detect non-CFI AMD/JEDEC-compatible flash chips 检测非CFI AMD或JEDEC兼容的Flash芯片这里选上

13.3.15.3 [*] Flash chip driver advanced configuration options 一

些高级选项。包括芯片位数和片数(此项选上后才有后续的三项)这里选上

13.3.15.4 Flash cmd/query data swapping (NO) --->选择大小端

13.3.15.4.1 (X) NO (前面带X表示选中)

13.3.15.4.2 ( ) BIG_ENDIAN_BYTE 大端这里不选

13.3.15.4.3 ( ) LITTLE_ENDIAN_BYTE 小端这里不选

13.3.15.5 [ ] Specific CFI Flash geometry selection 指定CFI Flash信息

(此项选上后才有后续的10项)《在读卡器项目中没用到此项功能,其后选项以后再进

行相关说明》这里不选

13.3.15.6 [ ] Protection Registers aka one-time programmable (OTP) bits Flash的读/写保护寄存器设置这里不选

13.3.15.7 < > Support for Intel/Sharp flash chips 提供的命令集供

Intel/Sharp Flash使用这里不选

13.3.15.8 < > Support for AMD/Fujitsu flash chips 供AMD/Fujitsu Flash使用

这里不选

13.3.15.9 < > Support for ST (Advanced Architecture) flash chips 供

ST Flash使用这里不选

13.3.15.10 < > Support for RAM chips in bus mapping 允许通过总线映射访问RAM 这里不选

13.3.15.11 < > Support for ROM chips in bus mapping 允许通过总线映射访

问ROM 这里不选

13.3.15.12 < > Support for absent chips in bus mapping 支持虚拟的MTD设备

这里不选

13.3.15.13 [ ] Older (theoretically obsoleted now) drivers for non-CFI chips 如果使用的是一些已经过时的芯片,请选中它这里不选

13.3.16 Mapping drivers for chip access --->

13.3.16.1 [ ] Support non-linear mappings of flash chips 这里不选

13.3.16.2 < > CFI Flash device in physical memory map 《在读卡器项目中没用到此

项功能,其后选项以后再进行相关说明》这里不选

13.3.16.3 < > JEDEC Flash device mapped on impA7 这里不选

13.3.16.4 < > Map driver for platform device RAM (mtd-ram) 这里不选

13.3.17 Self-contained MTD device drivers ---> 这组选项是用于自身包含的MTD

设备驱动,不常用《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这

里不选

13.3.18 NAND Flash Device Drivers --->NAND Flash驱动相关选项

13.3.18.1 <*> NAND Device Support 提供NAND Flash设备支持这里选上

13.3.18.2 [*] Verify NAND page writes NAND页写校验功能,可以不使用这

里选上

13.3.18.3 [ ] NAND ECC Smart Media byte order 这里不选

13.3.18.4 < > DiskOnChip 2000, Millennium and Millennium Plus (NAND reimple

其他一些NAND Flash的实现(此项选上后,才有后续2个选项)《在读卡器项目中没

用到此项功能,其后选项以后再进行相关说明》这里不选

13.3.18.5 [*] Support for NAND Flash / SmartMedia on AT91 这里选

13.3.18.6 < > Support for NAND Flash Simulator 这里不选

13.3.19 OneNAND Flash Device Drivers ---> OneNAND相关驱动

13.3.19.1 < > OneNAND Device Support OneNAND相关驱动(此项选上才有随

后4个选项)《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不

选13.4 Parallel port support ---> 并口支持,嵌入式系统中几乎不使用并口,

可以不选《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》

这里不选

13.5 Plug and Play support ---> 即插即用支持。嵌入式系统中可以不选

这里不选

13.6 Block devices ---> 块设备驱动,这部分内容要重视

13.6.1 < > Loopback device support Loopback设备支持,用来加载

ISO或软盘镜像文件《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》

这里不选

13.6.2 < > Network block device support 网络块设备支持,作为网络客户端时

需要选择这里不选(待以后试验后再添加)

13.6.3 < > RAM disk support RAM磁盘支持。有关RAMDISK的内容我们将在后

面详细介绍这里不选

13.6.4 [ ] Initial RAM filesystem and RAM disk (initramfs/initrd) support 初始化RAM文件系统和RAMDISK,需要设置这里不选

13.6.5 < > Packet writing on CD/DVD media 向CD/DVD写数据,

刻光盘才使用,若无此设备可以不选(此项选上才有随后2个选项)《在读卡器项

目中没用到此项功能,其后选项以后再进行相关说明》这里不选

13.6.6 < > ATA over Ethernet support 提高对以太网块设备的ATA支持,

AoE通过虚拟出IDE硬件设备来实现相关的存储功能,能够达到 5MB/s。可不选这

里不选

13.7 SCSI device support ---> SCSI设备支持,若无此设备可以不选

这里不选

13.7.1 < > RAID Transport Class 这里不选

13.7.2 < > SCSI device support 《在读卡器项目中没用到此项功能,其后选项以后

再进行相关说明》这里不选

13.8 Serial ATA (prod) and Parallel ATA (experimental) drivers ---》

13.8.1 < > ATA device support 这里不选

13.9 Multi-device support (RAID and LVM) ---> RAID(磁盘阵列)和LVM(逻

辑卷管理程序)支持,嵌入式系统中很少用,若无此设备可以不选(此项选上后才有随后的

2个选项)《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这

里不选

13.10 Fusion MPT device support ---> Fusion MPT设备支持(无后续选项)

13.11 IEEE 1394 (FireWire) support ---> IEEE 1394设备支持(无后续选项)13.12 I2O device support --->I2O设备支持(无后续选项)

13.13 Network device support ---> 网络设备支持。包括硬件设备和部分软件协议

13.13.1 [*] Network device support 网络设备支持这里选上

13.13.2 < > Dummy net driver support 如果使用PPP,SLIP一定要选择这里不选

13.13.3 < > Bonding driver support 绑定多网卡,单网卡不选这里不选

13.13.4 < > EQL (serial line load balancing) support 同时连接多个网络需要选择不选

13.13.5 < > Universal TUN/TAP device driver support TUN/TAP设备驱动支持这里不选

13.13.6 PHY device support ---> PHY设备支持

13.13.6.1 < > PHY Device support and infrastructure (此项选上以后才有后续的选项)《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.13.7 Ethernet (10 or 100Mbit) ---> 10M/100M网络芯片驱动支持

13.13.7.1 [*] Ethernet (10 or 100Mbit) 10M/100M网络芯片驱动支持这里选上

13.13.7.2 <*> Atmel MACB support 这里选上

13.13.7.3 [ ] Atmel MACB TX buffers in internal SRAM 这里不选

13.13.7.4 < > SMC 91C9x/91C1xxx support 这里不选

13.13.7.5 <*> DM9000 support DM9000网络芯片驱动在这里这里选上(开发板中没有用到DM9000芯片,默认不选。但在读卡器项目中需要用到DM9000,故选上)

13.13.8 Ethernet (1000 Mbit) ---> 1000M网络芯片驱动支持没有后续选项

13.13.9 Ethernet (10000 Mbit) ---> 10000网络芯片驱动支持没有后续选项

13.13.10 Token Ring devices ---> 令牌环设备支持没有后续选项

13.13.11 Wireless LAN (non-hamradio) --->无线局域网支持,如Atmel的at76c50x 芯片

《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

13.13.12 Wan interfaces ---> 无线网接口,包括HDLC、SYNCPPP等《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

13.13.13 < > PPP (point-to-point protocol) support PPP协议支持《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

13.13.14 < > SLIP (serial line) support 一个在串行线上(例如电话线)传输IP 数据报的TCP/IP协议《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

13.13.15 < > Traffic Shaper (OBSOLETE) 这里不选

13.13.16 <*> Network console logging support (EXPERIMENTAL) 网络远程命令支持。远程登录用。(此项选项选上,才有后续的2项)这里选上

13.13.17 [ ] Netpoll support for trapping incoming packets 这里不选

13.13.18 [ ] Netpoll traffic trapping 追踪包的,可能黑客用这里不选

13.14 ISDN subsystem ---> ISDN设备支持,现在不常用《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.15 Input device support ---> 输入设备支持,包括鼠标、键盘、触摸屏等《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.16 Character devices --->字符设备支持,非常重要

13.16.1 [ ] Support for binding and unbinding console drivers 虚拟终端是通过控制台驱动程序与物理终端相结合的,但在某些系统上可以使用多个控制台驱动程序(如framebuffer控制台驱动程序),该选项使得你可以选择其中之一控制台的驱动。要换控制台驱动的话选这个这里不选

13.16.2 [ ] Non-standard serial port support 非标准串口《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

13.16.3 Serial drivers ---> 标准串口,需要选中

13.16.3.1 < > 8250/16550 and compatible serial support 8250/16550和其他兼容串口支持,大多数串口属于这种《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

13.16.3.2 [ ] SPE serial driver for AT91 这里不选

13.16.3.3 [*] AT91 / AT32 on-chip serial port support 这里选上

13.16.3.4 [*] Support for console on AT91 / AT32 serial port 这里选上

13.16.3.5 [ ] Install as device ttyATn instead of ttySn 这里不选

13.16.4 [ ] Legacy (BSD) PTY support 早期PTY设备支持,PTY是假终端,现在很少用这里不选

13.16.5 IPMI ---> IPMI (Intelligent Platform Management Interface),IPMI 意义是智能平台管理接口《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.16.6 Watchdog Cards --->提供看门狗支持

13.16.6.1 [*] Watchdog Timer Support 看门狗定时器支持这里选上

13.16.6.2 [ ] Disable watchdog shutdown on close 用于禁止看门狗停止

这里不选

13.16.6.3 <*> Software watchdog 软件看门狗这里选上

13.16.6.4 <*> MAX706 watchdog 这里选上

13.16.7 [*] Hardware Random Number Generator Core support 这

里选上

13.16.8 < > /dev/nvram support 这里不选

13.16.9 < > Double Talk PC internal speech card support DoubleTalk PC设备驱

动支持,若无此设备可以不选这里不选

13.16.10 < > Siemens R3964 line discipline 西门子R3964专用,常用于PLC 不

13.16.11 Ftape, the floppy tape device driver --->磁带驱动(没有后续选项)这

里不选

13.16.12 < > RAW driver (/dev/raw/rawN) (OBSOLETE) 已经过时这里

不选

13.16.13 TPM devices ---> TMP设备驱动《在读卡器项目中没用到此项功能,其子

选项以后再进行相关说明》这里不选

13.16.14 [ ] Analog-to-Digital Converter support for AT91SAM9260 《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这

里不选

13.16.15 [*] AT91 GPIO driver 这里选上

13.17 I2C support --->I2C总线支持

13.17.1 <*> I2C support I2C总线支持这里选上

13.17.2 <*> I2C device interface I2C设备接口,允许用户空间的程序通过

/dev/i2c-*设备文件使用I2C总线这里选上

13.17.3 I2C Algorithms ---> 《在读卡器项目中没用到此项功能,其子选项以后再

进行相关说明》这里不选

13.17.4 I2C Hardware Bus support ---> (此项不知是否跟实时时钟关联)

13.17.4.1 <*> Atmel AT91 I2C Two-Wire interface (TWI) 这里选上

13.17.4.2 < > OpenCores I2C Controller《在读卡器项目中没用到此项功能,其后

选项以后再进行相关说明》这里不选

13.17.4.3 < > Parallel port adapter (light) 这里不选

13.17.4.4 < > I2C/SMBus Test Stub 这里不选

13.17.4.5 < > PCA9564 这里不选

13.17.4.6 < > PCA9564 on an ISA bus 这里不选

13.17.5 Miscellaneous I2C Chip support ---> 各种I2C芯片的支持

13.17.5.1 < > Dallas Semiconductor DS1337 and DS1339 Real Time Clock 这里不选

13.17.5.2 < > Maxim/Dallas Semiconductor DS1374 Real Time Clock 这里不选

13.17.5.3 < > EEPROM reader 这里不选

13.17.5.4 < > Philips PCF8574 and PCF8574A 这里不选

13.17.5.5 < > Philips PCA9539 16-bit I/O port 这里不选

13.17.5.6 < > Philips PCF8591 这里不选

13.17.5.7 < > Maxim MAX6875 Power supply supervisor 这里不选

13.17.5.8 <*> I2C EEPROM reader/writer 这里选上

13.17.5.9 (12) EEPROM data address bits length

13.17.6 [ ] I2C Core debugging messages 这里不选

13.17.7 [ ] I2C Algorithm debugging messages 这里不选

13.17.8 [ ] I2C Bus debugging messages 这里不选

13.17.9 [ ] I2C Chip debugging messages 这里不选

13.18 SPI support ---> SPI总线支持《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.19 Dallas's 1-wire bus ---> Dallas’s 1-wire总线支持《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.20 Hardware Monitoring support --->硬件监视当前主板大多都有一个监控硬件健康的设备用于监视温度/电压/风扇转速等,另外,该功能还需要I2C的支持《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.21 Misc devices ---> 其他一些设备驱动

13.21.1 TI Flash Media interface support (EXPERIMENTAL) 这里不选

13.22 LED devices ---> LED设备<在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.23 Multimedia devices ---> 多媒体设备《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.24 Graphics support ---> 图形设备,设置Frame Buffer、Logo、LCD背光等《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.25 Sound --->声音设备支持,包括ALSA、OSS驱动《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.26 USB support ---> USB驱动程序《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.27 < > MMC/SD card support ---> MMC/SD驱动支持《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

13.28 Real Time Clock --->实时时钟(所有的PC机主板都包含一个电池动力的实时时钟芯片,以便在断电后仍然能够继续保持时间,RTC通常与CMOS集成在一起,因此BIOS 可以从中读取当前时间)

13.28.1 <*> RTC class 通用RTC类支持,选中此项后你就可以在操作系统中使用一个或多个RTC设备(你还必须从下面启用一个或多个RTC接口) 这里选上

13.28.2 [*] Set system time from RTC on startup 系统启动时使用从指定的RTC 设备中读取的时间来设定系统时间,通常这将有助于避免不必要的文件系统检测程序(fsck)的运行,建议选择这里选上

13.28.3 (rtc0) The RTC to read the time from 指定具体从哪个RTC设备中读取时间

13.28.4 [ ] RTC debug support 仅供调试使用这里不选

13.28.5 <*> sysfs 允许通过sysfs接口使用RTC,允许多个RTC设备,也就是/sys/class/rtc/rtc0~N 这里选上

13.28.6 <*> proc 允许通过proc接口使用RTC,仅允许一个RTC设备,也就是/proc/driver/rtc 这里选上

13.28.7 <*> dev 允许通过dev接口使用RTC,允许多个RTC设备,也就是"udev"设置的/dev/rtc0~N,建议你建立一个指向其中之一的软连接/dev/rtc,某些程序(比如hwclock)需要使用/dev/rtc 这里选上

13.28.8 [*] RTC UIE emulation on dev interface 如果底层rtc芯片驱动没有提供RTC_UIE就仿真一个RTC_UIE.那些请求将产生每秒一次的更新请求以用来同步[这个选项的意思我也搞不清楚究竟时啥意思,翻译的也可能有误] 这里选上

13.28.9 < > Xicor/Intersil X1205 这里不选

13.28.10 < > Dallas/Maxim DS1307 and similar I2C RTC chips 这里不选

13.28.11 < > Dallas DS1553 这里不选

13.28.12 < > Intersil 1208 这里不选

13.28.13 < > Dallas/Maxim DS1672 这里不选

13.28.14 < > Dallas DS1742 这里不选

13.28.15 <*> Philips PCF8563/Epson RTC8564 这里选上

13.28.16 < > Philips PCF8583 这里不选

13.28.17 < > Ricoh RS5C372A/B 这里不选

13.28.18 < > ST M48T86/Dallas DS12887 这里不选

13.28.19 < > Test driver/device 这里不选

13.28.20 < > EM Microelectronic V3020 这里不选

13.29 CAN support ---> CAN总线支持《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

第十四部分:

file systems --->文件系统

14.1 <*> Second extended fs support 标准的Linux文件系统,建议将这种文件系统编译进内核。这里选上。

14.2 [ ] Ext2 extended attributes Ext2文件系统的结点名称、属性的扩展支持这里不选

14.3 [ ] Ext2 execute in place support程序在写入存储介质时就已经分配好运行时的地址,因此不需要载入内存即可在芯片内执行,一般仅在嵌入式系统上才有这种设备这里不选

14.4 < > Ext3 journalling file system support 如果你熟悉Redhat Linux,你一定会习惯Ext3文件系统。这里不选。

14.5 < > Ext4dev/ext4 extended fs support尚处于开发状态的Ext4 这里不选

14.6 < > Reiserfs support,如果你熟悉Suse Linux,你一定会习惯Reiserfs文件系统。这里不选。

14.7 < > JFS filesystem support,JFS是IBM公司设计用于AIX系统上的文件系统。后来这一文件系统也能应用于Linux系统。这里不选。

14.8 < > XFS filesystem support,XFS是SGI公司为其图形工作站设计的一种文件系统,后来这一文件系统也能应用于Linux系统。这里不选。

14.9 < > GFS2 file system support一种用于集群的文件系统。这里不选。

14.10 < > OCFS2 file system support 一种用于集群的文件系统这里不选。

14.11 < > Minix fs support,Minix可能是最早的Linux系统所使用的文件系统。后来被Ext2文件系统所取代。这里不选。

14.12 < > ROM file system support,内存文件系统的支持。除非你是嵌入式系统的开发者,明确知道你要干什么,否则不要选这一项。这里不选。

14.13 [*] Inotify file change notification support新式的文件系统的变化通知机制,简洁而强大,用于代替老旧的Dnotify 这里选上

14.14 [*] Inotify support for userspace 用户空间的Inotify支持这里选上

14.15 [ ] Quota support,配额支持。即限制某个用户或者某组用户的磁盘占用空间。这里不选。

14.16 <*> Kernel automounter support,内核自动加载远程文件系统的支持。这里选上。

14.17 <*> Kernel automounter version 4 support (also supports v3),新的(第四版)的内核自动加载远程文件系统的支持,也支持第三版。这个功能可以让你使用其它版本的内核模块,由于我自己写一些模块,所以我会用到这个选项,因为内核更新太快了,我的头文件更新根本赶不上内核的更新。这里选上。

14.18 < > Filesystem in Userspace support FUSE允许在用户空间实现一个文件系统,如果你打算开发一个自己的文件系统或者使用一个基于FUSE的文件系统就选吧。这里不选

14.19 CD-ROM/DVD Filesystems --->CD-ROM/DVD文件系统《在读卡器项目中没

用到此项功能,其子选项以后再进行相关说明》这里不选

14.20 DOS/FAT/NT Filesystems --->DOS/Windows的文件系统

14.20.1 <*> MSDOS fs support古老的MSDOS文件系统这里不选

14.20.2 <*> VFAT (Windows-95) fs support从Win95开始使用的VFAT文件系统(选上以后才能出现往后的2个选项)这里不选

14.20.3 (437) Default codepage for FAT 默认代码页

14.20.4 (iso8859-1) Default iocharset for FAT 默认字符集

14.20.5 < > NTFS file system support从WinNT开始使用的NTFS文件系统这里不选

14.21 Pseudo filesystems --->伪文件系统

14.21.1 [*] Virtual memory file system support (former shm fs)tmpfs文件系统(以前叫shm[共享内存]文件系统)支持(选上以后才能出现往后的1个选项)这里选上

14.21.2 [*] Tmpfs POSIX Access Control Lists POSIX ACL(访问控制列表)支持,可以更精细的针对每个用户进行访问控制,需要外部库和程序的支持这里选上

14.21.3 < > Userspace-driven configuration filesystem configfs是用户空间驱动的文件系统,提供与sysfs相反的功能这里不选

14.22 Miscellaneous filesystems --->非主流的杂项文件系统

14.22.1 < > ADFS file system support (EXPERIMENTAL) ADFS文件系统这里不选

14.22.2 < > Amiga FFS file system support (EXPERIMENTAL) 这里不选

14.22.3 < > Apple Macintosh file system support (EXPERIMENTAL) 这里不选

14.22.4 < > Apple Extended HFS file system support 这里不选

14.22.5 < > BeOS file system (BeFS) support (read only) (EXPERIMENTAL) 这里不选

14.22.6 < > BFS file system support (EXPERIMENTAL) 这里不选

14.22.7 < > EFS file system support (read only) (EXPERIMENTAL) 这里不选

14.22.8 <*> YAFFS2 file system support YAFFS2文件系统这里选上

14.22.9 --- 512 byte / page devices

14.22.10 [ ] Lets Yaffs do its own ECC 这里不选

14.22.11 --- 2048 byte (or larger) / page devices

14.22.12 [*] Autoselect yaffs2 format 这里选上

14.22.13 [ ] Disable lazy loading 这里不选

14.22.14 (10) Reserved blocks for checkpointing

14.22.15 [ ] Turn off wide tnodes 这里不选

14.22.16 [*] Force chunk erase check 这里选上

14.22.17 [*] Cache short names in RAM 这里选上

14.22.18 < > Journalling Flash File System (JFFS) support 这里不选

14.22.19 <*> Journalling Flash File System v2 (JFFS2) support 这里选上

14.22.20 (0) JFFS2 debugging verbosity (0 = quiet, 2 = noisy)

14.22.21 [*] JFFS2 write-buffering support 这里选上

14.22.22 [*] JFFS2 summary support (EXPERIMENTAL) 这里选上

14.22.23 [ ] JFFS2 XATTR support (EXPERIMENTAL) 这里不选

14.22.24 [ ] Advanced compression options for JFFS2 这里不选

14.22.25 <*> Compressed ROM file system support (cramfs) linux2.6以上内核开始使用ramfs做为初始化时的根文件系统,故必须标此编译选项。如果不选上则有可能导致内核不能正常启动这里选上

14.22.26 < > FreeVxFS file system support (VERITAS VxFS(TM) compatible) 这里不选

14.22.27 < > OS/2 HPFS file system support 这里不选

14.22.28 < > QNX4 file system support (read only) 这里不选

14.22.29 < > System V/Xenix/V7/Coherent file system support 这里不选

14.22.30 < > UFS file system support (read only) 这里不选

14.23 Network File Systems网络文件系统其中只有NFS在产品开发过程中用的多一些,其他的文件系统,如SMB,Coda和AFS非常少用

14.23.1 <*> NFS file system support NFS文件系统,产品开发中首选 (此项不选将导致无法挂载NFS文件系统,若选成模块方式的话,将会导致随后的第9项[*] Root file system on NFS 没有显示,也将无法挂载nfs文件系统) 这里选上

14.23.2 [*] Provide NFSv3 client support 这里选上

14.23.3 [ ] Provide client support for the NFSv3 ACL protocol extensi 这里不选

14.23.4 [ ] Provide NFSv4 client support (EXPERIMENTAL)

14.23.5 [ ] Allow direct I/O on NFS files

14.23.6 <*> NFS server support 这里选上

14.23.7 [ ] Provide NFSv3 server suppor 这里不选

14.23.8 [*] Provide NFS server over TCP support 这里选上

14.23.9 [*] Root file system on NFS NFS根文件启动这里选上(缺少此项

亦不能挂载NFS文件系统)

14.23.10 < > Secure RPC: Kerberos V mechanism (EXPERIMENTAL) 这里不选

14.23.11 < > Secure RPC: SPKM3 mechanism (EXPERIMENTAL) 这里不选

14.23.12 < > SMB file system support (to mount Windows shares etc.) 这里不选

14.23.13 < > CIFS support (advanced network filesystem for Samba, Window a 这里不选

14.23.14 < > NCP file system support (to mount NetWare volumes) 这里不选

14.23.15 < > Coda file system support (advanced network fs) 这里不选

14.23.16 < > Andrew File System support (AFS) (EXPERIMENTAL) 这里不选

14.23.17 < > Plan 9 Resource Sharing Support (9P2000) (Experimental) 这里不选

14.24 Partition Types --->高级磁盘分区类型,不确定可以全不选。《在读卡器项目中没用到此项功能,其子选项以后再进行相关说明》这里不选

14.25 Native Language Support ---> 本地语言支持

14.25.1 Base native language support 基础本地语言,必选

14.25.2 <*> Codepage 437 (United States, Canada) 这里选上

14.25.3 < > Codepage 737 (Greek) 希腊语这里不选

14.25.4 < > Codepage 775 (Baltic Rim) 这里不选

14.25.5 <*> Codepage 850 (Europe) 欧洲这里选上

14.25.6 < > Codepage 852 (Central/Eastern Europe) 中/东欧这里不选

14.25.7 < > Codepage 855 (Cyrillic) 这里不选

14.25.8 < > Codepage 857 (Turkish) 土耳其这里不选

14.25.9 < > Codepage 860 (Portuguese) 葡萄牙这里不选

14.25.10 < > Codepage 861 (Icelandic) 冰岛语这里不选

14.25.11 < > Codepage 862 (Hebrew) 这里不选

14.25.12 < > Codepage 863 (Canadian French) 法属加拿大这里不选

14.25.13 < > Codepage 864 (Arabic) 阿拉伯这里不选

14.25.14 < > Codepage 865 (Norwegian, Danish) 挪威这里不选

14.25.15 < > Codepage 866 (Cyrillic/Russian) 这里不选

14.25.16 < > Codepage 869 (Greek) 这里不选

14.25.17 <*> Simplified Chinese charset (CP936, GB2312) 简体中文这里选上

实验四Linux内核移植实验

合肥学院 嵌入式系统设计实验报告 (2013- 2014第二学期) 专业: 实验项目:实验四 Linux内核移植实验 实验时间: 2014 年 5 月 12 实验成员: _____ 指导老师:干开峰 电子信息与电气工程系 2014年4月制

一、实验目的 1、熟悉嵌入式Linux的内核相关代码分布情况。 2、掌握Linux内核移植过程。 3、学会编译和测试Linux内核。 二、实验内容 本实验了解Linux2.6.32代码结构,基于S3C2440处理器,完成Linux2.6.32内核移植,并完成编译和在目标开发板上测试通过。 三、实验步骤 1、使用光盘自带源码默认配置Linux内核 ⑴在光盘linux文件夹中找到linux-2.6.32.2-mini2440.tar.gz源码文件。 输入命令:#tar –jxvf linux-2.6.32.2-mini2440-20110413.tar对其进行解压。 ⑵执行以下命令来使用缺省配置文件config_x35 输入命令#cp config_mini2440_x35 .config;(注意:x35后面有个空格,然后有个“.”开头的 config ) 然后执行“make menuconfig”命令,但是会出现出现缺少ncurses libraries的错误,如下图所示: 解决办法:输入sudo apt-get install libncurses5-dev 命令进行在线安装ncurses libraries服务。

安装好之后在make menuconfig一下就会出现如下图所示。 ⑶配置内核界面,不用做任何更改,在主菜单里选择退出,并选“Yes”保存设置返回到刚命令行界面,生成相应配置的头文件。 编译内核: #make clean #make zImage 在执行#make zImage命令时会出现如下错误: 错误:arch/arm/mach-s3c2440/mach-mini2440.c:156: error: unknown field 'sets' specified in initializer 通过网上查找资料 于是在自己的mach-mini2440.c中加入 #include

嵌入式Linux内核移植详解(顶嵌)

内核移植阶段 内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。 内核和用户界面共同为用户提供了操作计算机的方便方式。也就是我们在windows下看到的操作系统了。由于内核的源码提供了非常广泛的硬件支持,通用性很好,所以移植起来就方便了许多,我们需要做的就是针对我们要移植的对象,对内核源码进行相应的配置,如果出现内核源码中不支持的硬件这时就需要我们自己添加相应的驱动程序了。 一.移植准备 1. 目标板 我们还是选用之前bootloader移植选用的开发板参数请参考上文的地址: https://www.doczj.com/doc/af8744237.html,/thread-80832-5-1.html。bootloader移植准备。 2. 内核源码 这里我们选用比较新的内核源码版本linux-2.6.25.8,他的下载地址是 ftp://https://www.doczj.com/doc/af8744237.html,/pub/linux/kernel/v2.6/linux-2.6.25.8.tar.bz2。 3. 烧写工具 我们选用网口进行烧写这就需要内核在才裁剪的时候要对网卡进行支持 4. 知识储备 要进行内核裁剪不可缺少的是要对内核源码的目录结构有一定的了解这里进 行简单介绍。 (1)arch/: arch子目录包括了所有和体系结构相关的核心代码。它的每一个子 目录都代表一种支持的体系结构,例如i386就是关于intel cpu及与之相兼容体 系结构的子目录。PC机一般都基于此目录。 (2)block/:部分块设备驱动程序。 (3)crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验 算法。 (4) documentation/:文档目录,没有内核代码,只是一套有用的文档。 (5) drivers/:放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目 录:如,/block 下为块设备驱动程序,比如ide(ide.c)。 (6)fs/:所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持 一个文件系统, 例如fat和ext2。

内核配置与裁剪

内核配置与裁剪 1. Linux内核配置 内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig 等等,它们的功能都是一样的。这里用的是make menuconfig。 过去基于2.x的内核为用户提供了四种基本的内核设置编辑器: ?. config 服务于内核设置的一个冗长的命令行界面; ?. oldconfig 一个文本模式的界面,主要包含一个已有设置文件,对用户所发现的内核资 源中的设置变量进行排序; ?. menuconfig 一个基于光标控制库的终端导向编辑器,可提供文本模式的图形用户界 面; ?. xconfig 一个图形内核设置编辑器,需要安装X-Window系统。 前三种编辑器在设置2.6内核时仍可使用,在运行“make xconfig”后,原有的界面被两个新的图形设置编辑器所代替。这需要具体的图形库和X-Window系统的支持。另外,用户还可以通过“make defconfig”命令,利用所有内核设置变量的缺省值自动建立一个内核设置文件。 下面具体介绍Linux内核配置选项: . 代码成熟度选项 Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers [*] Select only drivers expected to compile cleanly 在内核中包含了一些不成熟的代码和功能,如果我们想使用这些功能,想打开相关的配置选项,就必需打开这一选项。 . 通用设置选项 General setup ---> () Local version - append to kernel release [*] Automatically append version information to the version string [*] Support for paging of anonymous memory (swap)

Linux内核裁剪实例

Linux内核裁剪实例 从零开始配置内核是不明智的,建议在某一个默认配置的基础上进行修改,以达到自己产品的实际需求。 裁剪和配置内核的基本原则: ?基于某一个最接近的主板配置来修改; ?必须的、能确定的选项选中; ?不能确定的则不要改变原来配置; ?可选可不选的,建议根据help信息决定或者不选; ?一次改动不要太多,渐进式修改和验证; ?注意及时备份配置文件,出现意外可以回退恢复。 下面给出一些常见功能的配置裁剪实例,很多功能与所采用的主板硬件相关,与其它不同主板的内核配置上不一定完全相同,但还是有一些参考意义。 1.1.1 GPIO子系统配置 Linux 2.6以上内核引入了子系统,GPIO子系统将全部GPIO的操作接口都通过 “/sys/class/gpio/”目录导出,非常方便用户使用。 输入下列命令,进入内核配置菜单: $ make ARCH=arm menuconfig 在主菜单界面中选择“Device Drivers”: [*] Networking support ---> Device Drivers ---> File systems ---> Kernel hacking ---> 进入“Device Drivers”界面,选择并进入“GPIO Support”: [*] SPI support ---> PPS support ---> PTP clock support -*- GPIO Support ---> <*> PWM Support ---> 在“GPIO Support”中选中“/sys/cla ss/gpio…”: --- GPIO Support [*] /sys/class/gpio/... (sysfs interface) *** Memory mapped GPIO drivers: *** … 配置后重新编译内核,使用新内核的系统即可通过“/sys/class/gpio/”访问系统的GPIO 了。

实验5 linux内核的裁剪移植

实验5 linux内核的裁剪移植 一、实验目的: 学习利用menuconfig配置文件进行裁减内核,编译内核并移植到开发板上。 二、实验内容 一、开发环境 宿主机:ubuntu10.04 开发板:tiny6410 编译器:4.3.2 二、内核移植 1.下载源码 ftp://https://www.doczj.com/doc/af8744237.html,/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2 此实验所需的文件放到/home/embedded/11目录下: linux-2.6.38.tar.bz2, yaffs2.tar.bz2 s3c_nand.c , s3c_nand_mlc.fo ,nand_base.c ,Kconfig ,regs-nand.h 2.解压 (进入根目录下的/home/poplar/expr4/kernel目录,解压源码)# cd /home # mkdir poplar/expr4/kernel –p # cd /home/poplar/expr4/kernel # cp /home/embedded/11/linux-2.6.38.tar.bz2 ./ tar xvfj /home/poplar/expr4/kernel/linux-2.6.38.tar.bz2

3.修改架构,编译器(需要在arm上运行,所以用交叉编译器)解压完进入解压出来的linux-2.6.38目录 #cd linux-2.6.38 #vi Makefile (或者用gedit)

191行改为 ARCH ?= arm //191行CROSS_COMPILE ?= /usr/local/arm/4.3.2/bin/arm-linux- (找到其交叉编译环境,把路径加全) //192行

基于ARM的嵌入式linux内核的裁剪与移植.

基于ARM的嵌入式linux内核的裁剪与 移植 0引言微处理器的产生为价格低廉、结构小巧的CPU和外设的连接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,已经陆续出现了一些嵌入式操作系统(比较著名的有Vxwork、pSOS、Neculeus和WindowsCE)。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。而Linux的开放性,使得许多人都认为Linu 0 引言 微处理器的产生为价格低廉、结构小巧的CPU和外设的连接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,已经陆续出现了一些嵌入式操作系统(比较著名的有Vxwork、pSOS、Nec uleus和Windows CE)。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。而Linux的开放性,使得许多人都认为Linux 非常适合多数Intemet设备。Linux操作系统可以支持不同的设备和不同的配置。Linux对厂商不偏不倚,而且成本极低,因而很快成为用于各种设备的操作系统。嵌入式linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。 1 嵌入式linux操作系统 Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix 相似、以核心为基础、全内存保护、多任务、多进程的操作系统。可以支持广泛的计算机硬件,包括X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA 等现有的大部分芯片。Linux的程序源码全部公开,任何人都可以根据自己的需要裁剪内核,以适应自己的系统。文章以将linux移植到ARM920T内核的 s3c2410处理器芯片为例,介绍了嵌入式linux内核的裁剪以及移植过程,文中介绍的基本原理与方法技巧也可用于其它芯片。 2 内核移植过程 2.1 建立交叉编译环境 交叉编译的任务主要是在一个平台上生成可以在另一个平台上执行的程序代码。不同的CPU需要有不同的编译器,交叉编译如同翻译一样,它可以把相同的程序代码翻译成不同的CPU对应语言。 交叉编译器完整的安装涉及到多个软件安装,最重要的有binutils、gcc、glibc三个。其中,binutils主要用于生成一些辅助工具;gcc则用来生成交叉编译器,主要生成arm—linux—gcc交叉编译工具;glibc主要是提供用户程序所使用的一些基本的函数库。 自行搭建交叉编译环境通常比较复杂,而且很容易出错。本文使用的是

Linux内核安装、裁剪图文教程

目录 Practice1 (4) 一编译过程 (4) 1 安装必要的软件 (4) 2 下载linux内核源文件 (4) 3 解压缩源文件 (5) 4 复制config文件 (6) 5 进行menucofig配置 (6) 6 menuconfig配置页面 (7) 7 对驱动设置进行简单配置 (8) 8 选择cpu类型 (8) 9 设置完成保存退出 (9) 10 开始编译内核 (9) 11 内核编译过程 (10) 12 内核编译过程(3小时后) (11) 13 内核编译成功 (12) 14 安装新内核 (12) 15 新内核安装过程 (13) 16 比较两个内核 (14) 17 重新启动系统 (14) 18 登录新内核 (15) 19 新内核登录成功 (15) 20 查看新内核版本号号 (16) 二、编译过程中遇到的问题 (16) 1 错误VFS:Unable to mount root (16) 2错误Driver ‘mdio-gpio’ (18) Practice2 (20) 一、内核选项翻译及选择理由 (20) 1. General setup 常规设置 (20) 二、裁剪过程 (21) 1.进入设置界面 (21) 2. General setup页设置 (22) 3. Enable the block layer页设置 (23) 4. Processor type and features页设置 (24) 5. Power Management and ACPI options页设置 (28) 6. Bus options页设置 (29) 7. Executable file formats页设置 (30) 8. Networking options页设置 (31) 9. Device Drivers 页设置 (34) 10. Firmware Drivers页设置 (37) 11. File systems页设置 (38) 12. Kernel hacking页设置 (40) 13 CryptographicAPI页设置 (41)

在menuconfig中配置Linux内核裁剪的具体步骤

在menuconfig中配置Linux内核裁剪的具体步骤 在men UC onfig中配置,可以对进行Linux内核配置选项及删改。本文介绍详细配置方法。第一部分:全部删除 Code maturity level options ---> 代码成熟等级选项 [ ]Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.不选。 第二部分:除以下选项,其它全部删除 General setup—〉 System V IPC (IPC:Inter Process Communication)是组系统调用及函数库,它能让程序彼此间同步进行交换信息。某些程序以及DOS模拟环境都需要它。为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。 第三部分:除以下选项,其它全部删除 Loadable module support ---> 可引导模块支持建议作为模块加入内核 [ ] Enable loadable module support 这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了,否在无法启动系统。 [ ]Automatic kernel module loading 一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加载它,内核才能使用。不过,如果你选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块,这是个很棒的特性,当然要选Y喽。 第四部分:全部删除 Block layer-----〉块设备 第五部分:除以下选项,其它全部删除 Processor type and features ---> 处理器类型 Subarchitecture Type (PC-compatible) ---> 这选项的主要的目的,是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓IBM兼容结构(pc/at)。这个选项可以让你选择一些其它架构。我们一般选择PC-compatible就可以了。 Processor family(386): 它会对每种CPU做最佳化,让它跑的好又快,一般来说,你是什么型号的就选什么型号的就好。我选的是386,这样内核会省下不少空间 第六部分:除以下选项,其它全部删除 Power management options (ACPI, APM) ---> 电源管理选项 [ ] Power Management Debug Support 电源管理的调试信息支持,如果不是要调试内核有关电源管理部份,请不要选择这项。 ACPI Support ---〉高级电源接口配置支持,如果BIOS支持,建议选上这项 [ ]Button 这个选项用于注册基于电源按钮的事件,比如power, sleep等,当你按下按钮时事件将发生,一个守护程序将读取/proc/acpi/event,并执行用户在这些事件上定义的动作比如让系统关机。可以不选择,根据自己的需求。 第七部分:除以下选项,其它全部删除

基于ARM的嵌入式linux 内核的裁剪与移植.

基于ARM的嵌入式linux 内核的裁剪 与移植 摘要:实现了一种全集成可变带宽中频宽带低通滤波器,讨论分析了跨导放大器-电容(OTA—C)连续时间型滤波器的结构、设计和具体实现,使用外部可编程电路对所设计滤波器带宽进行控制,并利用ADS软件进行电路设计和仿真验证。仿真结果表明,该滤波器带宽的可调范围为1~26 MHz,阻带抑制率大于35 dB,带内波纹小于0.5 dB,采用1.8 V电源,TSMC 0.18μm CMOS工艺库仿真,功耗小于21 mW,频响曲线接近理想状态。关键词:Butte 0 引言 微处理器的产生为价格低廉、结构小巧的CPU和外设的连接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,已经陆续出现了一些嵌入式操作系统(比较著名的有Vxwork、pSOS、Neculeus和Windows CE)。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。而Linux的开放性,使得许多人都认为Linux 非常适合多数Intemet设备。Linux操作系统可以支持不同的设备和不同的配置。Linux对厂商不偏不倚,而且成本极低,因而很快成为用于各种设备的操作系统。嵌入式linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。 1 嵌入式linux操作系统 Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix 相似、以核心为基础、全内存保护、多任务、多进程的操作系统。可以支持广泛的计算机硬件,包括X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA 等现有的大部分芯片。Linux的程序源码全部公开,任何人都可以根据自己的需要裁剪内核,以适应自己的系统。文章以将linux移植到ARM920T内核的 s3c2410处理器芯片为例,介绍了嵌入式linux内核的裁剪以及移植过程,文中介绍的基本原理与方法技巧也可用于其它芯片。 2 内核移植过程 2.1 建立交叉编译环境 交叉编译的任务主要是在一个平台上生成可以在另一个平台上执行的程序代码。不同的CPU需要有不同的编译器,交叉编译如同翻译一样,它可以把相同的程序代码翻译成不同的CPU对应语言。 交叉编译器完整的安装涉及到多个软件安装,最重要的有binutils、gcc、glibc三个。其中,binutils主要用于生成一些辅助工具;gcc则用来生成交叉编译器,主要生成arm—linux—gcc交叉编译工具;glibc主要是提供用户程序所使用的一些基本的函数库。 自行搭建交叉编译环境通常比较复杂,而且很容易出错。本文使用的是

基于Linux内核定制X86平台的微操作系统(很完整详尽文章)

基于Linux内核定制X86平台的微操作系统摘要:1 0 前言2 0.1 Linux系统简介2 0.2 Linux的基本思想2 0.3 Linux内核2 0.4 Linux内核版本命名3 0.5 Linux文件系统3 0.6Linux内核引导4 0.7Linux系统组成4 1 平台的搭建4 1.1 硬件平台4 1.2 软件平台4 1.2.1 Ubuntu系统的下载4 1.2.2 Ubuntu系统的安装4 1.2.3 Ubuntu系统的配置4 2 Linux内核的编译5 2.1 内核的下载5 2.2 内核的定制5 2.3 内核的编译5 2.4 内核的制作6 3 BusyBox的编译6 3.1 BusyBox的下载6 3.2 BusyBox的配置6 3.3 BusyBox的编译7 4 Linux文件系统的制作7 4.1 文件系统的制作7 4.2 文件系统的配置9 4.3 文件系统的压缩7 5 Linux引导程序配置10 5.1 ISOLINUX的下载10 5.2 ISOLINUX的配置10 6 LinuxCD-ROM的制作10 7 Linux定制系统的运行11 7.1 VirtualBox下的运行11 7.2 U盘引导在X86平台下的运行12 8定制系统过程中的问题12 8.1 平台搭建中的问题12 8.2 内核编译中的问题12

8.3 BusyBox编译中的问题12 8.4 文件系统制作中的问题12 8.5 引导程序制作中的问题12 8.6 CD-ROM制作中的问题13 8.7 定制系统运行的问题13 参考13 基于Linux内核定制X86平台的微操作系统 王林强 (河南大学物理与电子学院通信专业,河南开封,475004) 摘要: Linux是一种自由和开放,用C语言和汇编语言写成,并符合POSIX标准的类Unix操作系统。并且由于其可定制、可裁剪的特性,不仅在桌面操作系统中有重要的地位,而且在手机、平板电脑、路由器和视频游戏控制台等嵌入式设备有其巨大的优势。 为了更好、更深入的了解及掌握Linux系统。本文详细的讲述并实践,如何从Linux内核源码,经过定制、裁剪、编译、制作文件系统、内核引导,iso光盘制作到最终完整的基于Linux内核定制的微操作系统。 通过基于Linux内核定制的微操作系统的制作,深入的理解Linux内核的工作原理、文件系统结构、内核引导等,从而精通嵌入式开发。 关键词: Linux;定制;嵌入式;微系统 An implementation of micro-operating system based on the x86 platform Linux kernel customization Wang Lin-qiang (School of Physics and Electronics, Henan University, Henan Kaifeng 475004, China) Abstract: Linux is a free and open, and POSIX-compliant Unix-like operating system written in C and assembly language. And can be cut because of its customizable features, not only in the desktop o perating system in an important position, and its huge advantage in the embedded devices, mobile phones, tablet PCs, routers, and video game consoles. In order to better and deeper understanding of and master Linux system. This article tells in d etail and practice, from the Linux kernel source code has been customized, cutting, compiling, pro

Linux内核裁剪课程设计

Linux程序设计课程设计报告 题目:linux内核裁剪的设计与实现 姓名:xx 学号:123 专业: 院系: 指导老师: 完成时间:

目录 ⒈引言 (1) ⒉需求分析 (1) 2.1前期准备 (1) 2.2 开发工具 (2) 3.详细设计 (2) 3.1 内核和交叉编译环境的搭建 (2) 1.内核版本的选择 (2) 2.交叉编译环境的搭建 (2) 3.2导入内核并解包 (3) 3.3建立符号链接并进入工作目录 (5) 3.4启动内核编辑图形界面 (5) 3.5 配置系统内核 (5) 3.6编译内核 (13) 3.7建立文件目录 (15) 3.8编译动态载入内存的模块 (15) 3.9拷贝到/lib/modules/2.6.10中 (16) 3.10安装新内核 (17) 3.11解决BusLogic错误 (17) 3.12生成initrd.img文件 (17) 3.13升级内核 (18) 4. 课程设计总结与体会 (19) 参考文献 (19)

⒈引言 Linux是一类Unix计算机操作系统的统称,也是自由软件和开放源代码发展中最著名的例子。Linux作为一个免费、自由软件,内核版本不断升级。新的内核修订了旧内核的bug,并增加了许多新的特性。同时也使得Linux系统更加稳定、更加安全,进一步满足用户的功能需求。 Linux内核裁剪是根据用户的需要进行删除和保留相关的模块。Linux内核裁剪完成后在进行编译,使之后的Linux系统为用户所需要的操作系统。Linux 内核升级是为了弥补较低版本的漏洞,使得Linux系统安全系数更高;另外使Linux系统的性能更稳定;最后是增加新功能,满足用户的功能需求。 本次课程设计是通过相关操作来实现将Linux内核进行裁剪和编译,并Linux2.4内核升级到2.6内核。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要根据自己的需要进行重新裁剪、编译内核以及内核升级。 ⒉需求分析 2.1前期准备 本次实验所需使用的系统是Red Hat Linux,而Red Hat Linux是安装在威睿工作站中的。如图1.1所示:

Linux内核裁剪步骤详述(主要是里面有模块裁剪说明)

Linux内核裁剪步骤详述 内核功能: 能够完成系统的基本功能,上网,收发邮件等,支持xwindows图形界面。 在menuconfig中配置: 详细介绍内核配置选项及删改情况 第一部分:全部删除 Code maturity level options ---> 代码成熟等级选项 []Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成 的代码与驱动.不选。 第二部分:除以下选项,其它全部删除 General setup—〉 System V IPC (IPC:Inter Process Communication)是组系统调用及函数库,它能让程序彼此间同步进行交换信息。某些程序以及DOS模拟 环境都需要它。为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用 考虑,这里一定要选。 第三部分:除以下选项,其它全部删除 Loadable module support ---> 可引导模块支持建议作为模块加入内核 [] Enable loadable module support 这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行 时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。 在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在 系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了 ,否在无法启动系统。 []Automatic kernel module loading 一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使 用modprobe命令来加载它,内核才能使用。不过,如果你选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的 模块,这是个很棒的特性,当然要选Y喽。 第四部分:全部删除 Block layer-----〉块设备 第五部分:除以下选项,其它全部删除 Processor type and features ---> 处理器类型 Subarchitecture Type (PC-compatible) ---> 这选项的主要的目的,是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓 IBM兼容结构(pc/at)。这个选项可以让你选择一些其它架构。我们一般选择PC-compatible 就可以了。 Processor family(386): 它会对每种CPU做最佳化,让它跑的好又快,一般来说,你是什么型号的就选什么型号的就好。我选的是386 ,这样内核会省下不少空间

linux内核裁剪

Linux内核的裁剪和移植的过程就是:根据硬件平台资源等需求来修改一套完整linux源码,添加与硬件资源等相关的功能模块,除去与硬件资源等不相关的功能模块,然后经过交叉编译生成简化的功能齐全的linux内核zImage。 Linux内核裁剪的必备工具: 1、make menuconfig,基于图形界面的内核配置工具,可使配置linux内核更加便捷,为此需要安装libncurses5-dev软件包,这个软件包可在root用户下利用apt-get install libncurses5-dev命令来下载并安装。 2、arm-linux-gcc,交叉编译工具,将配置好的linux内核经过交叉编译生成zImage,使其可以在arm平台上运行。为此需下载arm-linux-gcc-4.3.2.tgz 软件包,使用tar zxvf arm-linux-gcc-4.3.2.tgz -C /命令解压安装,安装完整后为相gcc命令一样使用arm-linux-gcc,则需要在系统环境变量中添加arm-linux-gcc的路径。方法在.bashrc文件中添加export PATH=$PATH: /usr/local/arm/4.3.2/bin。 准备好以上两个工具之后即可完成对linux内核的裁剪,移植就是一个download 的过程。 Linux内核配置选项: 1、下载linux-2.6.39源码,首先修改内核源码根目录的Makefile文件,将第195行修改为ARCH ?= arm ,此处修改说明linux内核将运行在arm平台上,将第196行修改为 CROSS_COMPILE ?= /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-, 此处指出使用arm-none-linux-gnueabi-对内核进行交叉编译,也可直接使用arm-linux-,但是在实际编译时提示无法找到arm-linux-编译不通过,原因暂时不明,因此将整个的编译器执行文件的路径给出。 2、修改系统晶振频率,根据硬件平台上连接的晶振频率修改/arch/arm/mach-at91/Board-sam9x5cm.c中的第50行:/* Initialize processor: 12.000 MHz crystal */ at91sam9x5_initialize(12000000); 3、使用root用户登录终端进入源码根目录下,运行make menuconfig命令,即可看到配置linux内核的图形界面。 4、主要是配置一下选项,其中部分默认选项功能不明,选择默认即可:

Linux内核裁剪的具体步骤

Linux内核裁剪的具体步骤 在menuconfig中配置: 详细介绍内核配置选项及删改情况 第一部分:全部删除 Code maturity level options ---> 代码成熟等级选项 []Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.不选。 第二部分:除以下选项,其它全部删除 General setup—〉 System V IPC (IPC:Inter Process Communication)是组系统调用及函数库,它能让程序彼此间同步进行交换信息。某些程序以及DOS模拟环境都需要它。为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。 第三部分:除以下选项,其它全部删除 Loadable module support ---> 可引导模块支持建议作为模块加入内核 [] Enable loadable module support 这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了,否在无法启动系统。 []Automatic kernel module loading 一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加载它,内核才能使用。不过,如果你选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块,这是个很棒的特性,当然要选Y喽。 第四部分:全部删除 Block layer-----〉块设备 第五部分:除以下选项,其它全部删除 Processor type and features ---> 处理器类型 Subarchitecture Type (PC-compatible) ---> 这选项的主要的目的,是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓IBM兼容结构(pc/at)。这个选项可以让你选择一些其它架构。我们一般选择PC-compatible就可以了。 Processor family(386): 它会对每种CPU做最佳化,让它跑的好又快,一般来说,你是

Linux内核升级全过程 手把手教你一次成功

Linux内核升级全过程手把手教你一次成功 由于开发环境需要在linux-2.6内核上进行,于是准备对我的虚拟机上的Linux系统升级。没想到这一弄就花了两天时间(反复装系统,辛苦啊~~),总算把Linux系统从2.4.20-8内核成功升级到了2.6.18内核。 网上虽然有很多介绍Linux内核升级的文章,不过要么过时,下载链接失效;要么表达不清,不知所云;更可气的是很多文章在转载过程中命令行都有错误。刚开始我就是在这些“攻略”的指点下来升级的,以致于浪费了很多时间。 现在,费尽周折,升级成功,心情很爽,趁性也来写个“升级攻略”吧!于是特意又在虚拟机上重新安装一个Linux系统,再来一次完美的升级,边升级边记录这些步骤,写成一篇Linux内核升级记实录(可不是回忆录啊!),和大家一起分享~~! 首先说明,下面带#号的行都是要输入的命令行,且本文提到的所有命令行都在终端里输入。接下来,让我们一起开始精彩的Linux内核升级之旅吧! 一、准备工作 启动Linux系统,并用根用户登录,进入终端模式下。 1、查看Linux内核版本 #uname-a 如果屏幕显示的是2.6.x,说明你的已经是2.6的内核,也用不着看下文了,该干什么干什么去吧!~~~如果显示的是2.4.x,那恭喜你,闯关通过,赶快进行下一步。 2、下载2.6内核源码 下载地址:https://www.doczj.com/doc/af8744237.html,/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2 3、下载内核升级工具 (1)下载module-init-tools-3.2.tar.bz2 https://www.doczj.com/doc/af8744237.html,/pub/linux/utils/kernel/module-init-tools/module-init-tool s-3.2.tar.bz2 (2)下载mkinitrd-4.1.18-2.i386.rpm https://www.doczj.com/doc/af8744237.html,/fedora/linux/3/i386/RPMS.core/mkinitrd-4.1.18-2.i386.r pm (3)下载lvm2-2.00.25-1.01.i386.rpm https://www.doczj.com/doc/af8744237.html,/fedora/linux/3/i386/RPMS.core/lvm2-2.00.25-1.01.i386.r pm (4)下载device-mapper-1.00.19-2.i386.rpm https://www.doczj.com/doc/af8744237.html,/fedora/linux/3/i386/RPMS.core/device-mapper-1.00.19-2. i386.rpm (2.6.18内核和这4个升级工具我都有备份,如果以上下载地址失效,请到https://www.doczj.com/doc/af8744237.html,/guestbook留下你的邮箱,我给你发过去) 二、配置工作 好啦,2.6内核和4个升级工具都下载完了(少一个也不行,如果没有下载齐全,请不要尝试下面的步骤,升级是不会成功的),下面回到Linux系统中开始配置工作吧。 4、将下载好的内核和4个升级工具都拷贝到/usr/src文件夹下。怎么拷贝就不用我教了吧~~~~不会拷贝的去撞墙吧!~~呵呵! 5、拷贝完毕,开始解压新内核,具体操作请依次执行以下命令: #cd/usr/src(进入到/usr/src目录下,如果已经在/usr/src目录下,可不执行该命令)

Linux内核裁剪的具体过程和方法

Linux内核裁剪的具体过程和方法 根据部分网摘资料和实际烧录结果进行整理: 内核功能: 在能够实现AT91SAM9260开发板基本功能的基础上,通过串口连接上读卡器后能进行一系列的操作和控制功能等,将读卡器的相应数据进行存储或者通过网络传输到远程的PC 机上。远程PC机能够通过网络方式在开发板上对所连接的读卡器参数进行更新配置,如设置天线接口、设置读卡方式等。(待与读卡器配套使用后再对内核的功能描述进行补充和完善。) 编译环境: 源代码解压完成后,进入linux 2.6.19目录下,使用VI命令编辑Makefile。确定编译环境为arm交叉编译工具与本机的安装路径一致ARCH = arm CROSS_COMPILE = /opt/timesys/toolchains/armv5l-linux/bin/armv5l-linux- 内核版本是linux 2.6.19 ,开发板的版本是AT91SAM9260 BOARD V1.01 ,主机系统是ubuntu11.10 内核配置: 内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig 等等,它们的功能都是一样的,区别应该从名字上就能看出来,只有make oldconfig是指用系统当前的设置(./.config)作为缺省值。这里用的是make menuconfig。需要牢记:不必要的驱动越多,内核就越大,不仅运行速度慢、占用内存多,在少数情况下、还会引发其他问题。具体步骤如下:首先确定shell是bash。然后$make menuconfig。有一些默认的符号其含义如下:"[ ]"表示该选项有两种选择方式;[*] 直接编译进内核;[] 不编译;"<>"表示该选项有三种选择方式; <*>直接编译进内核; 编译成模块形式,但不编译进内核;<> 不编译。 在menuconfig中配置:(详细介绍内核配置选项及删改情况) 第一部分: Code maturity level options ---> 代码成熟等级选项 []Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动。当内核中含有不成熟的代码或驱动,需要选上,主要用在测试阶段。(产品成熟后,再去掉此选项)这里选上 第二部分: General setup ---> 通用的一些选项 2.1 () Local version - append to kernel release 在内核版本后追加的字符串,字符串不得超过64字节 2.2 [ ] Automatically append version information to the version string 自动在内核版本后追加的字符串,这个选项是与git库相关的,通常可以不选这里不选 2.3 [ ] Support for paging of anonymous memory (swap) 支持交换内存,没有特殊要求请选择这里不选 2.4 [*] System V IPC 进程间通信(IPC)支持,许多程序需要这个功能.必选,

相关主题
文本预览
相关文档 最新文档