当前位置:文档之家› LINUX内核配置详解

LINUX内核配置详解

LINUX内核配置详解
LINUX内核配置详解

内核编译配置选项简介(2.4.18-rmk7-pxal)

来源: ChinaUnix博客作者:发布时间:2007-01-02

Code maturity level options 代码成熟度选项

Prompt for development and/or incomplete code/drivers

显示尚在研发中或尚未完成的代码和驱动.除非您是测试人员或研发者,否则请勿选择

我是研发者,所以选

[ ]Prompt for obsolete code/drivers

显示废弃的代码或驱动

Loadable module support 可加载模块支持

Enable loadable module support

打开可加载模块支持,假如打开他则必须通过"make modules_install"把内核模块安装在

/lib/modules/中

[ ]Set version information on all module symbols

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

建议不选,能够避免模块版本不匹配

kernel module loader

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

System Type 系统类型

(S3C2410-based) ARM system type

ARM系统,基于S3C2410

---S3C2410 Implementation 基于S3C2410架构的实现

SMDK (MERI TECH BOARD)

SMDK2410是Samsung的S3C2410的Reference board,即公板

公板是芯片厂家提供的样板卡。现在市面上的产品绝大多数都是公板的,因为使用公板能够减少研发成本,特别是现在产品的推

陈出新速度很快,造成绝大多数生产厂商为了追新,只能使用公板。

change AIJI

支持AIJI的更新

韩国爱极(AIJI)系统有限公司是三星公司最重要的技术合作伙伴,能够提供基于任何三星处理器尤其是三星ARM处理器的研发

解决方案,如基于44B0、2410、2412、2413、2440、PSA926EJ和PSA920T等处理器的研发板

by threewater--]

三水==刘淼,呵呵,博创技术总监

S3C2410 USB function support

支持S3C2410的USB功能

Support for S3C2410 USB character device emulation

支持S3C2410的USB字符设备仿真

---Processor Type 处理器类型

ARM920T CPU idle

ARM920T I-Cache on

ARM920T Instruction Cache

ARM920T D-Cache on

ARM920T Data Cache

一级缓存中分数据缓存(Data Cache,D-Cache)和指令缓存(Instruction Cache,I-Cache)。二者分别用来存放数据和执行

这些数据的指令,而且两者能够同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。

[ ]Force write through caches on ARM920T

[ ]Support Thumb instructions (experimental)

支持Thumb指令集

Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,因此,大多数的Thumb指令是无条件执行的,而几乎任

何的ARM指令都是有条件执行的。

ARM指令集和Thumb指令集各有其长处,若对系统的性能有较高需要,应使用32位的存储系统和ARM指令集,若对系统的成本及功

耗有较高需要,则应使用16位的存储系统和Thumb指令集。当然,若两者结合使用,充分发挥其各自的长处,会取得更好的效果

General setup 常规配置

[ ]Compressed boot loader in ROM/flash

在ROM/flash中压缩bootloader

(0)Compressed ROM boot loader base address

(0)Compressed ROM boot loader BSS address

地址偏移?需要输入一个16进制的数

Support for hot-pluggable devices

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

PCCARD (PCMCIA/CardBus) support --->

PCMCIA/CardBus support

PCMCIA

/

CardBus

支持

[ ] i82365 compatible bridge support

[ ] Databook TCIC host bridge support

S3C2410 CPLD support

S3C2410 CPLD 支持

CPLD是Complex

PLD的简称,顾名思义,其是一种较PLD为复杂的逻辑元件。CPLD是一种整合性较高的逻辑元件,由于具备高整合性的特点,故其

有性能提升,可靠度增

加,PCB面积减少及成本下降等长处。

PLD(Programmable Logic Device)——可编程逻辑器件,是一种由用户编程以实现某种逻辑功能的新型逻辑器件。

默认

Networking support

网络支持。必须,没有网卡也建议您选上。

System V IPC

System V进程间通信(IPC)支持,许多程式需要这个功能.必选,除非您知道自己在做什么

[ ]BSD Process Accounting

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

Sysctl support (/proc/sys)

显示各种不同的内核参数,并让root用户能交互地更改其中的某些内容

以上三项是有关进程处理/IPC调用的,主要就是System V和BSD两种风格。假如您不是使用BSD,就按照缺省吧

--- At least one math emulation must be selected

至少要选择一种数学仿真模式

NVFPE math emulation

FastFPE math emulation (experimental)

网上有人试验过,不选NVFPE的话,在run_init_process时当机

[ELF]kernel core (/proc/kcore) format

系统物理内存映象的格式,用于内核调试

编译内核时,假如要利用-g选项来保存调试信息,这个将选项极其重要。

A.out适用于一些老旧的平台

Kernel support for a.out binaries

早期UNIX系统的可执行文档格式,现在已被ELF格式取代

Kernel support for ELF binaries

ELF是开放平台下最常用的二进制文档格式,支持动态连接,支持不同的硬件平台.除非您知道自己在

做什么,否则必选

Kernel support for MISC binaries

允许插入二进制的封装层到内核中,使用Java,.NET,Python,Lisp等语言编写的程式时需要他

选,用于支持java等代码的自动执行

[ ]Power Management support

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

[ ]Support CONSOLE_PM

[ ]disable COM_KILLER

[ ]reduce TTY slot modular arithmetic range

RISC PS personality

[ ]do not run parse_tag_cmdline() in arch/arm/kernel/setup.c

Default kernel command string: "root=1f04 mem=32M"

[ ]Timer and CPU usage LEDs

Kernel-mode alignment trap handler

内核模式错误处理程式

Parallel port support 并口支持(传统的打印机接口)

Parallel port support

Memory Technology Devices (MTD)

特别的存储技术装置,如常用于数码相机或嵌入式系统的闪存卡

Memory Technology Devices (MTD) support

MTD partitioning support

支持MTD分区

Direct char device access to MTD devices

MTD字符设备直接访问

从MTD设备到字符设备的直接映射,他为系统里每一个MTD设备提供了一个对应的字符设备。

通过这个字符设备,用户能够直接读写存储块,并且能够利用ioctl()函数获得该设备的信息,甚至能够删除MTD设备的某些存储

块。

Caching block device access to MTD devices

MTD块设备缓冲访问

NAND Flash Device Drivers --->

NAND Device Support

SMC Device Support

SM卡设备驱动

Plug and Play support 即插即用支持

Plug and Play support

即插即用支持,若未选则应当在BIOS中关闭“PnP OS”,这里的选项和PCI设备无关

BLOCK devices 块设备

Networking options 网络选项

Packet socket

这种Socket能够让应用程式使用Packet协议直接和网络设备通讯,而不通过内核中的其他中介协议,例如tcpdump,iptables

Packet socket: mmapped IO

让Packet socket驱动程式使用IO映射机制以使连接速度更快

Netlink device emulation

该选项现在是个兼容性设备,在将来的内核中将被real netlink socket取代。当某个程式需要访问字符节点如:/dev/tap0 或

/dev/route 时需要此功能。

[ ]Network packet filtering (replaces ipchains)

Netfilter能够对数据包进行过滤和修改,能够作为防火墙("packet filter"或"proxy-based")或网关(NAT)或代理(proxy)或网桥

使用.选中此选项后必须将"Fast switching"关闭,否则将前功尽弃

过滤防火墙功能的支持。假如要使用Linux防火墙功能,必须开启该选项。只有该选项被选中,后面的IP: Netfilter

Configuration --->和IP: Virtual Server Configuration ---> 才会出现。

[ ] Socket Filtering

Unix套接字的过滤功能。用户态的程式能够通过过滤来告诉内核哪些数据能够通过Socket,哪些数据不能够通过Socket。

Unix domain sockets

Unix套接字的支持。很多程式都会用到Unix套接字在操作系统内部进行进程间通信(IPC),例如:PostgreSQL、MySQL、Postfix

、X Window和syslog

TCP/IP networking

核将支持TCP/IP协议。这个选项无论如何都要选择Y,即使没有网络卡,或是没有连到网络上的设备,在Linux上仍有所谓的

lookback设备,而且有些程式需要选择该选项。假如用户没有打开这个配置,则X-window

system可能会有问题,因为他也需要TCP/IP。

IP: multicasting

多播支持。

multicasting是群组广播,他是用在视频会议上的协议,假如想发送一个网络封包(网络的数据),同样的一份数据将送往十部

电脑上。用户能够连

续送十次分别给十台电脑(点对点的传送),也能够同时送一次,然后让十台电脑同时接收到。当然后者比前者好,由于视频会

议需要最好每个人都能同时收到

同一份信息,所以假如用户有类似的需要,这个选项就要选择,同时用户还必须去找相关的软件。

[ ]IP: advanced router

高级路由,假如想做一个路由器就选吧

[ ]IP: kernel level autoconfiguration

内核级自动配置。当内核启动时自动通过内核命令或BOOTP 或 RARP协议配置网络设备的IP地址和路由表。一般用在网络启动或

无盘工作站系统中。

IP: tunneling

IP

隧道,将一个IP报文封装在另一个IP报文内的技术,这能够使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。

IP隧道技术亦称为IP封

装技术(IP encapsulation)。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。

IP: GRE tunnels over IP

于IP的GRE(Generic Routing

Encapsulation)隧道。GRE隧道能够基于IPv4的基础网络来封装IPv4或IPv6的网络协议,并且GRE隧道能够使用多播功能

(Linux的IP隧道不能够)。主要在Linux和Cisco等路由设备使用隧道进行通讯时使用。

[ ]IP: multicast routing

多重传播路由

[ ]IP: ARP daemon support

这东西尚处于试验阶段就已被废弃了

[ ]IP: TCP Explicit Congestion Notification support

ECN(显式拥塞指示)的支持。由于现在很多老的路由器和防火墙不支持ENC,因此假如您启用了此功能,大概不能和互连网上8%的

主机进行通讯。好处嘛,从名称大概略知一二了吧!

[ ]IP: TCP syncookie support (disabled per default)

抵抗SYN flood攻击的好东西,要启用他必须同时启用/proc文档系统和"Sysctl support",然后在系统启动并挂载了/proc之后

执行"echo 1 >/proc/sys/net/ipv4/tcp_syncookies"命令,关于syscookie的更多信息,请访问:

http://cr.yp.to/syncookies.html

The IPv6 protocol

需要IPv6就选吧

Kernel httpd acceleration

[ ]Asynchronous Transfer Mode (ATM)

异步传输模式(ATM)支持

802.1Q VLAN Support

用Linux加上一台二层交换机来实现三层交换,很节省成本。更多信息请访问:

https://www.doczj.com/doc/832423287.html,/~greear/vlan.html

[ ]The IPX Protocol

假如用户希望Novell的电脑资源共享(例如用他们的打印机

或是硬盘),那么该选项则要选择Y。至于存取文档的NCPFS的格式,也应该选择以便支援这个文档系统。如此一来,用户就能够

通过Novell的IPX通

信协议去存取他们的数据了,或用户希望从dosemu(DOS的模拟器)里使用 IPX协议,这时也要把他选中。Appletalk protocol support

AppleTalk是存在于苹果机上的一种通信协议,用来和苹果电脑之间的网络通信,通过AppleTalk,彼此的电脑间能够打印和共享

文档。假如用户需要连上这样的网络,能够把这个选项打开,就能和苹果电脑做沟通了,或把该选项编成一个模块亦可。

DECnet support

DECnet是一种很生僻的协议

802.1d Ethernet Bridging

模拟交换机。选择该选项能够让Linux作为一个网络上的交换机。

CCITT X.25 Packet Layer

大约没人需要这东西

LAPB Data Link Driver

大约没人需要这东西

[ ]802.2 LLC

看不懂能够不选

[ ]Frame Diverter

Acorn Econet/AUN protocols

一种被Acorn电脑使用的又老又慢的协议

WAN router

广域网路由

[ ]Fast switching (read help!)

和Network packet filtering联系

[ ]Forwarding between high speed interfaces

[ ]Qos and/or fair queueing

服务质量公平调度,建议不选择

[ ]Network device support

配置对网络设备的支持

Network device support

网络设备支持,必选

[ ]ARCnet support

这也是一种网络卡,一般用的不多,所以选择N。假如用户有这样的网络卡,请查阅Documentation/networking/arcnet.txt的

说明

[ ]Dummy net driver support

哑接口网络,假如有SLIP或PPP的传输协议,那么就要把该选项打开。因为他不会使Linux内核增大,而且对某些应用程式来说,

他能够让我们模拟出来的TCP/IP环境更像TCP/IP环境。假如用户没有SLIP或PPP协议,就不用配置该选项。

ADSL用户需要他

Bonding driver support

以太网卡的绑定。启用该功能能够将两块网卡绑定在一起来当一块网卡使用,例如两块100M的网卡绑定之后相当于一块200M的网

卡。当然,在您的交换机上也要做端口绑定配置(将两个端口绑定为一个端口使用。)

将多个以太网通道绑定为一个,也就是两块网卡具备相同的IP地址并且聚合成一个逻辑链路工作,能够用来实现负载均衡或硬件冗

EQL (serial line load balancing) support

串行线路的负载均衡.假如有两个MODEM和两条电话线而且用SLIP或PPP协议,该选项能够让您同时使用这两个MODEM以达到双倍速

度(在网络的另一端也要有同样的设备)

我有一个USB口的CDMA无线上网卡和一个10/100M网卡,考虑能够绑定在一起,或能够针对不同用途采取不同上网方式,例如浏览

网页时用无线、BT下载时用宽带,有待研究,也希望大侠们能够给点建议

Universal TUN/TAP device driver support

TUN/TAP能够为用户空间提供包的接收和发送服务,比如能够用来虚拟一张网卡或点对点通道

该功能能够使内核能够直接从用应用程式接收数据包或直接将数据发送给应用程式,而不必先通过物理网卡,当然是在本地通讯

ethertap network tap (OBSOLETE)

Ethernet (10 or 100Mbit)

百兆网卡驱动,现在应用最广泛的网卡

Other ISA cards

NE2000/NE1000 support

[ ]Ethernet (1000 Mbit)

千兆网卡驱动

[ ]FDDI driver support

FDDI

驱动

[ ]HIPPI driver support

HIPPI(高性能并行接口)是个在短距离内高速传送大量数据的点对点协议

PPP (point-to-point protocol) support

点对点协议,PPP已基本取代SLIP了,用ADSL的可要仔细选择了

PPP multilink support

多重链路协议(RFC1990)允许您将多个线路(物理的或逻辑的)组合为一个PPP连接一充分利用带宽,这不但需要pppd的支持,还需要

ISP的支持

PPP support for async serial ports

通过标准异步串口(COM1,COM2)使用PPP,比如使用老式的外置modem(非同步modem或ISDN modem)上网

PPP support for sync tty ports

通过同步tty设备(比如SyncLink适配器)使用PPP,常用于高速租用线路(比如T1/E1)

[ ]PPP Deflate compression

为PPP提供Deflate(等价于gzip压缩算法)压缩算法支持,需要通信双方的支持才有效

[ ]PPP BSD-Compress compression

为PPP提供BSD(等价于LZW压缩算法,没有gzip高效)压缩算法支持,需要通信双方的支持才有效

PPP over Ethernet

这就是ADSL用户最常见的PPPoE啦,也就是在以太网上跑的PPP协议

有问题,感觉PPP能够不编的,有空试试看

[ ]SLIP (serial line) support

一个在串行线上(例如电话线)传输IP数据报的TCP/IP协议.小猫一族的通讯协议,和宽带用户无关[ ] Wireless LAN (non-hamradio)

无线网络(非业余无线电)

[ ]Token Ring devices

令牌环网

设备

[ ] Fibre Channel driver support

光纤通道

主要用在存储系统中

Traffic Shaper

流量整形,已废弃

Wan interfaces --->

Wan interfaces support

有问题

[ ] PCMCIA network device support

PCMCIA网络设备驱动

Amateur Radio support --->

业余无线电支持,能够用来启动无线网络的基本支持,现在的无线网络能够通过公用频率传输数据,假如有此类设备就能够启用

。具体请参考AX25和HAMHOWTO文档。

IrDA (infrared) subsystem support --->

红外线支持,比如无线鼠标或无线键盘

ATA/IDE/MFM/RLL support IDE设备的支持

ATA/IDE/MFM/RLL support

假如有IDE(或EIDE)设备,这是必选的。假如使用的是SCSI设备,那就能够不用了。

IDE,ATA and ATAPI Block devices --->

IDE,ATA and ATAPI块设备

Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support

择Y,内核将提供对增强IDE硬盘、CDROM和磁带机的支持。假如用户的IDE接口是Enhanced的(增强IDE 接口),请用户选Y,即会

出现

IDE选项的界面,这些选项能加快用户IDE接口的速度或对某些芯片做一些最好化处理。但假如用户的硬盘或光盘全都是SCSI接口

的,那么需要选择N以跳

过下面的选项。

[ ] use old disk-only driver on primary interface

通常是选择N。因为有其他新的驱动可用。这个选项的意思是说,假如用户的IDE接口是很旧的,就能够使用这个驱动去驱动旧型

的IDE接口(可装二块硬盘;或是一块硬盘,一个光驱)。

Include IDE/ATA-2 DISK support

ATA-2支持,他包含了增强的IDE接口,所以是必需选择的。

[ ] Use multi-mode by default

假如不确定就别选,除非出现帮助中指出的错误

[ ] Enable Flash Card only mode

PCMCIA IDE support

通过PCMCIA卡和电脑连接的IDE设备,比如某些外置硬盘或光驱

Include IDE/ATAPI CDROM support

假如希望内核支持IDE/ATAPI接口的光驱,那就需要选择Y。假如是附有一张接口卡的光驱,必需把排线接到那张专用接口卡或

是声卡上,则这个选项必须要选N。现在的光驱通常是IDE/ATAPI接口的,所以这个选项通常是Y。Include IDE/ATAPI TAPE support

有IDE磁带的就选

Include IDE/ATAPI FLOPPY support

有IDE软驱的就选

SCSI emulation support

将一个IDE设备模拟为SCSI设备来使用。但在内核启动参数中必须加入类似:hdx=scsi的参数。

SCSI仿真,以前刻录光碟时需要,现在无需了

SCSI emulation似乎对使用USB盘有影响

[ ]IDE Taskfile Access

对介质进行直接的原始访问,他是个复杂且有效的测试和校验硬件的方案,能够在驱动层之下执行数据恢复工作

[ ]CMD640 chipset bugfix/support

多486和586的主机板都是用CMD640的芯片,他是Neptune芯片和SIS芯片的结合。这种芯片有他的缺点,在许多的情形下,他会造

成数据的丢

失和错误。假如用户选了这一项,则Linux内核会为用户小心的寻找这些错误并修正他,而且,他会打开

对两个IDE接口的支持。

但是,在他的说明文档中提

到,假如用户的主机板没有PCI界面,只有VESA总线界面,还希望有这项功能的话,则用户必须传送一些参数给内核(ideo=

cmd640_vlb);假如不确定,则选择Y。假如您确定您的IDE控制芯片不是CMD640,将该选项配置为N(不选)。

586以前的主板上常用,毛病多多

[ ]Other IDE chipset support

其他IDE芯片支持

Support for IDE Raid controllers (EXPERIMENTAL)

IDE Raid 控制器支持

SD/MMC support ---> SD/MMC 支持

SD/MMC support

SD/MMC devices --->

Enhanced SD/MMC devices support

SCSI device support SCSI设备

SCSI support

SCSI disk support

SCSI硬盘或U盘

(40) Maximum number of SCSI disks that can be loaded as modules

SCSI tape support

SCSI磁带

SCSI OnStream SC-x0 tape support

另一种SCSI磁带

SCSI CDROM support

SCSI CDROM

SCSI generic support

若有SCSI硬盘/CD-ROM/tape之外的SCSI设备才需要选择为了使用U盘

[ ] Enable extra checks in new queueing code

[ ] Probe all LUNs on each SCSI device

[ ] Verbose SCSI error reporting (kernel size +=12K)

[ ] SCSI logging facility

SCSI low-level drivers --->

SCSI卡的驱动程式。根据SCSI卡的芯片选择一个驱动

dmesg|grep SCSI

[ ]PCMCIA SCSI adapter support

I2O device support ---> I2O(智能IO)设备使用专门的I/O处理器负责中断处理/缓冲存取/数据传输等烦琐任务以减少CPU占用,

一般的主板上没这种东西

ISDN subsystem ---> 假如使用ISDN上网,这个就必不可少了。

Input core support核心输入设备的支持

Character devices 字符设备

Virtual terminal

虚拟终端.除非是嵌入式系统,否则必选

Support for console on virtual terminal

内核将一个虚拟终端用作系统控制台(将诸如模块错误/内核错误/启动信息之类的警告信息发送到这里,通常是第一个虚拟终端).

除非是嵌入式系统,否则必选

Standard/generic (8250/16550 and compatible UARTs) serial support

内核将支持串行口。假如用户是用serial的鼠标(大部分的用户都是用这种鼠标)或是MODEM的话,则该选项一定要选上。

[ ]Non-standard serial port support

非标准串口支持

Serial drivers ---> 串口设备

S3C2410 serial port support

S3C2410 串口支持

Console on S3C2410 serial port

基于S3C2410串口的控制台

通过串口线,实现了上位机的控制

8250/16550 and compatible serial support (EXPERIMENTAL)

Support S3C2410 TouchScreen

支持触摸屏

Support S3C2410 ADC

模数转换器

Support S3C2410 FPGA

现场可编程门阵列,

FPGA

S3C2410 GPIO buttons support

General Purpose Input Output 通用输入输出接口

GPIO是相对于芯片本身而言的,假如某个管脚是芯片的GPIO脚,则该脚可作为输入输出高低电平使用,当然假如某个脚具备复用

的功能,则即可做GPIO也可做其他用途。

GPIO通常是TTL电平接口线,比如CPU口线,其输入能够获取传感器状态、高低电平、低速信号等,

输出可用于控制继电器、蜂鸣器、LED等。

在Samsung S3C2410里,有八组GPIO,除第一组只能用于输出外,其他均能够通过写控制寄存器,实现输入/输出和第二功能。

S3C2410 EXINT4-7 buttons support

CPU的通用IO口引脚

S3C2410 LED support

发光二极管,

LED

Unix98 PTY support

伪终端(PTY)能够模拟一个终端,他由slave(等价于一个物理终端)和master(被一个诸如xterms之类的进程用来读写slave设备)两

部分组成的软设备.使用telnet或ssh远程登录者必选

上位机控制

(256) Maximum number of Unix98 PTYs in use (0-2048)

I2C support --->

I2C是Philips极力推动的微控制应用中使用的低速串行总线协议,可用于监控电压/风扇转速/温度

等.SMBus(系统管理总线)是I2C

的子集.除硬件传感器外,Video For Linux也需要该模块的支持

I2C support

I2C

支持

I2C bit-banging interfaces

I2C PCF 8584 interfaces (NEW)

Samsung S3C2410 I2C Algorithm

I2C 运算法则

Samsung S3C2410 I2C Adapter

I2C 适配器

Samsung S3C2410 I2C mega8 client

一种单片机作客户端,有问题

[ ]I2C mega8 matrix keyboard support

I2C mega8 IC card support

I2C mega8 PS/2 0 support

I2C mega8 PS/2 1 support

I2C device interface

I2C设备接口,允许用户空间的程式通过/dev/i2c-*设备文档使用I2C总线

I2C /proc interfaces (required for hardware sensors)

实现硬件监测

Lm_sensors

L3 serial bus support ---> L3 串行总线

L3 support

Mice ---> 鼠标

Bus Mouse Support

Mouse Support (not serial and bus mice)

Use UP-NETARM2410 configure

UP-NETARM2410配置

UP-NETARM2410 touch screen for ADS7843 support

触摸屏

UP-NETARM2410 keyboard for zlg7290 support

键盘

/dev/nvram support

直接存取主板上CMOS的接口,太危险了!建议别选

Enhanced Real Time Clock Support

启用该选项并创建/dev/rtc文档后就能够通过/proc/driver/rtc访问系统的硬件时钟(RTC),众多功能依赖于他(如SMP,IRQ共享,

定时器),建议选择

S3C2410 Real Time Clock

实时时钟

Double Talk PC internal speech card support

由RC Systems公司制造的一种语音合成器

Siemens R3964 line discipline

和使用西门子R3964协议的设备同步通信,除非您有一些诸如PLC之类的特别设备,否则别选

Applicom intelligent fieldbus card support

Applicom international公司生产的用于现场总线连接卡

Ftape, the floppy tape device driver

使用磁带的就选吧

/dev/agpgart (AGP Support)

AGP总线支持,有AGP显卡的还必须从子项中选取符合自己显卡型号的驱动

Direct Rendering Manager

DRI允许应用程式以高效安全的方式直接访问图像处理,主要用于硬件3D加速.桌面用户建议选择,同时还必须从子项中选取符合自

己显卡型号的驱动

PCMCIA character devices --->

使用PCMCIA接口的字符设备

Multimedia devices 多媒体设备

Video For Linux

Video For Linux --->

V4L information in proc filesystem

要使用音频/视频设备或FM收音卡的就必选,此功能还需要I2C的支持

File systems 文档系统

Linux上支持约二十几种的文档系统。支持某个文档系统的意思是,能够存取某个文档系

统的数据或是做拷贝动作。在这些文档系统中,通常的选择方法是按照原来预设的方式,但是,其中的EXT2FS 或 Ext3

选项一定要选上,因为他是Linux系统所使用的文档系统,其他的则根据需求做选择

Quota support

支持磁盘配额。能够限制每个用户所能使用的硬盘空间的上限,在多用户一起使用一台主机的情况中十分有效。

Kernel automounter support

假如选择Y,内核将提供对automounter的支持,使系统在启动时自动mount远程文档系统。

Kernel automounter version 4 support (also supports v3)

新的(v4)的内核自动加载远程文档系统的支持,也支持v3

Reiserfs support

性能几乎全面超越Ext2(处理稀疏文档比Ext2慢),小文档(小于4k)性能非

常突出,创建和删除文档速度最快,处理大量目录和文档(5k-20k)时仍然很迅速。日志模式建议使用Ordered,追求极速可使用

Writeback模式,追求安全可使用Journal模式。建议使用noatime,notail选项挂载分区以提高速度和避免bug。用于NFS和磁

盘限额时需要额外的补丁

假如您熟悉Suse Linux,您一定会习惯Reiserfs文档系统

DOS FAT fs support

DOS/Windows的文档系统,能够支持FAT16、FAT32

MSDOS fs support

古老的MSDOS文档系统,假如想要在Linux下访问硬盘中的MS-DOS分区,或是想将用MS-DOS格式化的磁盘挂进来的话,选择Y。

VFAT (Windows-95) fs support

windows95所支持的文档系统,是我们常说的FAT32文档系统,假如用户的电脑中装有windows95/98,那么选择这个文档系统能够

使用户看到windows95/98的长文档名。

Compressed ROM file system support

Virtual memory file system support

Simple RAM-based file system support

/proc file system support

显示系统状态的虚拟文档系统,他不是硬盘分区里的任何部分,不占用硬盘的空间,而是内核和程式之间的文档系统界面,他表

示的只是内存的使用状况和各个程式执行的情况,他也记录了用户的

硬件配置(irq配置,内存使用,加载的设备驱动器,网络状态等)。

许多程式工具(像“ps”)都会用到他。假如已将他安装好了,能够执行命令“cat /proc/meminfo”或是“cat

/proc/devices”。有些shells会用/proc/self/fd(在其他系统上为/dev/fd)来处理输出输入。有许多重要的Linux标准工具是

靠他来运作的,否则执行有些命令会出问题。

/dev file system support (EXPERIMENTAL)

Automatically mount at boot

/dev/pts file system for Unix98 PTYs

ROM file system support

用于嵌入式系统的内存文档系统的支持

Second extended fs support

Ext2文档系统是Linux的标准文档系统,擅长处理稀疏文档,务必选择Y

UDF file system support

某些新式CD/DVD上的文档系统,很少见

UFS filesystem support这是BSD,SunoS,FreeBSD,NetBSD或Nextstep所使用的文档系统。假如用户在电脑上有这些操作系统

的话,那么能够选中该选项,否则选择N

Network File Systems --->

网络文档系统

NFS file system support

NFS

文档系统

假如在网络环境下想要共享文档,选择Y。假如希望挂上其他电脑的文档系统,那么该选项一定要选上。他能够让用户利用网络

把其他电脑的硬盘当成自己的来使用(把他变成一个目录)。对于一般用户来说,该选项是选择Y。

Provide NFSv3 client support

第三代NFS客户端支持

NFS server support

NFS服务器支持

SMB file system support(to mount Windows shares etc.)

这个文档系统让用户能够挂上windows95/98或windowsNT的文档系统,也就是用户能够访问到在windows 下的电脑。

Partition Types --->

高级磁盘分区类型,不确定能够全不选

[ ]Advanced partition selection

高级分区选项

Native Language Support --->

本地语言支持

Simplified Chinese charset (CP936,GB2312)

Console drivers 控制台驱动

[ ]VGA text console

用户能够在标准的VGA显示方式下使用Linux,一般使用VGA text console就能够了,他是标准的80×25的文本控制台。

Frame-buffer support --->

帧缓冲支持

Support for frame buffer devices

帧缓冲设备是为了让应用程式使用统一的接口操作显示设备而对硬件进行的抽象,建议桌面用户选择

S3C2410 LCD support

[ ]96*320 emulation support

640*480 16bit TFT LCD support

[ ]320*240 4bit(16 Grey) STN LCD support

[ ]320*240 8bit 256 Color STN LCD support

[ ]320*240 12bit 4k STN LCD support

[ ]SamSung LTS350QI-PEI with LCD3600 LCD support

Advanced low level driver options

高级底层驱动配置

Monochrome support

黑白

2 bpp packed pixels support

2位像素

4 bpp packed pixels support

4位像素

8 bpp packed pixels support

8位像素

16 bpp packed pixels support

16位像素

24 bpp packed pixels support

24位像素

32 bpp packed pixels support

32位像素

Support only 8 pixels wide fonts

Select compiled-in fonts

选择内建字体

VGA 8x8 font

高分辨率下的小字体

[ ]VGA 8x16 font

低分辨率下的大字体

Sound ---> 声音

sound support

SMDK-2410 audio support

Multimedia Capabilities Port drivers--->多媒体接口驱动

[ ]Multimedia drivers

USB support

Support for USB

[ ] USB verbose debug messages

冗长的USB调试信息

--- Miscellaneous USB options

其他USB选项

Preliminary USB device filesystem

初步的 USB设备文档系统

[ ]Enforce USB bandwidth allocation

执行usb带宽分配限制,禁止打开占用usb总线带宽超过90%的设备,关闭该选项可能会导致某些设备无法正常工作

--- USB Host Controller Drivers

USB 总线控制设备

UHCI (Intel P11X4,VIA,。。。)support

UHCI Alternate Driver (JE) support

S3C2410 OHCI-complible host interfaces support

(1)Maximum port(s) of RootHub

--- USB Device Class drivers

USB设备类驱动

USB Audio support

USB声音驱动

USB Bluetooth support (EXPERIMENTAL) (NEW)

USB蓝牙驱动

USB MIDI support

USB

MIDI

驱动

USB Mass Storage support

USB大容量存储器驱动

[ ] USB Mass Storage verbose debug

调试信息

[ ] Datafab MDCFE-B Compact Flash Reader support

[ ] Freecom USB/ATAPI Bridge support

[ ] ISD-200 USB/ATA Bridge support

[ ] Microtech CompactFlash/SmartMedia support

[ ] HP CD-Writer 82xx support

[ ] SanDisk SDDR-09 (and other SmartMedia) support

[ ] Lexar Jumpshot Compact Flash Reader

USB Modem (CDC ACM) support

没这些东西,全不选

USB调制解调器驱动

USB Printer support

USB打印机驱动

--- USB Human Interface Devices (HID)

USB人机接口

--- USB Imaging devices

USB 成像设备

USB Kodak DC-2xx Camera support

USB Mistek MDC800 Digital Camera support (EXPERIMENTAL)

USB Scanner support

Microtek X6USB scanner support

HP53xx USB scanner support (EXPERIMENTAL)

--- USB Multimedia devices

USB 多媒体设备

USB IBM(Xirlink) C-it Camera support

USB OV511 Camera support

USB Philips Cameras

USB SE401 Camera support

USB STV680 (Pencam) Camera support

USB 3com HomeConnect (aka vicam) support (EXPERIMENTAL)

D-Link USB FM radio support (EXPERIMENTAL)

DABUSB driver

此选项组必须V4L支持

--- USB Network adaptors

USB 网络适配器

--- USB port drivers

USB 端口驱动

USB Serial Converter support ---> USB接口转串口的转换设备

USB Serial Converter support

没见过这种设备,可能是USB还没普及的时候,提出的一种折中吧

USB Diamond Rio500 support (EXPERIMENTAL)

一种mp3播放机

Bluetooth support --->蓝牙支持

Bluetooth subsystem support

Kernel hacking --->安全模式

通俗地说,这是windows安全模式,因为没有明确解释,就引用这个说法。这是从Linus的README里摘录的:

“kernel

hacking”配置的细节通常会产生一个更大或是更慢的内核(或是又大又慢),而且可能因为将一些常式配置成很活跃地去尝试

中断一些不良的程式码,以

便找出内核里的问题,而使得内核变得比较不稳定。所以要产生一个内核“产品”的话,您在这里应该回答n。

配置了这个选项,即使系统在崩溃时,也能够在该模式下运行。

假如对Linux内核很熟,想了解这个操作系统上的更深层次的信息,才把这个选项才打开,在/proc下能够看到profile这个文档

,记录着相当多的信息。这些信息是供解决问题用的,一般来说,这个选项是选择N的,以免造成系统不稳固或是引起其他的问

题。

Verbose user fault messages

[ ]Kernel debugging 有问题

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

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

1、实验目的 针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。 2、任务概述 2.1 下载新内核 https://www.doczj.com/doc/832423287.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 内核参数修改

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驱动 1 以太网概述 以太网(Ethernet)是当今局域网采用的最通用的通信协议标准。在以太网中,所有计算机被连接在一条电缆上,采用带冲突检测的载波侦听多路访问(CSMA/CD)方法,采用竞争机制和总线拓扑结构。基本上,以太网由共享传输媒体,如双绞线电缆或同轴电缆、多端口集线器、网桥或交换机构成。 按照OSI(Open System Interconnection Reference Model,开放式系统互联参考模型)7层参考模型,以太网定义的是物理层(PHY)和数据链路层(对应以太网的MAC层)的标准。 2 嵌入式处理器上扩展以太网接口 以太网接口控制器主要包括MAC乘PHY两部分,如图1所示为嵌入式处理器集成MAC层控制器。 MAC层控制器和PHY的连接是通过MII、RMII等接口实现的。在IEEE802的标准系列中,数据链路层包括LLC和MAC两个子层。其中MAC负责完成数据帧的封装、解封、发送和接受功能。PHY层的结构随着传输速率的不同而有一定的差异。对于1OBaseT等网络,从以太网PHY芯片输出的就是传输所需的差分信号。但是还需要一个网络隔离变压器组成图2的结构。网络隔离变压器可起到抑制共模干扰、隔离线路以及阻抗匹配等作用。 本文介绍一种新款网络接口芯片DM9000A,它可以很方便的实现与嵌入式CPU的接口,实现扩展以太网口的功能。DM9000A是中国台湾DAVICOM公司推出的一款高速以太网接口芯片,其基本特征是:集成10/100M物理层接口;内部带有16K字节SRAM用作接收发送的FIFO缓存;支持8/16bit两种主机工作模式:

探究linux内核,超详细解析子系统

探究linux内核,超详细解析子系统 Perface 前面已经写过一篇《嵌入式linux内核的五个子系统》,概括性比较强,也比较简略,现在对其进行补充说明。 仅留此笔记,待日后查看及补充!Linux内核的子系统 内核是操作系统的核心。Linux内核提供很多基本功能,如虚拟内存、多任务、共享库、需求加载、共享写时拷贝(Copy-On-Write)以及网络功能等。增加各种不同功能导致内核代码不断增加。 Linux内核把不同功能分成不同的子系统的方法,通过一种整体的结构把各种功能集合在一起,提高了工作效率。同时还提供动态加载模块的方式,为动态修改内核功能提供了灵活性。系统调用接口用户程序通过软件中断后,调用系统内核提供的功能,这个在用户空间和内核提供的服务之间的接口称为系统调用。系统调用是Linux内核提供的,用户空间无法直接使用系统调用。在用户进程使用系统调用必须跨越应用程序和内核的界限。Linux内核向用户提供了统一的系统调用接口,但是在不同处理器上系统调用的方法

各不相同。Linux内核提供了大量的系统调用,现在从系统 调用的基本原理出发探究Linux系统调用的方法。这是在一个用户进程中通过GNU C库进行的系统调用示意图,系 统调用通过同一个入口点传入内核。以i386体系结构为例,约定使用EAX寄存器标记系统调用。 当加载了系统C库调用的索引和参数时,就会调用0x80软件中断,它将执行system_call函数,这个函数按照EAX 寄存器内容的标示处理所有的系统调用。经过几个单元测试,会使用EAX寄存器的内容的索引查system_call_table表得到系统调用的入口,然后执行系统调用。从系统调用返回后,最终执行system_exit,并调用resume_userspace函数返回用户空间。 linux内核系统调用的核心是系统多路分解表。最终通过EAX寄存器的系统调用标识和索引值从对应的系统调用表 中查出对应系统调用的入口地址,然后执行系统调用。 linux系统调用并不单层的调用关系,有的系统调用会由

linux内核的网络配置

文章来源 https://www.doczj.com/doc/832423287.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) 个人没什么意义,你可以试下

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内核IMQ源码实现分析

本文档的Copyleft归wwwlkk所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性,严禁用于任何商业用途。 E-mail: wwwlkk@https://www.doczj.com/doc/832423287.html, 来源: https://www.doczj.com/doc/832423287.html,/?business&aid=6&un=wwwlkk#7 linux2.6.35内核IMQ源码实现分析 (1)数据包截留并重新注入协议栈技术 (1) (2)及时处理数据包技术 (2) (3)IMQ设备数据包重新注入协议栈流程 (4) (4)IMQ截留数据包流程 (4) (5)IMQ在软中断中及时将数据包重新注入协议栈 (7) (6)结束语 (9) 前言:IMQ用于入口流量整形和全局的流量控制,IMQ的配置是很简单的,但很少人分析过IMQ的内核实现,网络上也没有IMQ的源码分析文档,为了搞清楚IMQ的性能,稳定性,以及借鉴IMQ的技术,本文分析了IMQ的内核实现机制。 首先揭示IMQ的核心技术: 1.如何从协议栈中截留数据包,并能把数据包重新注入协议栈。 2.如何做到及时的将数据包重新注入协议栈。 实际上linux的标准内核已经解决了以上2个技术难点,第1个技术可以在NF_QUEUE机制中看到,第二个技术可以在发包软中断中看到。下面先介绍这2个技术。 (1)数据包截留并重新注入协议栈技术

(2)及时处理数据包技术 QoS有个技术难点:将数据包入队,然后发送队列中合适的数据包,那么如何做到队列中的数

激活状态的队列是否能保证队列中的数据包被及时的发送吗?接下来看一下,激活状态的队列的 证了数据包会被及时的发送。 这是linux内核发送软中断的机制,IMQ就是利用了这个机制,不同点在于:正常的发送队列是将数据包发送给网卡驱动,而IMQ队列是将数据包发送给okfn函数。

如何安装Linux内核源代码

如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux 内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。 使用Git 由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。 你可以使用下面的Git命令获取Linus内核代码树的最新“推送”版本: $ git clone git://https://www.doczj.com/doc/832423287.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内核配置详解

对于每一个配置选项,用户可以回答"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内核结构详解教程

Linux内核结构详解教程 ─────Linux内核教程 linux内核就像人的心脏,灵魂,指挥中心。 内核是一个操作系统的核心,它负责管理系统的进程,内存,设备驱动程序,文件和网络系统,决定着系统的性能和稳定性。内核以独占的方式执行最底层任务,保证系统正常运行。协调多个并发进程,管理进程使用的内存,使它们相互之间不产生冲突,满足进程访问磁盘的请求等等. 严格说Linux并不能称做一个完整的操作系统.我们安装时通常所说的Linux,是有很多集合组成的.应称为GNU/Linux. 一个Linux内核很少1.2M左右,一张软盘就能放下. 内容基础,语言简短简洁 红联Linux论坛是致力于Linux技术讨论的站点,目前网站收录的文章及教程基本能满足不同水平的朋友学习。 红联Linux门户: https://www.doczj.com/doc/832423287.html, 红联Linux论坛: https://www.doczj.com/doc/832423287.html,/bbs 红联Linux 论坛大全,所有致力点都体现在这 https://www.doczj.com/doc/832423287.html,/bbs/rf/linux/07.htm

目录 Linux内核结构详解 Linux内核主要五个子系统详解 各个子系统之间的依赖关系 系统数据结构 Linux的具体结构 Linux内核源代码 Linux 内核源代码的结构 从何处开始阅读源代码 海量Linux技术文章

Linux内核结构详解 发布时间:2006-11-16 19:05:29 Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。

Linux内核主要五个子系统详解 发布时间:2006-11-16 19:05:54 1.进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。 2.内存管理(MM)允许多个进程安全的共享主内存区域。Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中。必要时,操作系统负责在磁盘和内存间交换程序块。内存管理从逻辑上分为硬件无关部分和硬件有关部分。硬件无关部分提供了进程的映射和逻辑内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。 3.虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。 4.网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。 5.进程间通讯(IPC) 支持进程间各种通信机制。 处于中心位置的进程调度,所有其它的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。例如,当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送,当消息被成功的发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。其他子系统以相似的理由依赖于进程调度。

Linux内核配置编译与文件系统构建要点

Linux内核配置编译与文件系统构建 南京大学 黄开成101180046 2012.11.11 一:实验目的 1.了解嵌入式系统的开发环境,内核与文件系统的下载和启动; 2.了解Linux内核源代码的目录结构及各自目录的相关内容,了解Linux内核各配置选项内容和作用,掌握Linux内核的编译过程; 3.了解嵌入式操作系统中文件系统的类型和应用、了解JFFS2文件系统的优点及其在嵌入式系统中的作用、掌握利用Busybox软件制作嵌入式文件系统的方法,并且掌握嵌入式Linux文件系统的挂载过程。二:实验环境说明 1.PC机使用openSUSE 14 Enterprise 系统。 2.开发板使用深圳市武耀博德信息技术有限公司生产的基于Inter 的PXA270处理器的多功能嵌入式开发平台EELIOD。 3.PC机通过RS-232串口与开发板相连,在PC机终端上运行minicom 程序构造一个开发板上的终端,用于对开发板的控制。 4.PC机与开发板通过ethernet网络相连接,并可在开发板上通过加载网络文件系统(NFS)与PC机通信。 5.Bootloader可以通过tftp协议从PC机上下载内核镜像和根文件系统镜像。下载目录为/tftpboot 。 6.用于开发板的Linux内核源码为linux-2.4.21-51Board_EDR,

busybox版本为busybox-1.00-pre5。 7.交叉编译器的路径为/usr/local/arm-linux/bin/arm-linux。 三:实验操作过程和分析记录 1.嵌入式系统的开发环境和开发流程: 1.1启动minicom和开发板 在PC机上打开一个终端,输入: >minicom 按Ctrl+A-o进入minicom的configuration界面。对串行通信接口进行配置,串口设置为:/dev/ttyS0(串口线接在PC机的串口1上)、bps=115200、8位数据、无校验、无流控制。 然后打开开发板电源,看到屏幕有反应之后,按任意键进入配置界面,如果长时间没有按下任何键,bootloader将会自动从flash中读取内核和根文件系统并启动开发板上的Linux系统。 分析:嵌入式系统中,通常并没有像PC机中BIOS 那样的固件程序,因此整个系统的加载启动任务完全由bootloader来完成。bootloader的主要作用是:初始化硬件设备;建立内存空间的映射图;完成内核的加载,为内核设置启动参数。 按0进入命令行模式,出现51board>,可以设置开发板和PC机的IP 地址: 51board> set myipaddr 192.168.208.133(设置开发板的IP地址) 51board> set destipaddr 192.168.208.33(设置PC机的IP地址)注意IP地址的设置:使其处于同一网段,并且避免和其他系统的

linux内核启动 Android系统启动过程详解

linux内核启动+Android系统启动过程详解 第一部分:汇编部分 Linux启动之 linux-rk3288-tchip/kernel/arch/arm/boot/compressed/ head.S分析这段代码是linux boot后执行的第一个程序,完成的主要工作是解压内核,然后跳转到相关执行地址。这部分代码在做驱动开发时不需要改动,但分析其执行流程对是理解android的第一步 开头有一段宏定义这是gnu arm汇编的宏定义。关于GUN 的汇编和其他编译器,在指令语法上有很大差别,具体可查询相关GUN汇编语法了解 另外此段代码必须不能包括重定位部分。因为这时一开始必须要立即运行的。所谓重定位,比如当编译时某个文件用到外部符号是用动态链接库的方式,那么该文件生成的目标文件将包含重定位信息,在加载时需要重定位该符号,否则执行时将因找不到地址而出错 #ifdef DEBUG//开始是调试用,主要是一些打印输出函数,不用关心 #if defined(CONFIG_DEBUG_ICEDCC)

……具体代码略 #endif 宏定义结束之后定义了一个段, .section ".start", #alloc, #execinstr 这个段的段名是 .start,#alloc表示Section contains allocated data, #execinstr表示Section contains executable instructions. 生成最终映像时,这段代码会放在最开头 .align start: .type start,#function /*.type指定start这个符号是函数类型*/ .rept 8 mov r0, r0 //将此命令重复8次,相当于nop,这里是为中断向量保存空间 .endr b 1f .word 0x016f2818 @ Magic numbers to help the loader

Linux内核分析-网络[五]:网桥

看完了路由表,重新回到netif_receive_skb ()函数,在提交给上层协议处理前,会执行下面一句,这就是网桥的相关操作,也是这篇要讲解的容。 view plaincopy to clipboardprint? 1. s kb = handle_bridge(skb, &pt_prev, &ret, orig_dev); 网桥可以简单理解为交换机,以下图为例,一台linux机器可以看作网桥和路由的结合,网桥将物理上的两个局域网LAN1、LAN2当作一个局域网处理,路由连接了两个子网1.0和2.0。从eth0和eth1网卡收到的报文在Bridge模块中会被处理成是由Bridge收到的,因此Bridge也相当于一个虚拟网卡。 STP五种状态 DISABLED BLOCKING LISTENING LEARNING FORWARDING 创建新的网桥br_add_bridge [net\bridge\br_if.c] 当使用SIOCBRADDBR调用ioctl时,会创建新的网桥br_add_bridge。 首先是创建新的网桥: view plaincopy to clipboardprint?

1. d ev = new_bridge_dev(net, name); 然后设置dev->dev.type为br_type,而br_type是个全局变量,只初始化了一个名字变量 view plaincopy to clipboardprint? 1. S ET_NETDEV_DEVTYPE(dev, &br_type); 2. s tatic struct device_type br_type = { 3. .name = "bridge", 4. }; 然后注册新创建的设备dev,网桥就相当一个虚拟网卡设备,注册过的设备用ifconfig 就可查看到: view plaincopy to clipboardprint? 1. r et = register_netdevice(dev); 最后在sysfs文件系统中也创建相应项,便于查看和管理: view plaincopy to clipboardprint? 1. r et = br_sysfs_addbr(dev); 将端口加入网桥br_add_if() [net\bridge\br_if.c] 当使用SIOCBRADDIF调用ioctl时,会向网卡加入新的端口br_add_if。 创建新的net_bridge_port p,会从br->port_list中分配一个未用的port_no,p->br会指向br,p->state设为BR_STATE_DISABLED。这里的p实际代表的就是网卡设备。 view plaincopy to clipboardprint? 1. p = new_nbp(br, dev); 将新创建的p加入CAM表中,CAM表是用来记录mac地址与物理端口的对应关系;而刚刚创建了p,因此也要加入CAM表中,并且该表项应是local的[关系如下图],可以看到,CAM表在实现中作为net_bridge的hash表,以addr作为hash值,链入 net_bridge_fdb_entry,再由它的dst指向net_bridge_port。

配置和编译Linux内核

配置和编译Linux内核 对内核进行正确配置后,才能进行编译。配置不当的内核,很有可能编译出错,或者不能正确运行。 1.1.1 快速配置内核 进入Linux内核源码数顶层目录,输入make menuconfig命令,可进入如图0.1所示的基于Ncurses的Linux内核配置主界面(注意:主机须安装ncurses相关库才能正确运行该命令并出现配置界面)。如果没有在Makefile中指定ARCH,则须在命令行中指定: $ make ARCH=arm menuconfig 图0.1基于Ncurses的Linux内核配置主界面 基于Ncurses的Linux内核配置界面不支持鼠标操作,必须用键盘操作。基本操作方法: ?通过键盘的方向键移动光标,选中的子菜单或者菜单项高亮; ?按TAB键实现光标在菜单区和功能区切换; ?子菜单或者选项高亮,将光标移功能区选中回车: ◆如果是子菜单,按回车进入子菜单; ◆如果是菜单选项,按空格可以改变选项的值: ●对于bool型选项,[*]表示选中,[ ]表示未选中; ●对于tristate型选项,<*>表示静态编译,表示编译为模块,<>表示未 选中。 ◆对于int、hex和string类型选项,按回车进入编辑菜单。 ?连按两次ESC或者选中回车,将退回到上一级菜单; ?按斜线(/)可启用搜索功能,填入关键字后可搜索全部菜单内容。

配置完毕,将光标移动到配置界面末尾,选中“Save an Alternate Configuration File”后回车,保存当前内核配置,默认配置文件名为.config,如图错误!文档中没有指定样式的文字。.2所示。 图错误!文档中没有指定样式的文字。.2保存内核配置为.config文件 保存完毕,选择退出内核配置界面,回到终端命令行。 当然,也可以将配置文件命名为其它文件名,如config-bak等,但该配置不会被Makefile 文件使用,Makefile默认使用文件名为.config的配置文件,所以重新命名配置文件通常在保留或者备份内核配置信息时使用。 也可以不用“Save an Alternate Configuration File”操作,连按ESC或选择退出内核配置界面,将会出现如图错误!文档中没有指定样式的文字。.3所示的保存配置提示信息,选择后回车,内核配置将会被保存为.config文件。 图错误!文档中没有指定样式的文字。.3保存内核配置提示信息 备份内核配置,在命令行下将.config文件复制为其它文件名来得更简单快捷: $ cp .config config-bak 装载某个配置文件,可在配置界面选中“Load an Alternate Configuration File”,然后填入已存在的配置文件名称。也可在命令行下将配置文件复制为.config: $ cp config-bak.config 在目录下有很多*_defconfig文件,这些都是内核的预设配置文件,分别对应各种不同的参考板。如果要使用其中的配置文件作为内核编译配置,可用“make xxx_defconfig”命令来完成。对于已经设定好的内核配置,也可以命名为某个文件名,放到目录下,在以后直接用make来调用该配置即可。例如将当前配置命名为m3352_defconfig并放到目录下,后续只需执行下列命令即可使用当前配置: $ make m3352_defconfig或者 $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-m3352_defconfig

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