内核配置参考

内核配置参考
内核配置参考

Linux 2.6内核配置的参考

Code maturity level options

代码成熟度选项

Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择

General setup

常规设置

Local version - append to kernel release

在内核版本后面加上自定义的版本字符串(小于64字符),可以用"uname -a"命令看到

Automatically append version information to the version string 自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持

Support for paging of anonymous memory (swap)

使用交换分区或者交换文件来做为虚拟内存

System V IPC

System V进程间通信(IPC)支持,许多程序需要这个功能.建议选 POSIX Message Queues

POSIX消息队列支持

BSD Process Accounting

将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/内存占用等信息

BSD Process Accounting version 3 file format

使用新的第三版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式

Export task/process statistics through netlink

通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的

Enable per-task delay accounting

在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间

UTS Namespaces

UTS名字空间支持,不确定可以不选

Auditing support

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

Enable system-call auditing support

支持对系统调用的审计

Kernel .config support

把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息

Enable access to .config through /proc/config.gz

允许通过/proc/config.gz访问内核的配置信息

Cpuset support

只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它

Kernel->user space relay support (formerly relayfs)

在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口

Initramfs source file(s)

initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白 Optimize for size (Look out for broken compilers!)

编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码

Enable extended accounting over taskstats

收集额外的进程统计信息并通过taskstats接口发送到用户空间 Configure standard kernel features (for small systems)

配置标准的内核特性(为小型系统)

Enable 16-bit UID system calls

允许对UID系统调用进行过时的16-bit包装

Sysctl syscall support

不需要重启就能修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核行为的参数或变量

Load all symbols for debugging/kksymoops

装载所有的调试符号表信息,仅供调试时选择

Include all symbols in kallsyms

在kallsyms中包含内核知道的所有符号,内核将会增大300K Do an extra kallsyms pass

除非你在kallsyms中发现了bug并需要报告这个bug才打开该选项 Support for hot-pluggable devices

支持热插拔设备,如usb与pc卡等,Udev也需要它

Enable support for printk

允许内核向终端打印字符信息,在需要诊断内核为什么不能运行时选择

BUG() support

显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错误被忽略

Enable ELF core dumps

内存转储支持,可以帮助调试ELF格式的程序

Enable full-sized data structures for core 在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能

Enable futex support

快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序

Enable eventpoll support

支持事件轮循的系统调用

Use full shmem filesystem

完全使用shmem来代替ramfs.shmem是基于共享内存的文件系统(可能用到swap),在启用TMPFS后可以挂载为tmpfs供用户空间使用,它比简单的ramfs先进许多

Use full SLAB allocator

使用SLAB完全取代SLOB进行内存分配,SLAB是一种优秀的内存分配管理器,推荐使用

Enable VM event counters

for /proc/vmstat

允许在/proc/vmstat中包含虚拟内存事件记数器

Loadable module support

可加载模块支持

Enable loadable module support

打开可加载模块支持,如果打开它则必须通过"make modules_install"把内核模块安装在/lib/modules/中

Module unloading

允许卸载已经加载的模块

Forced module unloading

允许强制卸载正在使用中的模块(比较危险)

Module versioning support

允许使用其他内核版本的模块(可能会出问题)

Source checksum for all modules

为所有的模块校验源码,如果你不是自己编写内核模块就不需要它

Automatic kernel module loading

让内核通过运行modprobe来自动加载所需要的模块,比如可以自动解决模块的依赖关系

Block layer

块设备层

Enable the block layer

块设备支持,使用硬盘/USB/SCSI设备者必选

Support for Large Block Devices

仅在使用大于2TB的块设备时需要

Support for tracing block io actions

块队列IO跟踪支持,它允许用户查看在一个块设备队列上发生的所有事件,可以通过blktrace程序获得磁盘当前的详细统计数据

Support for Large Single Files

仅在可能使用大于2TB的文件时需要

IO Schedulers

IO调度器

Anticipatory I/O scheduler

假设一个块设备只有一个物理查找磁头(例如一个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器)

Deadline I/O scheduler

使用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)

CFQ I/O scheduler

使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统

Default I/O scheduler

默认IO调度器

Processor type and features

中央处理器(CPU)类型及特性

Symmetric multi-processing support

对称多处理器支持,如果你有多个CPU或者使用的是多核CPU就选上.此时"Enhanced Real Time Clock Support"选项必须开启,"Advanced Power Management"选项必须关闭

Subarchitecture Type

处理器的子架构,大多数人都应当选择"PC-compatible"

Processor family

处理器系列,请按照你实际使用的CPU选择

Generic x86 support

通用x86支持,如果你的CPU能够在上述"Processor family"中找到就别选 HPET Timer Support

HPET是替代8254芯片的新一代定时器,i686及以上级别的主板都支持,可以安全的选上

Maximum number of CPUs

支持的最大CPU数,每增加一个内核将增加8K体积

SMT (Hyperthreading) scheduler support

支持Intel的超线程(HT)技术

Multi-core scheduler support

针对多核CPU进行调度策略优化

Preemption Model

内核抢占模式

No Forced Preemption (Server)

适合服务器环境的禁止内核抢占

Voluntary Kernel Preemption (Desktop)

适合普通桌面环境的自愿内核抢占

Preemptible Kernel (Low-Latency Desktop)

适合运行实时程序的主动内核抢占

Preempt The Big Kernel Lock

可以抢占大内核锁,应用于实时要求高的场合,不适合服务器环境

Machine Check Exception

让CPU检测到系统故障时通知内核,以便内核采取相应的措施(如过热关机等) Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4 每5秒检测一次这些cpu的非致命错误并纠正它们,同时记入日志

check for P4 thermal throttling interrupt

当P4的cpu过热时显示一条警告消息

Enable VM86 support

虚拟X86支持,在DOSEMU下运行16-bit程序或XFree86通过BIOS初始化某

些显卡的时候才需要

Toshiba Laptop support

Toshiba笔记本模块支持

Dell laptop support

Dell笔记本模块支持

Enable X86 board specific fixups for reboot

修正某些旧x86主板的重起bug,这种主板基本绝种了

/dev/cpu/microcode - Intel IA32 CPU microcode support

使用不随Linux内核发行的IA32微代码,你必需有IA32微代码二进制文件,仅对Intel的CPU有效

/dev/cpu/*/msr - Model-specific register support

在多cpu系统中让特权CPU访问x86的MSR寄存器

/dev/cpu/*/cpuid - CPU information support

能从/dev/cpu/x/cpuid获得CPU的唯一标识符(CPUID)

Firmware Drivers

固件驱动程序

BIOS Enhanced Disk Drive calls determine boot disk

有些BIOS支持从某块特定的硬盘启动(如果BIOS不支持则可能无法启动),目前大多数BIOS还不支持

BIOS update support for DELL systems via sysfs

仅适用于DELL机器

Dell Systems Management Base Driver

仅适用于DELL机器

High Memory Support

最高内存支持,总内存小于等于1G的选"off",大于4G的选"64G"

Memory split

如果你不是绝对清楚自己在做什么,不要改动这个选项

Memory model

一般选"Flat Memory",其他选项涉及内存热插拔

64 bit Memory and IO resources

使用64位的内存和IO资源

Allocate 3rd-level pagetables from highmem

在内存很多(大于4G)的机器上将用户空间的页表放到高位内存区,以节约宝贵的低端内存

Math emulation

数学协处理器仿真,486DX以上的cpu就不要选它了

MTRR (Memory Type Range Register) support

打开它可以提升PCI/AGP总线上的显卡2倍以上的速度,并且可以修正某些BIOS 错误

Boot from EFI support

EFI是一种可代替传统BIOS的技术(目前的Grub/LILO尚不能识别它),但是现在远未普及

Enable kernel irq balancing

让内核将irq中断平均分配给多个CPU以进行负载均衡,但是要配合irqbanlance 守护进程才行

Use register arguments

使用"-mregparm=3"参数编译内核,将前3个参数以寄存器方式进行参数调用,可以生成更紧凑和高效的代码

Enable seccomp to safely compute untrusted bytecode

只有嵌入式系统可以不选

Timer frequency

内核时钟频率,桌面推荐"1000 HZ",服务器推荐"100 HZ"或"250 HZ"

kexec system call

提供kexec系统调用,可以不必重启而切换到另一个内核

kernel crash dumps

被kexec启动后产生内核崩溃转储

Physical address where the kernel is loaded

内核加载的物理地址,除非你知道自己在做什么,否则不要修改.在提供kexec系统调用的情况下可能要修改它

Support for hot-pluggable CPUs

对热插拔CPU提供支持

Compat VDSO support

如果Glibc版本大于等于2.3.3就不选,否则就选上

Power management options

电源管理选项

Power Management support

电源管理有APM和ACPI两种标准且不能同时使用.即使关闭该选项,X86上运行的Linux也会在空闲时发出HLT指令将CPU进入睡眠状态

Legacy Power Management API

传统的电源管理API,比如软关机和系统休眠等接口

Power Management Debug Support

仅供调试使用

Driver model /sys/devices/.../power/state files

内核帮助文档反对使用该选项,即将被废除

ACPI (Advanced Configuration and Power Interface) Support

必须运行acpid守护程序ACPI才能起作用.ACPI是为了取代APM而设计的,因此应该尽量使用ACPI而不是APM

AC Adapter

如果你的系统可以在AC和电池之间转换就可以选

Battery

通过/proc/acpi/battery向用户提供电池状态信息,用电池的笔记本可以选 Button

守护程序捕获Power,Sleep,Lid按钮事件,并根据/proc/acpi/event做相应的动作,软件控制的poweroff需要它

Video

仅对集成在主板上的显卡提供ACPI2.0支持,且不是所有集成显卡都支持

Generic Hotkey

统一的热键驱动,建议不选

Fan

允许通过用户层的程序来对系统风扇进行控制(开,关,查询状态),支持它的硬件并不多

Dock

支持由ACPI控制的集线器(docking stations)

Processor

让ACPI处理空闲状态,并使用ACPI C2和C3处理器状态在空闲时节省电能,同时它还被cpufreq的"Performance-state drivers"选项所依赖

Thermal Zone

系统温度过高时可以利用ACPI thermal zone及时调整工作状态以避免你的CPU 被烧毁

ASUS/Medion Laptop Extras

ASUS笔记本专用,以提供额外按钮的支持,用户可以通过/proc/acpi/asus来打开

或者关闭LCD的背光/调整亮度/定制LED的闪烁指示等功能

IBM ThinkPad Laptop Extras

IBM ThinkPad专用

Toshiba Laptop Extras

Toshiba笔记本专用

Disable ACPI for systems before

Jan 1st this year

输入四位数的年份,在该年的1月1日前不使用ACPI的功能("0"表示一直使用)

Debug Statements

详细的ACPI调试信息,不搞开发就别选

Power Management Timer

Support

这个Timer在所有ACPI兼容的平台上都可用,且不会受PM功能的影响,建议总是启用它.如果你在kernel log中看到了'many lost ticks'那就必须启用它

ACPI0004,PNP0A05 and

PNP0A06 Container

Driver

支持内存和CPU的热插拔

Smart Battery

System

支持依赖于I2C的"智能电池".这种电池非常老旧且罕见,还与当前的ACPI标准兼

容性差

APM (Advanced Power Management) BIOS Support

APM在SMP机器上必须关闭,一般来说当前的笔记本都支持ACPI,所以应尽量关闭该该选项

Ignore USER SUSPEND

只有NEC Versa M系列的笔记本才需要选择这一项

Enable PM at boot time

系统启动时即启用APM,选上这个选项能让系统自动的进行电源管理,但常常导致启动时死机

Make CPU Idle calls when idle

系统空闲时调用空闲指令(halt),只有老式的CPU才需要选它,且对于SMP系统必须关闭

Enable console blanking using APM

在屏幕空白时关闭LCD背光,事实上对所有的笔记本都无效

RTC stores time in GMT

将硬件时钟应该设为格林威治时间,否则视为本地时间.建议你使用GMT,这样你无须为时区的改变而担心

Allow interrupts during APM BIOS calls

允许APM的BIOS调用时中断,IBM Thinkpad的一些新机器需要这项.如果休眠时挂机(包括睡下去就醒不来),可以试试它

Use real mode APM BIOS call to power off

此驱动为某些有Bug的BIOS准备,如果你的系统不能正常关机或关机时崩溃,可以试试它

CPU Frequency scaling

允许动态改变CPU主频,达到省电和降温的目的,必须同时启用下面的一种governor才行

Enable CPUfreq debugging

允许对CPUfreq进行调试

CPU frequency translation statistics

通过sysfs文件系统输出CPU频率变换的统计信息

CPU frequency translation statistics details

输出详细的CPU频率变换统计信息

Default CPUFreq governor

默认的CPU频率调节器

'performance' governor

'性能'优先,静态的将频率设置为cpu支持的最高频率

'powersave' governor

'节能'优先,静态的将频率设置为cpu支持的最低频率

'userspace' governor for userspace frequency scaling 既允许手动调整cpu频率,也允许用户空间的程序动态的调整cpu频率(需要额外的调频软件,比如cpufreqd)

'ondemand' cpufreq policy governor '立即响应',周期性的考察CPU负载并自动的动态调整cpu频率(不需要额外的调频软件),适合台式机

'conservative' cpufreq governor '保守',和'ondemand'相似,但是频率的升降是渐变式的(幅度不会很大),更适合用于笔记本/PDA/AMD64环境

ACPI Processor P-States driver 将ACPI2.0的处理器性能状态报告给CPUFreq processor drivers以决定如何调整频率,该选项依赖于ACPI->Processor

{省略的部分请按照自己实际使用的CPU选

择}

/proc/acpi/processor/../performance

interface

内核帮助文档反对使用该选项,即将被废除

Relaxed speedstep capability checks 放松对系统的speedstep兼容性检查,仅在某些老旧的Intel系统上需要打开

Bus options (PCI, PCMCIA, EISA, MCA,

ISA)

总线选项

PCI support

PCI支持,如果使用了PCI或PCI Express设备就必选

PCI access mode

PCI访问模式,强列建议选"Any"(系统将优先使用"MMConfig",然后使用"BIOS",最后使用"Direct"检测PCI设备)

PCI Express support

PCI Express支持(目前主要用于显卡和千兆网卡)

PCI Express Hotplug driver

如果你的主板和设备都支持PCI Express热插拔就可以选上

Use polling mechanism for hot-plug events

对热插拔事件采用轮询机制,仅用于测试目的

Root Port Advanced Error Reporting support

由PCI Express AER驱动程序处理发送到Root Port的错误信息

Message Signaled Interrupts (MSI and MSI-X)

PCI Express支持两类中断:INTx使用传统的IRQ中断,可以与现行的PCI总线的驱动程序和操作系统兼容;MSI则是通过inbound Memory Write触发和发送中断,更适合多CPU系统.可以使用"pci=nomsi"内核引导参数关闭MSI

PCI Debugging

将PCI调试信息输出到系统日志里

Interrupts on hypertransport devices

允许本地的hypertransport设备使用中断

ISA support

现在基本上没有ISA的设备了,如果你有就选吧

MCA support

微通道总线,老旧的IBM的台式机和笔记本上可能会有这种总线

NatSemi SCx200 support

在使用AMD Geode处理器的机器上才可能有

PCCARD (PCMCIA/CardBus) support

PCMCIA卡(主要用于笔记本)支持

Enable PCCARD debugging

仅供调试

16-bit PCMCIA support

一些老的PCMCIA卡使用16位的CardBus

32-bit CardBus support

当前的PCMCIA卡基本上都是32位的CardBus

CardBus yenta-compatible bridge support

使用PCMCIA卡的基本上都需要选择这一项,子项请按照自己实际使用的PCMCIA卡选择

{省略的部分请按照自己实际使用的PCMCIA卡选择}

PCI Hotplug Support

PCI热插拔支持,如果你有这样的设备就到子项中去选吧

Linux内核修改与编译图文教程

Linux 内核修改与编译图文教程 1

1、实验目的 针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。 2、任务概述 2.1 下载新内核 https://www.360docs.net/doc/c010053644.html,/ 2.2 修改新内核系统调用 添加新的系统调用函数,用来判断输入数据的奇偶性。 2.3 进行新内核编译 通过修改新版内核后,进行加载编译。最后通过编写测试程序进行测试 3、实验步骤 3.1 准备工作 查看系统先前内核版本: (终端下)使用命令:uname -r 2

3.2 下载最新内核 我这里使用的内核版本是 3.3 解压新版内核 将新版内核复制到“/usr/src”目录下 在终端下用命令:cd /usr/src进入到该文件目录 解压内核:linux-2.6.36.tar.bz2,在终端进入cd /usr/src目录输入一下命令: bzip2 -d linux-2.6.36.tar.bz2 tar -xvf linux-2.6.36.tar 文件将解压到/usr/src/linux目录中 3

使用命令: ln -s linux-2.6.36 linux 在终端下输入一下命令: sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot sudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt 4

实验四 linux-2.6.35内核的编译和配置

实验四 linux-2.6.35内核的编译和配置 【实验目的】 了解内核的编译过程及配置选项的内容 【实验环境】 1、 Ubuntu 10.10发行版 2、 u-boot-2010.03 3、 FS2410平台 4、 交叉编译器 arm-none-linux-gnueabi-gcc-4.3.2 【实验步骤】 实验步骤中的1-4,已经做过就不要重复了 1、 将实验代码中的rootfs.tar.bz2解压到/source 下,已经做过就不要重复了 $ tar xvf rootfs.tar.bz2 –C /source 2、 解压内核并进入内核目录 $ tar xvf linux-2.6.35.tar.bz2 $ cd linux-2.6.35 3、 修改Makefile 修改linux-2.6.35 目录下的Makefile ,找到 ARCH ?= $(SUBARCH) CROSS_COMPILE ?= 改为 ARCH ?= arm CROSS_COMPILE ?= arm-none-linux-gnueabi- 4、 配置内核 设置平台 设置编译工具

make menuconfig Kernel Features ---> [*] Use the ARM EABI to compile the kernel [*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL) 5、添加驱动文件 将实验代码2410GPIO_TEST_26/2410GPIO_TEST_drv.c拷贝到drivers/char下 6、修改对应Kconfig 修改drivers/char/Kconfig,在menu "Character devices"下面 加入如下内容: config 2410GPIO_TEST_DRV tristate "S3C2410 test drv Device Support" depends on ARCH_S3C2410 ---help--- support led test device driver on FS2410 develop board 7、修改对应Makefile 在drivers/char/Makefile 中 找到在obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o , 在其下一行添加: obj-$(CONFIG_2410GPIO_TEST_DRV) += 2410GPIO_TEST_drv.o 8、静态编译内核 ?配置内核时按“空格”选择,配置完成后保存退出 $ make menuconfig Device Drivers ---> Character devices ---> <*> S3C2410 test drv Device Support ?重新编译内核并把内核拷贝到tftpboot下 $ make zImage

内核参数的修改方法

Linux内核参数修改方法 由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。但是,当系统重新启动后,原来设置的参数值就会丢失,而系统每次启动时都会自动去/etc/sysctl.conf文件中读取内核参数,因此将内核的参数配置写入这个文件中,是一个比较好的选择。 首先打开/etc/sysctl.conf文件,查看如下两行的设置值,这里是: kernel.shmall = 2097152 kernel.shmmax = 4294967295 如果系统默认的配置比这里给出的值大,就不要修改原有配置。同时在/etc/sysctl.conf文件最后,添加以下内容: fs.file-max = 6553600 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 262144 这里的“fs.file-max = 6553600”其实是由“fs.file-max = 512 * PROCESSES”得到的,我们指定PROCESSES的值为12800,即为“fs.file-max =512 *12800”。 sysctl.conf文件修改完毕后,接着执行“sysctl -p”使设置生效。 [root@localhost ~]# sysctl -p 常用的内核参数的含义如下。 kernel.shmmax:表示单个共享内存段的最大值,以字节为单位,此值一般为物理内存的一半,不过大一点也没关系,这里设定的为4GB,即 “4294967295/1024/1024/1024=4G”。 kernel.shmmni:表示单个共享内存段的最小值,一般为4kB,即4096bit. kernel.shmall:表示可用共享内存的总量,单位是页,在32位系统上一页等于4kB,也就是4096字节。 fs.file-max:表示文件句柄的最大数量。文件句柄表示在Linux系统中可以打开的文件数量。 ip_local_port_range:表示端口的范围,为指定的内容。 kernel.sem:表示设置的信号量,这4个参数内容大小固定。 net.core.rmem_default:表示接收套接字缓冲区大小的缺省值(以字节为单位)。 net.core.rmem_max :表示接收套接字缓冲区大小的最大值(以字节为单位) net.core.wmem_default:表示发送套接字缓冲区大小的缺省值(以字节为单位)。 net.core.wmem_max:表示发送套接字缓冲区大小的最大值(以字节为单位)。

linux内核的网络配置

文章来源 https://www.360docs.net/doc/c010053644.html,/p/2088592067 第9节, Networking support 关于网络支持 上图 讲解; RF switch subsystem support 这个一般是要的,因为有些无线和蓝牙放在一张卡上 选m,wireless(无线)里面的一些选项随之会自动选m,上图 注意: cfg80211 wireless extensions compatibility 这个兼容选项要选择,3.7默认是没有选择

如果没有选择,iwconfig会报告没有扩展 Bluetooth subsystem support 蓝牙,可以自己选择,如果有m就行 还有子选项自己看下 如果还有红外线,无线电,对应选择,这个设备应该是很少networking option最上面的,全局网络选项,上图

Packet socket和Unix domain sockets 备必,而且不能成模块,不然udev会报一段信息给你 Transformation user configuration interface 选m,其实也很少用,像ipsec,下面的ipsec也可以选成模块 TCP/IP networking 要的,要的,子选项大部分不用,你也可以选上 IP: multicasting 多播 IP: advanced router 高级路由 你需要选上 IP: TCP syncookie support ~~sync flooding,同时还必须。。。个人没什么意义Large Receive Offload提高网络的东西,这个Y,如果你觉得现在不用,先m TCP: advanced congestion control这个你也可以Y The IPv6 protocol 很多要用到,虽然在兲现在没用,像systemd就要了 Security Marking和Network packet filtering framework (Netfilter) 个人没什么意义,你可以试下

操作系统实验1(编译内核)实验指导书

实验一虚拟机平台下的Linux内核编译 步骤一、实验准备:将windows下的Linux-2.4.32内核复制到虚拟机中。 一般有三种方法可以实现:虚拟磁盘、文件共享、网络设置。 下面介绍的是虚拟磁盘的方法: 我们已经将Linux-2.4.32内核源代码的压缩文件放入虚拟磁盘,并在FTP上共享。 1.请从FTP服务器上将实验指导书以及虚拟磁盘拷贝到E盘根目录下。 2. windows平台下启动虚拟机VMware, VMWare中安装虚拟硬盘: 1)安装前建议先把内存调大一些,这样后面编译的速度会快一些。(Memory,调到512M) 2)点击Add 3)点击Next

上述步骤完成后点击Finish 。 观察发现:虚拟机中将出现两个磁盘,一个是原有的磁盘,另一个是虚拟磁盘,相当于对本机外接了一个磁盘。(请将设置完成后的虚拟机中出现两个磁盘的界面截图,一个是6G ,另一个106M )。

4.启动Linux操作系统 在启动过程中可以见到当前只有一个可选择内核,内核版本是Linux2.4.20。我们本次实验的目的是在虚拟机下重新编译一个新的内核,内核版本是Linux2.4.32.完成本实验后,重启虚拟机将出现两个可选择内核。 5.将虚拟磁盘安装到/mnt/mydisk目录下.(mount命令),如图: 1)先用fdisk –l命令查看虚拟磁盘是否“连接”成功。记下虚拟磁盘名称(/dev/sdb)。 2)进入到mnt目录下创建mydisk目录,该目录作为访问虚拟磁盘的入口,此时该目录为空。 3)返回根目录root,并安装虚拟磁盘:mount /dev/sdb /mnt/mydisk

CMMI基本概念

CMMI基本概念 ATM组成员: 参加评审文档及访谈,完成证据的记录和收集(包括文档证据和访谈证据),填写PIID,根据所收集的证据参与评估结果的讨论和认定。 需要熟悉CMMI模型(3级熟悉18个PA)、公司的标准过程以及SCAMPI A类评估方法。 CMMI过程模型,EPG是否由ATM组成? EPG和ATM是两个不同的概念, EPG指Engineering Process Group工程过程小组,是您企业实施过程改进工作的一组人员。负责文档的制定和实施。 ATM指Appraisal Team Member评估小组成员,是您企业需要进行CMMI评估时担任评估证据收集及分析的一组人员,ATM的成员因为受到一些公平性原则的限制在选择上是有约束的。 EPG的职责是什么? 全面改善开发流程,提高开发质量,减少开发成本,缩短开发周期,提升开发效率,形成组织级的开发模式。 EPG成员的要求EPG Leader 须由项目经理及以上的成员担任 熟知部门开发业务及相应的开发流程 对开发中心内部流程必须精通 对过程改进有强烈意愿。 EPG Member 须是资深工程师或以上的成员担任; 必须对系统分析、软件开发、问题解决、以及项目发展之流程改进具有高度兴趣; 有较好的沟通、协调能力。 成员退出和进入的机制

成员的退出和进入,需要经过EPG的测试,并报EPG Leader审核,最终由总经理或管理者代表进行批准,方可办理退出或进入手续。EPG需负责对新进入的成员进行培训相关CMMI的知识内容,并保留对新进员工的考核,通过者方能正式进入EPG小组。 任务的分工按照CMMI的过程域来划分各自的任务; 不同人员负责不同的过程域,主导并负责该过程域的所有事宜; 除主要负责的过程域内容,负责协助其他成员的结果review; 按照日常活动分工合作,以事件为主导原则。 CMMI认证里面PM是做什么? PM是项目管理(project management)的缩写,所谓项目管理,美国最早的曼哈顿计划开始的名称,后由华罗庚教授50年代引进中国(由于历史原因叫统筹法和优选法),现在的台湾省叫项目专案。就是项目的管理者,在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。即从项目的投资决策开始到项目结束的全过程进行计划、组织、指挥、协调、控制和评价,以实现项目的目标。近年来,PM认证和PM教育都已经正常化、经常化、普及化,不再称为统筹法。在工程管理以及其他管理对象有显著的开始和结束期限的管理领域,属于关键管理工具或技能。 PA中CM是做什么? 配置管理(Configuration Management,CM)是通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施。配置管理的目标是记录软件产品的演化过程,确保软件开发者在软件生命周期中各个阶段都能得到精确的产品配置。 配置管理过程是对处于不断演化、完善过程中的软件产品的管理过程。其最终目标是实现软件产品的完整性、一致性、可控性,使产品极大程度地与用户需求相吻合。它通过控制、记录、追踪对软件的修改和每个修改生成的软件组成部件来实现对软件产品的管理功能。 随着软件系统的日益复杂化和用户需求、软件更新的频繁化,配置管理逐渐成为软件生命周期中的重要控制过程,在软件开发过程中扮演着越来越来重要的角色。 软件配置管理的最终目标是管理软件产品。由于软件产品是在用户不断变化的需求

linux 内核参数修改

linux 内核参数修改 配置 Linux 内核参数(2种方法),修改后不用重启动更新: /sbin/sysctl -p 第一种:打开/etc/sysctl.conf 复制如下内容 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default=262144 net.core.wmem_default=262144 net.core.rmem_max=262144 net.core.wmem_max=262144 第二种:打开终端 cat >> /etc/sysctl.conf< kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default=262144 net.core.wmem_default=262144 net.core.rmem_max=262144 net.core.wmem_max=262144 EOF 这里,对每个参数值做个简要的解释和说明。 (1)shmmax:该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。(2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。 (3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。(共享内存段的数量,以页为主,每个页是4K) (4)sem:该参数表示设置的信号量。一般大于maxproc的一点就行了。 (5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。 修改好内核以后,执行下面的命令使新的配置生效。 [root @linux1 /root]# /sbin/sysctl -p 以 root 用户身份运行以下命令来验证您的设置: /sbin/sysctl -a | grep shm /sbin/sysctl -a | grep sem /sbin/sysctl -a | grep file-max /sbin/sysctl -a | grep ip_local_port_range 例如: # /sbin/sysctl -a | grep shm kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.shmmax = 2147483648

如何安装Linux内核源代码

如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux 内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。 使用Git 由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。 你可以使用下面的Git命令获取Linus内核代码树的最新“推送”版本: $ git clone git://https://www.360docs.net/doc/c010053644.html,/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 然后使用下面的命令将你的代码树与Linus的代码树最新状态同步: $ git pull 安装内核源代码 内核包有GNU zip(gzip)和bzip2格式。Bzip2是默认和首选格式,因为它的压缩比通常比gzip更好,bzip2格式的Linux内核包一般采用linux-x.y.z.tar.bz2形式的文件名,这里的x.y.z是内核源代码的具体版本号,下载到源代码包后,解压和抽取就很简单了,如果你下载的是bzip2包,运行: $ tar xvjf linux-x.y.z.tar.bz2 如果你下载的是gzip包,则运行: $ tar xvzf linux-x.y.z.tar.gz 无论执行上面哪一个命令,最后都会将源代码解压和抽取到linux-x.y.z目录下,如果你使用Git下载和管理内核源代码,你不需要下载tar包,只需要运行git clone命令,它就会自动下载和解压。 内核源代码通常都会安装到/usr/src/linux下,但在开发的时候最好不要使用这个源代码树,因为针对你的C库编译的内核版本通常也链接到这里的。 应用补丁

编译内核实验报告

实验一编译Linux内核 实验时间 6小时 实验目的 认识Linux内核的组成,掌握配置、编译、安装Linux内核的步骤。 实验目标 下载2.6.19或更新的Linux内核,配置该内核使其支持NTFS,并在新的内核中修改其版本为Linux NameTestKernel x.x.x,其中,Name是你的名字(汉语拼音);x.x.x是新内核的版本号,最后在你的机器上编译安装这个新内核。 背景知识 参见《Red Hat Enterprise Linux 4入门与提高》第20章。 实验步骤 1.验证gcc的可用:在你自己的工作目录下,编译链接运行Hello World程序。 2.在https://www.360docs.net/doc/c010053644.html,上下载指定的内核,或者查找更新的稳定版内核并 下载之。 3.准备相关工具。 提示:如当前运行的Linux内核是基于2.4版本的,则需要更新以下软件: module-init-tools和mkinitrd。具体更新信息可参见下载内核源代码中的 Documentation/Changes这个文件。 4.把源代码解压缩至/usr/src中,最终形成/usr/src/linux x.x.x/目录(x.x.x是新 内核的版本号)。 提示:这里的注意点是路径的选择,一般要放在/usr/src/linux x.x.x/目录下面,以满足Makefile对路径设置的初始要求。 5.进入源代码的根目录,找到合适自己的内核配置方法,并按照实验目标对其 进行配置。

6.修改/usr/src/linux x.x.x/linux/include/linux/verson.h文件中的版本信息。 7.编译内核。 8.安装模块文件。 9.安装内核文件。 10.重新启动新内核。 实验结果 1.实验步骤1中,编译链接运行程序你下达了哪些命令? 2.实验步骤2中,你下载了哪个版本的内核文件? 3.实验步骤3中,你是否安装了相关工具?如安装,则写出安装过程。 4.实验步骤4中,你是用哪些命令解压缩内核文件的? 5.实验步骤5中,你用了哪种内核配置的方法? 6.你对实验步骤6中涉及的文件做了怎样的修改? 7.实验步骤7-9的过程,是否出现错误?如有,你是如何解决的? 8.观察你机器中GRUB的配置文件,它在安装完新内核后发生了哪些变化? 9.新内核启动过程是否成功?如有错误,是哪些错误?你是如何消错的?

无线的基本概念和配置

无线的基本概念和配置 分类:WINDOWS 1网络中的无线用户抱怨房间内一小块区域的网络性能差。朝任意方向移出此区域后,性能立即显著上升。 为此问题设计解决方案的第一步是什么? 这可能是因 RF 信道重叠引起的,因此技术人员检验每个接入点上正在使用的信道,并更换为不重叠的信道。 为房间提供服务的无线接入点的 RF 功率设置可能太低了。增大所有无线接入点的 RF 输出功率。 在中心区域安装一个新的无线接入点以提供覆盖。 检验无线接入点是否具有足够的在线供电容量以及和有线网络的连通性。 2下列关于无线安全协议的限制或补充中哪两项正确?(选择两项。) 当采用 802.1x 确保无线安全性时, RADIUS 流量允许客户端使用开放式身份验证关联。 WPA2 个人模式允许在 SOHO 环境中使用 RADIUS。 802.1x 协议的 RADIUS 部分需要 AAA 服务器。 使用 WPA2 进行身份验证时,不允许使用预共享密钥。 WPA 将 SSID 隐藏和 MAC 地址过滤作为安全措施而引入。 WPA2 在 WPA 基础上引入了 802.1x 端口身份验证,从而加强了安全性。 3为支持客户端关联过程,802.11 标准中指定了哪两种身份验证方法?(选择两项。) 轻型可扩展身份验证协议 (EAP) 共享密钥 高级加密标准 (AES) 临时密钥完整性协议 (TKIP) 开放式身份验证 4下列关于配置 AP 的说法中哪两项正确?(选择两项。) 如果 AP 不允许采用 WEP 进行加密,则应该采用 WPA 进行配置。 当使用 Wireless-N、Wireless-B 和 Wireless-G 设备时应该将无线频段设置为标准或 20 Mhz。 如果选择了宽频 40 MHz 信道作为无线频段设置,则标准信道是 Wireless-N 的次要信道。 禁用 SSID 广播可防止任何用户未经授权连接到 AP。 AES 提供了比 TKIP 更强的安全性。 5下列关于网络安全性的说法中那三项准确?(选择三项。)

内核配置与裁剪

内核配置与裁剪 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设置内核参数的方法 1内核参数的查看方法 使用“sysctl -a”命令可以查看所有正在使用的内核参数。内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4、net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom 、dev.raid、kernel等等。相同的linux,安装的组件和使用的方式不一样,正在使用的内核参数是不一样的。 所有的内核参数的说明文档是放到/usr/src/linux/Documentation/sysctl中的,如果想知道对内核参数的说明,可以到该目录下查看相应的说明文档。 2内核参数的的设置方法 由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。也可以通过文件的方式进行设置。下面就介绍这两种修改方法。 2.1命令设置的方式 可以用两种方法实现。 1、使用“sysctl -w 参数名=值”的方式 假设我们把net.ipv4.ip_forward的值修改为1,使用命令“sysctl -w net.ipv4.ip_forward=1”。 2、修改内核参数对应的proc文件 内核参数位于/proc/sys/之下,参数名称是以文件所在的路径,并将“/”以“.”来取代。举例来说,/proc/sys/net/ip_forward的参数名称为net.ipv4.ip_forward。 同样把net.ipv4.ip_forward的值修改为1,使用命令“echo “1”> /proc/sys/net/ipv4/ip_forward”。 注意,这里proc文件跟普通的文件不一样。一般一个文件用echo写入内容之后,会变成一个文本文件,但echo修改proc文件之后还是个空文件。 2.2文件设置的方式 更改的内核参数默认保存在/etc/sysctl.conf文件中。修改的时候可以直接用vi编辑sysctl.conf文件,增加要修改的内核参数内容,修改的格式为:参数名=值。例如,把net.ipv4.ip_forward的值修改为1,在sysctl.conf中增加下面这行内容:net.ipv4.ip_forward=1 文件修改好后,进行保存。然后使用“sysctl -p 配置文件名”来使配置生效,如果配置文件是默认的,可以不用输配置文件名,即使用“sysctl -p”。 通过文件设置的方式修改的内核参数是在系统重启后将失效(我之前认为修改后的内核参数放在文件中,系统启动的时候会读这个文件,重启后设置应该不会失效。但经过验证,一般会失效,但如果把将默认的boot.sysctl服务打开,所以系统启动时就会执行这个文件的设置)。把我们修改参数的命令写入启动执行脚本文件里/etc/rc.local,这样系统重启后配置就不会失效。 文件方式的好处是内核参数设置的值可以用文件保留下来,调用“sysctl -p”可以使文

Linux 2.6.19.x内核编译配置选项简介(2)

Linux 2.6.19.x内核编译配置选项简介(2) Security Marking 对网络包进行安全标记,类似于nfmark,但主要是为安全目的而设计,如果你不明白的话就别选 Network packet filtering (replaces ipchains) Netfilter可以对数据包进行过滤和修改,可以作为防火墙("packet filter"或"proxy-based")或网关(NAT)或代理(proxy)或网桥使用.选中此选项后必须将"Fast switching"关闭,否则将前功尽弃 Network packet filtering debugging 仅供开发者调试Netfilter使用 Bridged IP/ARP packets filtering 如果你希望使用一个针对桥接的防火墙就打开它 Core Netfilter Configuration 核心Netfilter配置(当包流过Chain时如果match某个规则那么将由该规则的target来处理,否则将由同一个Chain中的下一个规则进行匹配,若不match所有规则那么最终将由该Chain的policy进行处理) Netfilter netlink interface 允许Netfilter在与用户空间通信时使用新的netlink接口.netlink Socket是Linux用户态与内核态交流的主要方法之一,且越来越被重视 Netfilter NFQUEUE over NFNETLINK interface 通过NFNETLINK接口对包进行排队 Netfilter LOG over NFNETLINK interface 通过NFNETLINK接口对包记录.该选项废弃了ipt_ULOG和ebg_ulog机制,并打算在将来废弃基于syslog 的ipt_LOG和ip6t_LOG模块 Layer 3 Independent Connection tracking 独立于第三层的链接跟踪,通过广义化的ip_conntrack支持其它非IP协议的第三层协议 Netfilter Xtables support 如果你打算使用ip_tables,ip6_tables,arp_tables之一就必须选上 "CLASSIFY" target support 允许为包设置优先级,一些排队规则(atm,cbq,dsmark,pfifo_fast,htb,prio)需要使用它 "CONNMARK" target support 类似于"MARK",但影响的是连接标记的值 "DSCP" target support 允许对ip包头部的DSCP(Differentiated Services Codepoint)字段进行修改,该字段常用于Qos "MARK" target support 允许对包进行标记(通常配合ip命令使用),这样就可以改变路由策略或者被其它子系统用来改变其行为"NFQUEUE" target Support 用于替代老旧的QUEUE(iptables内建的target之一),因为NFQUEUE能支持最多65535个队列,而QUEUE 只能支持一个 "NOTRACK" target support 允许规则指定哪些包不进入链接跟踪/NA T子系统 "SECMARK" target support

史上最全linux内核配置详解

对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。只有<>才能选择M 1. General setup(通用选项) [*]Prompt for development and/or incomplete code/drivers,设置界面中显示还在开发或者还没有完成的代码与驱动,最好选上,许多设备都需要它才能配置。 [ ]Cross-compiler tool prefix,交叉编译工具前缀,如果你要使用交叉编译工具的话输入相关前缀。默认不使用。嵌入式linux更不需要。 [ ]Local version - append to kernel release,自定义版本,也就是uname -r可以看到的版本,可以自行修改,没多大意义。 [ ]Automatically append version information to the version string,自动生成版本信息。这个选项会自动探测你的内核并且生成相应的版本,使之不会和原先的重复。这需要Perl的支持。由于在编译的命令make-kpkg 中我们会加入- –append-to-version 选项来生成自定义版本,所以这里选N。 Kernel compression mode (LZMA),选择压缩方式。 [ ]Support for paging of anonymous memory (swap),交换分区支持,也就是虚拟内存支持,嵌入式不需要。 [*]System V IPC,为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。 [*]POSIX Message Queues,这是POSIX的消息队列,它同样是一种IPC(进程间通讯)。建议你最好将它选上。 [*]BSD Process Accounting,允许进程访问内核,将账户信息写入文件中,主要包括进程的创建时间/创建者/内存占用等信息。可以选上,无所谓。 [*]BSD Process Accounting version 3 file format,选用的话统计信息将会以新的格式(V3)写入,注意这个格式和以前的v0/v1/v2 格式不兼容,选不选无所谓。 [ ]Export task/process statistics through netlink (EXPERIMENTAL),通过通用的网络输出工作/进程的相应数据,和BSD不同的是,这些数据在进程运行的时候就可以通过相关命令访问。和BSD类似,数据将在进程结束时送入用户空间。如果不清楚,选N(实验阶段功能,下同)。 [ ]Auditing support,审计功能,某些内核模块需要它(SELINUX),如果不知道,不用选。 [ ]RCU Subsystem,一个高性能的锁机制RCU 子系统,不懂不了解,按默认就行。 [ ]Kernel .config support,将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc/ config.gz中得到内核的配置,选上,重新配置内核时可以利用已有配置Enable access to .config through /proc/config.gz,上一项的子项,可以通过/proc/ config.gz访问.config配置,上一个选的话,建议选上。 (16)Kernel log buffer size (16 => 64KB, 17 => 128KB) ,内核日志缓存的大小,使用默认值即可。12 => 4 KB,13 => 8 KB,14 => 16 KB单处理器,15 => 32 KB多处理器,16 => 64 KB,17 => 128 KB。 [ ]Control Group support(有子项),使用默认即可,不清楚可以不选。 Example debug cgroup subsystem,cgroup子系统调试例子 Namespace cgroup subsystem,cgroup子系统命名空间 Device controller for cgroups,cgroups设备控制器

Linux 内核编译配置选项简介

General setup常规设置 Local versio n - append to kernel release 在内核版本后面加上自定义的版本字符串(小于64字符),可以用"uname -a"命 令看到 Automatically append version information to the versio n string 自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持 Support for paging of anonymous memory (swap) 使用交换分区或者交换文件来做为虚拟内存 System V IPC System V进程间通信(IPC)支持,许多程序需要这个功能.必选,除非你知道自己 在做什么 POSIX Message Queues POSIX消息队列,这是POSIX IPC中的一部分 BSD Process Accounting 将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/ 内存占用等信息 Export task/process statistics through netlink 通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的 UTS Namespaces UTS名字空间支持,不确定可以不选 Auditing support 审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统 调用进行审计 Kernel .config support 把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来 提取这些信息 Cpuset support 只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需 要它 Kernel->user space relay support (formerly relayfs) 在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接 口

linux内核配置模块编译安装

Linux内核配置编译和加载 Linux内核模块 Linux内核结构非常庞大,包含的组件也非常多,想要把我们需要的部分添加到内核中,有两个方法:直接编译进内核和模块机制 由于直接编译进内核有两个缺点,一是生成的内核过大,二是每次修改内核中功能,就必须重新编译内核,浪费时间。因此我们一般采用模块机制,模块本身不被编译进内核映像,只有在加载之后才会成为内核的一部分,方便了修改调试,节省了编译时间。 配置内核 (1)在drivers目录下创建hello目录存放hello.c源文件 (2)在hello目录下新建Makefile文件和Kconfig文件 Makefile文件内容: obj-y += hello.o //要将hello.c编译得到的hello.o连接进内核 Kconfig文件内容: 允许编译成模块,因此使用了tristate (3)在hello目录的上级目录的Kconfig文件中增加关于新源代码对应项目的编译配置选项 修改即driver目录下的Kconfig文件,添加

source "drivers/hello/Kconfig" //使hello目录下的Kconfig起作用 (4)在hello目录的上级目录的Makefile文件中增加对新源代码的编译条目 修改driver目录下的Makefile文件,添加 obj-$(CONFIG_HELLO_FOR_TEST) += hello/ //使能够被编译命令作用到 (5)命令行输入“make menuconfig”,找到driver device,选择select,发现test menu 已经在配置菜单界面显示出来 (6)选择test menu进入具体的配置,可以选择Y/N/M,这里我选择编译为M,即模块化 (7)保存退出后出现 (8)进入kernels目录中使用“ls -a”查看隐藏文件,发现多出.config隐藏文件,查看.config 文件

配置管理的基本概念

配置管理的基本概念 随着国内软件业的崛起和成熟,软件配置管理越来越得到重视。可以说,软件业要想更好的发展,没有软件配置管理的支持是不可能的。手工作坊式的软件开发模式将会成为历史,如何把国外成熟的软件配置管理理论和经验消化吸收,进而应用到国内软件开发中就成为国内软件业迫在眉睫的任务了。 软件配置管理是管理和技术相结合的一门学科。应该说,软件配置管理理论难以理解是其难以实践的原因。本文试从基本概念的角度来探讨这门对软件开发具有重要意义的领域。 什么是配置管理 在软件开发中,变更是不可避免的。从某种角度上讲,软件开发过程就是一个变更的过程。有些变更是有益的,是具有创造性的,但是,也有些变更是有害的,导致混乱的。正像James Bach总结的那样: 我们为变更所困扰,因为代码中的一个极小的混乱可能带来产品的大的故障,但是,他也能够修复大的故障或启用奇妙的新能力。我们为变更所困扰,因为某个喜欢恶作剧的单个开发者可能破坏掉项目,但是,一些奇妙的思想也源自那些喜欢恶作剧的人员。 因此,如何管理这些变更是一个软件开发能否成功的关键。简言之,软件配置管理就是管理变更的过程,它贯穿着几乎软件的整个生命周期。成功的配置管理系统可以提高产品的质量、项目开发效率,而且最大限度的减少对个别“英雄”式人员的依赖。 尽管配置管理(Configuration Management )这个概念被提出有几十年了,但是,业内还没有一个全面而权威的定义。Configuration的意思是“使成形”,它来源于拉丁语的com-(表示“与”或者“一起”)和figurate (形成)。它还有一个意思是“组成部件或元素的相对排列”。因此,配置管理(Configuration Management )指的是管理组成部件或者元素的相对排列。 配置管理的概念来自于硬件领域,美国国防部最早使用了配置管理的概念。我们知道一架飞机的构成非常复杂,比如机头、机身、机翼和机尾等。不同型号飞机的各个部分是不能随便组装的。因此,我们只有把相匹配的部件组装在一起,才能构成了一个功能完备的飞机整体。随着技术的提高,各个部件可能还要进行功能改善,我们还要使得不同版本的部件能够正确无误组合在一起。 准确地说: 配置管理是对产品进行标识、存储和控制,以维护其完整性、可追溯性以及正确性的学科。 从上面的描述,我们知道,配置管理的基本单位是配置项。软件配置项可以是:

相关文档
最新文档