[*]Support for large (2TB+) block devices and files,仅在使用大于2TB的块设备时需要
[*]Block layer SG support v4,通用SCSI设备第四版支持。
[*]Block layer data integrity support,块设备数据完整性支持。
[*]IO Schedulers —>(有子项),IO调度器
[ ]Anticipatory I/O scheduler,抢先式I/O调度器,大多数块设备只有一个物理查找磁头(例如一个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器)
[ ]Deadline I/O scheduler,期限式I/O调度器,轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)。
[ ]CFQ I/O scheduler,使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统CFQ调度器尝试为所有进程提供相同的带宽。它将提供平等的工作环境,对于桌面系统很合适。
Default I/O scheduler (CFQ) —>默认IO调度器有上面三个IO调度器:抢先式是传统的,它的原理是一有响应,就优先考虑调度。如果你的硬盘此时在运行一项工作,它也会暂停下来先响应用户。期限式则是:所有的工作都有最终期限,在这之前必须完成。当用户有响应时,它会根据自己的工作能否完成,来决定是否响应用户。CFQ则是平均分配资源,不管你的响应多急,也不管它的工作量是多少,它都是平均分配,一视同仁的。
4. System Type
(arm 占用配置,一般是厂家提供,与第7项代替了原有的Processor type and features)
5. [ ]FIQ Mode Serial Debugger,一般不选。
6. Bus support(总线支持)
PCI support,PCI总线支持,主板上最长用的插槽,最好选上,arm linux可以不选,arm一般没有PCI总线。
PCCard (PCMCIA/CardBus) support,一般笔记本有这种插槽,笔记本选上,arm linux 不选。
7. Kernel Features(内核特征)
[ ] Tickless System (Dynamic Ticks),非固定平率系统,能让内核运行的更有效率,并且省电,pc下可选,特别是笔记本,arm linux一般不用选。
[ ] High Resolution Timer Support,支持高频率时间发生器,需要硬件兼容,但大多数PC和ARM都不支持,不选
Memory split (2G/2G user/kernel split) —>,内核与用户空间各占2G,内核空间0-0x7FFFFFFF,用户空间80000000-FFFFFFFF
Preemption Model (No Forced Preemption (Server)) —>,内核抢占模式。普通PC用户一般选2,arm linux 选1就可以。
No Forced Preemption (Server),禁止内核抢占,适合服务器环境。针对于高吞吐量的设计,但有可能延时较长,适用于服务器或科学运算,或向要最大的运算能力,而不理会调度上的延时。
Voluntary Kernel Preemption (Desktop),自愿内核抢占,适合普通的桌面环境。已降低吞吐量为代价,降低内核调度的最大延时,提供更快的应用程序响应,即使系统已经高负荷运转,应用程序仍然能运行的很“流畅”,适合用户桌面环境
Preemptible Kernel (Low-Latency Desktop),主动内核抢占,适合运行实时程序的环境。更低的吞吐量,进一步降低内核的调度延时,使应用程序更加流畅。
[ ]Compile the kernel in Thumb-2 mode,编译Thumb-2 mode内核,一般不选
[*] Use the ARM EABI to compile the kernel,与下面绑定配置。
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL),对于嵌入式系统(jffs2 yaffs2),这两个要选上,否则很可能启动的时候报错(kernel panic- not syncing: Attempted to kill init!)
[ ] High Memory Support (EXPERIMENTAL)(有子项), 1G物理内存以下不选,超过1G才选。(配置略有变化,以前的选项是OFF(<1G),4G(>1G && <4G),64G(>4G))。
Allocate 2nd-level pagetables from highmem,1G物理内存以下不选,超过1G(小于4G)才选
Allocate 3nd-level pagetables from highmem,大于4G,选择此项目。
Memory model (Flat Memory) —>,一般选”Flat Memory”,其他选项涉及内存热插拔。
[ ] Enable KSM for page merging,允许linux内核识别出包含相同内容的内存页,然后合并这些内存页,将数据整合在一个位置可以多次引用,特殊功能,不用选。
(4096) Low address space to protect from user allocation,默认4096即可
[ ] Use kernel mem{cpy,set}() for {copy_to,clear}_user() (EXPERIMENTAL),不清楚可以不选。
附:yaffs2 文件系统:Kernel panic - not syncing: Attempted to kill init!
在内核挂载根文件系统时,提示Kernel panic - not syncing: Attempted to kill init!的解决方法:
方法1:
Kernel Features —>
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA)
方法2:
修改busybox的Makefile
修改
CC=$(CROSS_COPILE)gcc
为
CC=$(CROSS_COPILE)gcc -march=armv4t
一般海思编译器选择此选项,linux-gcc-3.4.5 以下的编译器,不用选,如果用4.3.3(支持EABI的编译器)以上的最好选上。
8. Boot options
一般不需要配置,u-boot会把启动参数传递给内核。如果bootloader没有传参数,可以配置启动参数,类似下面这样:
(0x0) Compressed ROM boot loader base address
(0x0) Compressed ROM boot loader BSS address
(mem=32M console=ttySAC0 root=/dev/ram initrd=0x30800000,4M ramdisk_size=4096 rw) Default kernel command string
9. CPU Power Management
[ ] CPU idle PM support,允许软件控制的空闲进程电源管理,arm linux一般不用选。
10. Floating point emulation
(浮点运算,(arm专用)看arm是否支持硬浮点协处理器,支持的话选择VFP,不支持选择NWFPE)
[ ] NWFPE math emulation
[ ] FastFPE math emulation (EXPERIMENTAL)
[*] VFP-format floating point maths
[ ] Advanced SIMD (NEON) Extension support
Userspace binary formats(二进制支持)
[*] Kernel support for ELF binaries,必须选,否则内核可能不能启动,其他可以全部不选,
[ ] Write ELF core dumps with partial segments
< > Kernel support for a.out and ECOFF binaries
< > Kernel support for MISC binaries
11. Power management options(电源管理)
一般用于笔记本,PC和arm可以不选。
[*] Power Management support,选择此项,下面的项才能可见
[ ] Power Management Debug Support,调试用,不用选
[*] Suspend to RAM and standby,待机到内存,即内存供电而暂时关闭硬盘等外设。
< > Advanced Power Management Emulation,高级电源管理,
[ ] Run-time PM core functionality,允许对运行中接入的I/O设备进行电源管理。
Generic Driver Options —>,通用选项
(/sbin/mdev) path to uevent helper,不理解,用的默认值
[ ] Maintain a devtmpfs filesystem to mount at /dev,让devtmpfs文件系统安装在/dev,不清楚可以不选。
[*] Select only drivers that don’t need compile-time external firmware,只显示那些不需要内核对外部设备的固件作map支持的驱动程序,除非你有某些怪异硬件,否则请选上。
[ ] Prevent firmware from being built,不编译固件(固化的软件,如bios).固件一般是随硬件的驱动程序提供的,仅在更新固件的时候才需要重新编译。可以不选,但想要更新固件的话就要重新编译内核了。
{*} Userspace firmware loading support,提供某些内核之外的模块需要的用户空间固件加载支持,在内核树之外编译的模块可能需要它,选上。
[*] Include in-kernel firmware blobs in kernel binary
() External firmware blobs to build into the kernel binary
< > Connector - unified userspace <-> kernelspace linker —>,用户空间和内核空间连接器,工作在netlink socket协议的顶层,不清楚可以不选。
<*> Memory Technology Device (MTD) support —>,特殊的存储技术,如常用语数码相机或嵌入式系统的闪存卡,一般是NOR flash和Nand的支持,arm linux必选,PC不用选。
[ ] Debugging,调试模式,不选。
< > MTD tests support,MTD测试支持,不清楚可以不选。
< > MTD concatenating support,连接多个MTD设备,例如使用JFFS2文件系统管理多片Flash的情形。只有一片Flash时不选。
[*] MTD partitioning support,分区支持,选上。
< > RedBoot partition table parsing,使用RedBoot解析Flash分区表,如果需要读取这个分区表的信息选择此项
[*] Command line partition table parsing,允许通过内核命令行传递MTD分区表信息,
< > ARM Firmware Suite partition parsing,使用AFS分区信息
< > TI AR7 partitioning support,AR7分区支持
<*> Direct char device access to MTD devices,将系统中的MTD设备看做字符设备进行读写,需要与驱动同步的。
-*- Common interface to block layer for MTD ‘translation layers’
<*> Caching block device access to MTD devices,文件系统挂载后,模拟块设备进行访问。常用于只读文件系统。如果是DiskOnChip使用NFTL方式。
< > FTL (Flash Translation Layer) support,提供对Flash翻译层支持,可以不选
< > NFTL (NAND Flash Translation Layer) support,NAND Flash翻译层支持,可以不选
< > INFTL (Inverse NAND Flash Translation Layer) support,提供INFTL支持,DiskOnChip使用
< > Resident Flash Disk (Flash Translation Layer) support,提供RFD支持,为嵌入式系统提供类似BIOS功能,不清楚可以不选,使用Uboot驱动的话也不用选。
< > NAND SSFDC (SmartMedia) read only translation layer,NAND SSFDC只读翻译层,不清楚可以不选。
< > SmartMedia/xD new translation layer,不清楚可以不选。
< > Log panic/oops to an MTD buffer,MTD缓冲日志,不清楚可以不选。
RAM/ROM/Flash chip drivers —>,RAM/ROM/Flash芯片驱动,不清楚可以不选。
Mapping drivers for chip access —>,为芯片的访问方式选择Mapping驱动,不清楚可以不选。
Self-contained MTD device drivers —>,自身包含MTD设备驱动,一般不选。
< > Include chip ids for known NAND devices.,NAND flash信息,不用选。
< > NAND Device Support —>,Nand设备支持,有nand的话选上,子项默认配置即可,如果支持Nand,加选这一项就够了。
< > OneNAND Device Support —>,One nand支持,不清楚可以不选。
LPDDR flash memory drivers —>,LPDDR Flash内存驱动,未用,不用选。
UBI - Unsorted block images —>未分类block影响,不清楚不选。
附:配置支持jffs2两步
1) 在“memory technology devices(mtd)”选项中选择:
<*>memory technology device(mtd)support
<*>mtd partitioning support
<*>cashing block device access to mtd devices
ram/rom/flash chip drivers—>
<*> detect flash chips by common flash interface(cfi) probe
<*> support for intel/sharp flash chips
mapping drivers for chip access—>
<*> cfi flash device in physical memory map
(0) physical start address of flash mapping
(1000000)physical length of flash mapping
(2)buswidthin octets
<*> intel strataflash device mapped on at91rm9200
这里设置了flash芯片的起始地址、大小以及宽度,比如:起始地址为“0”,大小为“1000000”,即16mb,宽度为“2”,即16字节。然后选中自己加入的“intel strataflash device mapped on at91rm9200”这一项
2) 在“file systems”选项中选择:
<*>joumalling flash file system v2(jffs2)support
对于其他功能,可根据自己的实际情况,进行裁减,然后保存退出,接下来编译出操作系统内核映像。(详细见 linux支持nor flash.txt 文档)
< > Parallel port support —>,配置并口,如打印机,arm linux可以不用配置
< > PC-style hardware (NEW),
< > AX88796 Parallel Port (NEW),
[ ] IEEE 1284 transfer modes (NEW),
[*] Block devices —>,块设备,一般都不用选,除非有特殊需要
< > Loopback device support,拿文件来模拟块设备,想要mount ios文件的话必须选上,一般不选。
< > Network block device support,网络块设备支持,让PC成为网络块设备的客户端。一般不选
< > Low Performance USB Block driver,低性能USB块设备驱动程序,一般不选。
<*> RAM block device support,RAM块设备支持,子选项保持默认就好了。
< > Packet writing on CD/DVD media,不清楚可以不选。
< > ATA over Ethernet support,不清楚可以不选。
[*] Misc devices —>,混杂设备驱动,一般不选。
< > ATA/ATAPI/MFM/RLL support (DEPRECATED) —>,不清楚可以不选。
SCSI device support —>,支持u盘的话,需要选上。
< > RAID Transport Class,不清楚可以不选。
<*> SCSI device support,支持u盘选上,子选项默认配置即可。
< > Serial ATA and Parallel ATA drivers —>,SATA和PATA支持,没有硬盘的话可以不选。
[ ] Multiple devices driver support (RAID and LVM) —>,特殊服务器管理用到,如LVM,一般用户不会用到,不用选,
[*] Network device support —>,网络设备支持,必选。包括前兆网卡,PPPOE等的支持。
[*] HID Devices —>,HID支持,选上
[*] USB support —>,USB支持,选上
<*> MMC/SD/SDIO card support —>,SD卡支持,选上。
……
其他选项根据需求来。在嵌入式linux中一般IIC SPI等device都自己写驱动,不用选。
14. File systems(文件系统)
<*> Second extended fs support,EXT2文件系统支持。
[*] Ext2 extended attribute,EXT2文件系统支持。
<*> Ext3 journalling file system support,EXT3文件系统支持,子项默认就行。
<*> The Extended 4 (ext4) filesystem ,EXT4文件系统支持,子项默认就行。
……
有JFS(IBM所用)文件系统等,省略,用的不多。
……
[*] Enable POSIX file locking API,使能POSIX文件锁的API,最好选上。
[*] Dnotify support,基于目录的文件变化的通知机制,不选nfsd起不来,比选的。
[ ] Inotify file change notification support,新式的文件体统的变化通知机制,用以替代老旧的Dnotify,选了Dnotify就不要选它了。
[*] Inotify support for userspace,用户空间的Inotify支持,最好选上。(notify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建)。
<*> FUSE (Filesystem in Userspace) support,允许在用户空间实现一个文件系统,如果打算开发一个自己的文件系统或使用一个机遇FUSE的文件系统,最好打开。
<*> Character device in Userpace support,允许在用户空间实现一个字符设备,
-*- Miscellaneous filesystems —>,杂项文件系统,子项很复杂,主要配置jffs2 和 yaffs2文件系统,一般用于嵌入式设备。
[*] Network File Systems —>,网络文件系统,NFS等。
……
其他没有特殊需求可以不选。
15. Kernel hacking
(内核hack选项,基本上选Enable __must_check logic和Stacktrace就可以了,有需要再深入研究)
[ ] Show timing information on printks,在printk的输出中包含时间信息,可以用来分析内核启动过程各步骤所用时间,需要时选上。
[ ] Enable __deprecated logic,不清楚不要选。
[*] Enable __must_check logic,在编译内核的过程中使用”必须检查”的逻辑,禁用它将不会显示某些警告信息,选上。
[ ] Magic SysRq key,不懂,千万别选。
[ ] Strip assembler-generated symbols during link,,不清楚不要选。
[ ] Enable unused/obsolete exported symbols,没用的信息符号,会使内核增大,不选.
[ ] Debug Filesystem,不是内核开发者的别选。
[ ]Run ‘make headers_check’ when building vmlinux,在编译内核时运行’make headers_check’命令检查内核头文件,当你修改了与用户空间相关的内核头文件后建议启用该选项。
[ ] Kernel debugging,不是内核开发者的别选。
[ ] SLUB debugging on by default,不清楚不要选。
[ ] Enable SLUB performance statistics,不清楚不要选。
[*] Stacktrace,支持调用栈,用于出错排查问题。
[ ] Debug memory initialization,调试内存初始化,不选,
[ ] Check for stalled CPUs delaying RCU grace periods ,检查停止CPU延缓RCU的宽限期,
[ ] Latency measuring infrastructure,不清楚不要选。
[ ] Sysctl checks,不清楚不要选。
[ ] Tracers —>,不清楚不要选。
[ ] Perform an atomic64_t self-test at boot,不清楚不要选。
[ ] Sample kernel code —> ,不清楚不要选。
[*] Enable stack unwinding support,可以不选(31没选)。
[*] Verbose user fault messages,可以不选(31没选)。
[ ] On-chip ETM and ETB,片上ETM、ETB,不清楚可以不选。
16. Security options(安全选项,一般不需要配置,)
[ ] Enable the /proc/keys file by which keys may be viewed,允许有权限的进程通过/proc/keys读取所有的key,最好不要选。
[ ] Restrict unprivileged access to the kernel syslog,限制未经授权访问内核日志。
[ ] Enable different security models,允许内核选择不同的安全模式,如果未选择按默认处理。
[*] Enable the securityfs filesystem,不清楚可以不选(16没选)。
Default security module (Unix Discretionary Access Controls) —>,默认安全模式。