当前位置:首页 > 芯闻号 > 充电吧
[导读]Linux-2.6.38.8 移植参考   最近学习Linux有点迷茫,刚学会了字符驱动的编写但是却不知道下一步该干些什么,想学习Linux内核裁剪,但是苦于找不到资料,开发板自带的是Linux3.0

Linux-2.6.38.8 移植参考

 

最近学习Linux有点迷茫,刚学会了字符驱动的编写但是却不知道下一步该干些什么,想学习Linux内核裁剪,但是苦于找不到资料,开发板自带的是Linux3.01,虽然我会编译内核却完全不知道如何去裁剪,配置都是开发板自带的,我想自己学习裁剪一个Linux2.6的内核,因为现在的学习资料大部分都是以2.6的内核为例的,因此为了学习方便,我想移植一个Linux2.6的内核,因此从官网下载了一个Linux2.6.38.8版本的Linux源代码。


后面会持续更新...

 

 

1.进入Linux2.6的源代码根目录。

 

Linux源码目录结构详解

 

Arch

目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。PC机一般都基于此目录。

Copying

目录下是GPL版权申明。对具有GPL版权的源代码改动而形成的程序,或使用GPL工具产生的程序,具有使用GPL发表的义务,如公开源代码。

Credits

目录下是光荣榜。对Linux做出过很大贡献的一些人的信息。

Documentation

目录下是一些文档,没有内核代码,可惜都是English的,是对每个目录作用的具体说明。

Drivers

目录中是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound; block 下为块设备驱动程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看drivers/block/genhd.c中的device_setup()。它不仅初始化硬盘,也初始化,因为安装nfs文件系统的时候需要网络其他: 如, Lib放置核心的库代码; Net,核心与网络相关的代码; Ipc,这个目录包含核心的进程间通讯的代码; Fs,所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和ext2。

Fs

目录存放Linux支持的文件系统代码和各种类型的文件操作代码。每一个子目录支持一个文件系统,如ext3文件系统对应的就是ext3子目录。

Include

目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux子目录下,与 intel cpu相关的头文件在include/asm-i386子目录下,而include/scsi目录则是有关scsi设备的头文件目录。

Init

目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。这是研究核心如何工作的好起点。

Ipc

目录包含了核心进程间的通信代码。

Kernel

内核管理的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同时与处理器结构相关代码都放在arch/*/kernel目录下。

Lib

目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下。

Maintainers

目录存放了维护人员列表,对当前版本的内核各部分都有谁负责。

Makefile

目录第一个Makefile文件。用来组织内核的各模块,记录了个模块间的相互这间的联系和依托关系,编译时使用;仔细阅读各子目录下的Makefile文件对弄清各个文件这间的联系和依托关系很有帮助。

Mm

目录包含了所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下,例如arch/i386/mm/Fault.c 。

Modules

目录存放了已建好的、可动态加载的模块文件目录,是个空目录,用于存放编译时产生的模块目标文件。

Net

目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面。

Reporting-bugs

目录里是有关报告Bug 的一些内容

Scripts

目录包含用于配置核心的脚本文件等。

一般在每个目录下都有一个.depend文件和一个Makefile文件。这两个文件都是编译时使用的辅助文件。仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助。另外有的目录下还有Readme文件,它是对该目录下文件的一些说明,同样有利于对内核源码的理解。

 

 

 

 

 

修改根目录makefile文件

exportKBUILD_BUILDHOST := $(SUBARCH)

ARCH                 =arm

CROSS_COMPILE     ?= $(CONFIG_CROSS_COMPILE:"%"=%)

否则后面不能设置ARM处理器。

 

 

配置Linux内核,最常用的是执行“makemenuconfig",如果不能执行请安装ncurses.

menucofig是个图图形配置解码,如下

 

在图中选项前面如果为<*>表示模块被编译进内核;如果为表示编译成可加载模块;如果为<>表示不编译。有--->说明有子项。如果没有system type --->这一项,请先修改makefile文件.

 

 

 

黄色高亮表示启用该选项。

选项说明

1.General setup --->                     //一般设置


          [*] Prompt for development and/or incompletecode/drivers  

默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.  你应该选择它,因为有许多设备可能必需选择这个选项才能进行配置,实际上它是安全的。

         ()  Cross-compiler toolprefix          

                   交叉编译工具前缀,如果你要使用交叉编译工具的话输入相关前缀。我使用的是arm-linux- 前缀。

         ()  Local version -append to kernel release   

                   自定义版本,也就是uname -r可以看到的版本,可以自行修改,这里我没有使用

         [ ] Automatically append version information to the versionstring   

自动生成版本信息。这个选项会自动探测你的内核并且生成相应的版本,使之不会和原先        的重复。这需要Perl的支持。由于在编译的命令make-kpkg 中我们会加入- –append-to-version 选项来生成自定义版本,所以这里选N。

         Kernel compression mode (Gzip)  --->   

有5个选项,这个选项是说内核镜像要用的压缩模式,回车一下,可以看到gzip,bzip2,lzma,xz,lzo,一般可以按默认的gzip,如果要用bzip2,lzma,lzo,要先安装相关解压缩工具

         [*] 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)写入,这格式包含进程ID和父进程。注意这个格式和以前的 v0/v1/v2 格式不兼容,所以你需要 升级相关工具来使用它。选不选均可。

         [*] Export task/processstatistics through netlink (EXPERIMENTAL) 

处于实验阶段的功能。通过通用的网络输出工作/进程的相应数据,和BSD不同的是,这些数据在进程运行的时候就可以通过相关命令访问。和BSD类似,数据将在进程结束时送入用户空间。如果不清楚,选N。
通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的

         [*]  Enable per-task delay accounting (EXPERIMENTAL) 

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

         [*]  Enable extended accounting over taskstats (EXPERIMENTAL)  

                   在统计信息中包含扩展进程所花费的时间

         [*]    Enable per-task storage I/O accounting (EXPERIMENTAL)  

                   在统计信息中包含I/O存储进程所花的时间。

         -*- Auditing support 

审计支持,用于和内核的某些子模块同时工作,(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计。允许审计的下层能够被其他内核子系统使用,比如SE-Linux,它需要这个来进行登录时的声音和视频输出。

         [*]  Enable system-call auditing support

支持对系统调用的审计。允许系统独立地或者通过其他内核的子系统,调用审计支持,比        如SE-Linux。要使用这种审计的文件系统来查看特性,请确保 INOTIFY 已经被设置。              

RCU Subsystem  --->  一个高性能的锁机制RCU 子系统

RCU(Read-CopyUpdate),顾名思义为读取-复制更新。对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调(callback)机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据。这个时机就是所有引用该数据的CPU都退出对共享数据的操作。

         IRQ subsystem  --->       //IRQ中断子系统设置。

                   [*]Support sparse irq numbering   

                            支持稀有终端编号,不知道怎么用,默认选中

         RCU Subsystem  --->      //RCU子系统设置,非对称读写锁系统是一种新的kernel锁机制,适用于读多写少环境

RCU (Read-Copy Update),顾名思义为读取-复制更新。对于被RCU保 护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调(callback)机 制在适当的时机把指向原来数据的指针重新指向新的被修改的数据。这个时机就是所有引用该数据的CPU都退出对共享数据的操作。

                   RCU Implementation(Tree-based hierarchical RCU) ---> 

                            (X)UP-only small-memory-footprint RCU 

                                     小内存的RCU。

                   [ ] Enable tracingfor RCU

                                     激活跟踪,不选择

         < > Kernel.config support    

这个选项允许.config文件(即编译LINUX时的配置文件)保存在内核当中。它提供正在运行中的或者还在硬盘中的内核的相关配置选项。可以通过内核镜像文件 kernel image file 用命令script scripts/extract-ikconfig 来提取出来,作为当前内核重编译或者另一个内核编译的参考。如果你的内核在运行中,可以通过/proc/config.gz文件来读取。下一个选项提供这项支持。看起来好像是一个不错的功能,可以把编译时的 .config文件保存在内核中,以供今后参考调用。用来重编译和编译其他的内核的时候可以用上。你是一个编译内核的狂人的话,这项要选上

         (17) Kernel logbuffer size (16 => 64KB, 17 => 128KB)  

内核日志缓存的大小,12 => 4 KB,13 => 8KB,14 => 16 KB单处理器, 15 => 32 KB多处理器,16=> 64 KB for x86 NUMAQ or IA-64,17 =>128 KB for S/390     ,保持默认。

         -*- Control Groupsupport  --->

                   cgroup支持,如cpusets那样来使用cgroup子系统进程(不确定可以不选)                

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭