1.Code maturity level options代码成熟度选项
1.1General setup
常规设置
1.1.1 Prompt for development and/or incomplete code/drivers
显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择
1.1.2 Local version - append to kernel release
在内核版本后面加上自定义的版本字符串(小于64字符),可以用"uname -a"命令看到
1.1.3 Automatically append version information to the version string
自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持
1.1.4 Support for paging of anonymous memory (swap)
使用交换分区或者交换文件来做为虚拟内存
1.1.5 System V IPC
System V进程间通信(IPC)支持,许多程序需要这个功能.必选,除非你知道自己在做什么
1.1.6 POSIX Message Queues
POSIX消息队列,这是POSIX IPC中的一部分
1.1.7 BSD Process Accounting
将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/内存占用等信息
1.1.8 BSD Process Accounting version 3 file format
使用新的第三版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式
1.1.9 Export task/process statistics through netlink
通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的
1.1.10 Enable per-task delay accounting
在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间
1.1.11 Enable extended accounting over taskstats
收集额外的进程统计信息并通过taskstats接口发送到用户空间
1.1.12 Enable extended accounting over taskstats
在统计信息中包含扩展进程所花费的时间
1.1.13 Enable per-task storage I/O accounting
在统计信息中包含I/O存储进程所花费的时间
1.1.14 Auditing support
审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计
1.1.15 Kernel .config support
把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息
1.1.16 Kernel .config support
把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息
1.1.17 Kernel log buffer size (16 => 64KB, 17 => 128KB)
内核信息大小
1.1.18 Control Group support
cgroup支持,如cpusets那样来使用cgroup子系统进程(不确定可以不选)
1.1.19 Example debug cgroup subsystem
cgroup子系统调试例子
1.1.20 Namespace cgroup subsystem
cgroup子系统命名空间
1.1.21 Group CPU scheduler
CPU组调度(Group Scheduling,可以为进程赋予不同于nice level的调度 优先级。尤其在企业级硬件系统上,可以进一步优化实时任务的调度。桌面用户可以不选)
1.1.22 Group scheduling for SCHED_OTHER
SCHED_OTHER(SCHED:Process Scheduler,负责控制进程对CPU的使用.调度算法的公平,有效,硬件有关事件的及时处理)组调度
1.1.23 Group scheduling for SCHED_RR/FIFO
SCHED_RR?FIFO组调度
1.1.24 Basis for grouping tasks
基于组分配的任务
1) user id
使用者id
2)Control groups
控制组
1.1.25 Simple CPU accounting cgroup subsystem
简单cgroup子系统cpu所花费的时间
1.1.26 Resource counters
资源计数器
1.1.27 Memory Resource Controller for Control Groups
cgroup内存资源控制器
1.1.28 Create deprecated sysfs files
建立过时的sysfs文件系统(虽然写着过时然而许多版本仍然有编译)
1.1.29Kernel->user space relay support (formerly relayfs)
在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口
1.1.30 Namespaces support
命名空间支持,允许服务器为不同的用户信息提供不 同的用户名空间服务
1)UTS namespace
UTS命名空间,不确定可以不选
2)IPC namespace
IPC命名空间,不确定可以不选
3)User namespace
User命名空间,不确定可以不选
4)PID Namespaces
PID命名空间,不确定可以不选
1.1.31 Initial RAM filesystem and RAM disk (initramfs/initrd) support
初始RAM的文件和RAM磁盘( initramfs /initrd)支持(如果要采用initrd启动则要选择,否则可以不选)
1.1.32 Initramfs source file(s)
initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白
1.1.33 Optimize for size (Look out for broken compilers!)
编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码
1.1.34 Configure standard kernel features (for small systems)
配置标准的内核特性(为小型系统)
1)Include all symbols in kallsyms
在kallsyms中包含内核知道的所有符号,内核将会增大300K
2)Do an extra kallsyms pass
除非你在kallsyms中发现了bug并需要报告这个bug才打开该选项
1.1.35 Disable heap randomization
禁用随机heap(heap堆是一个应用层的概念,即堆对CPU是不可见的,它的实现方式有多种,可以由OS实现,也可以由运行库实现,如果你愿意,你也可以在一个栈中来实现一个堆)
1.1.36 Enable Android’s Shared Memory Subsystem
1.1.37 Choose SLAB allocator
选择内存分配管理器(强烈推荐使用SLUB)
SLAB
各种环境通用的内存分配管理器
SLUB (Unqueued Allocator)
更加优秀的内存分配管理器
1.1.38 Profiling support (EXPERIMENTAL)
#支持系统评测(对于大多数用户来说并不是必须的),其实就是提供一种检测代码运行效率的工具,如果你不编程的话,这个东西也没有用.
Profiling是用来检核一支程式中那些部份(which bits)是最常呼叫或是执行的时间最久的方法.这对程式的最佳化与找出何时时间是浪费掉的而言,是相当好的方式.你必须就你所要的时程资讯(timing information)的目的档案(object files)加上-p来编译,而且如果要让输出的档案(output files)有意义(make sense),你也会需要gprof(来自binutils套件的命令).
1.1.39 Activate markers
激活标志(不确定可以不选)
1.1.40 OProfile system profiling
OProfile评测和性能监控工具
1.1.41 Kprobes
除非开发人员,否则不选
2 Enable loadable module support可加载模块支持
2.1Enable loadable module support
打开可加载模块支持,如果打开它则必须通过"make modules_install"把内核模块安装在/lib/modules/中
2.2 Module unloading
允许卸载已经加载的模块
2.3 Forced module unloading
允许强制卸载正在使用中的模块(比较危险)
2.4 Module versioning support
允许使用其他内核版本的模块(可能会出问题)
2.5 Source checksum for all modules
为所有的模块校验源码,如果你不是自己编写内核模块就不需要它
2.6 Automatic kernel module loading
让内核通过运行modprobe来自动加载所需要的模块,比如可以自动解决模块的依赖关系
3. Enable the block layer块设备支持,使用硬盘/USB/SCSI设备者必选
3.1 Support for Large Block Devices
仅在使用大于2TB的块设备时需要
3.2 Support for tracing block io actions
块队列IO跟踪支持,它允许用户查看在一个块设备队列上发生的所有事件,可以通过blktrace程序获得磁盘当前的详细统计数据
3.3 Support for Large Single Files
仅在可能使用大于2TB的文件时需要
3.4 Block layer SG support v4
通用scsi块设备第4版支持
3.5 IO Schedulers
IO调度器
3.5.1 Anticipatory I/O scheduler
假设一个块设备只有一个物理查找磁头(例如一个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器)
3.5.2Deadline I/O scheduler
使用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)
3.5.3 CFQ I/O scheduler
使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统
3.5.4 Default I/O scheduler
默认IO调度器(建议选择CFQ)
1)Anticipatory
2) Deadline
3)CFQ
4) No-op
4.System Type 系统类型
此部分暂时未整理,要根据芯片的具体指标确定。
5 .Bus support
5.1 PCCard(PCMCIA/CardBus) supoort
5.1.1 Enable PCCARD debugging
仅供调试.通常不需要选择调试PCMCIA设备,除非你是设备驱动的开发人员。
5.1.2 16-bit PCMCIA support
一些老的PCMCIA卡使用16位的CardBus
5.1.3 Load CIS updates from userspace
有些PCMCIA卡的正确使用需要升级的CIS,选这个选项就可以实现自动的使用内核的固件加载以及热插拔子系统。
如不确定,就选Y。(本选项为测试级)
5.1.4 PCMCIA control ioctl (obsolete)
本选项是个很旧的选项,应该用新的组件代替,详情见:Documentation/Changes
6 .Kernel Features
6.1 Preemptible Kerenl (EXPERIMENTAL)
抢占式内核
6.2 Dynamic tick timer
6.3 use the ARM EABI to compile the kernel
我们必须使用ARM的eabi兼容的工具链编译内核。
6.4 Allow old ABI binaries to run with this kernel(EXPERIMENTAL)
6.5 Memory model (Flat Memory)
6.5.1 Falt Memory
一般选"Flat Memory",其他选项涉及内存热插拔
6.6 64 bit Memory and IO resources
6.7 Timer and CPU usage LEDs
6.8 Timer LED
6.9 CPU usage LED
7.Boot options启动选项
7.1 Compressed ROM boot loader base address
7.2 Compeesed ROM boot laoder BSS address
7.3 Kernel Execute-In-Place from ROM
7.4 Kexec system call
8 Floating point emulation
8.1 NWFPE math emulation
分享到:
相关推荐
在开始移植之前,开发者需要根据目标硬件选择合适的内核配置选项,这通常通过menuconfig或xconfig工具完成。这些选项包括处理器特性、内存布局、设备驱动支持等。对于TQ2440和Sky2440,可能需要开启如串口、GPIO、...
- **Kconfig文件**:它是Linux内核配置系统的核心部分,用于定义配置选项及其依赖关系。通过修改这些文件,可以自定义内核的功能集。 - **Makefile文件**:它定义了构建内核时的规则,包括哪些源文件需要被编译以及...
4. **配置文件示例**:对于goldfish处理器,配置文件位于 `arch/arm/mach-goldfish`,并包含了一系列配置选项,如 `CONFIG_ARCH_GOLDFISH=y`、`CONFIG_ANDROID=y` 等,以适应Android系统的需求。 #### 第二部分:...
- **Android 1.0 (release-1.0)**:采用的是Linux 2.6.25内核。 - **Android 1.5 (sdk-1.5_r1)**:升级到了Linux 2.6.27内核。 - **Android 1.6 (sdk-1.6_r1)**:进一步升级至Linux 2.6.29内核。 这些不同版本的...
### 如何编译 Linux 内核 2.6 版本 随着技术的发展与进步,Linux 内核作为操作系统的核心部分,在系统管理、性能优化以及安全性方面起着至关重要的作用。对于想要深入了解 Linux 内核并对其进行定制化的用户来说,...
1. **修改内核源代码**:对于提供的代码片段中的VMware BUG修复,可以通过修改内核源代码文件`/usr/src/linux-2.6.25/drivers/message/fusion/mptbase.c`来解决特定的兼容性问题。具体来说,在该文件中添加以下代码...
该配置文件定义了多项特定于 Android 的配置选项,包括但不限于: - `CONFIG_ARCH_GOLDFISH=y`: 表示使用 goldfish 架构。 - `CONFIG_ANDROID=y`: 开启 Android 支持。 - `CONFIG_ANDROID_BINDER_IPC=y`: 启用 ...
Android内核的配置和编译过程相对复杂,首先需要设置架构参数`ARCH=arm`,以及交叉编译工具链的路径`CROSS_COMPILE={path}/arm-none-linux-gnueabi-`。编译后的内核文件有`vmlinux`(未压缩的ELF格式)和`zImage`...
而make menuconfig是一个图形化的配置界面,通过它可以对内核的编译选项进行选择和配置。这段内容还提到了一些在配置过程中可能会遇到的问题及其解决方案,比如缺少ncurses库的问题。ncurses库是提供创建文本用户...
为了使Linux内核能够在S3C2410上正确运行,还需要进行一些特定的配置和调整: 1. **机器类型和配置**: - 在`menuconfig`中,确保选中了`System Type`下的`S3C2400`。 - 选中`Machines`下的`S3C2410 Machines`,...
1. **配置文件**(如`.config`):记录了内核编译时的选项,这些选项决定了哪些功能被启用或禁用。 2. **源代码**:包含了内核的C和汇编语言源代码,包括核心模块、驱动程序、文件系统等。 3. **Makefile**:用于...
这通常涉及到对内核配置选项的调整,确保所有必要的驱动和功能都得到支持。 - **编译工具链**:使用arm-linux-gcc-4.3.2进行交叉编译,生成适用于ARM2440平台的内核映像文件。 ##### 4.2 驱动程序适配 - **硬件...
具体方法依赖于内核版本及可用的配置选项。常见的做法是从预先定义的配置文件中选择一个作为基础,并根据实际需求进行调整。 ```bash # 进入内核目录 cd kernel.git # 生成基本配置文件 make arch/arm/configs/mini...
1. **kernel-2.6.25-14.fc9.i586.rpm**:这是一个Linux内核包,用于升级或安装特定版本的内核,对于需要特定内核功能或解决兼容性问题的用户很有用。 2. **kernel-devel-2.6.25-14.fc9.i686.rpm**:内核开发包,...
6. 配置内核:通过`make menuconfig`命令进行内核配置,确保选择正确的硬件平台和驱动支持,例如三星S3C2410系列,取消与Goldfish相关的选项,因为Goldfish是Android模拟器的内核,而非实际硬件的驱动。 完成上述...
在 Fedora9 中,VMware Tools 需要与当前运行的 Linux 内核版本相匹配的 kernel-devel 包。你可以通过 `uname -r` 命令查看当前内核版本,然后在网上找到对应的 kernel-devel 软件包。例如,如果内核版本是 2.6.25-...
Fedora Core 9(简称FC9)作为一款流行的Linux发行版,在虚拟环境中与其他操作系统(如Windows XP)进行文件共享的需求十分常见。本文将详细介绍如何在安装了FC9的虚拟机上设置文件共享,并确保可以通过`/mnt/hgfs/`...