内核配置与裁剪
linux实验四内核裁减和编译实验报告

实验四内核裁减和编译一、实验目的1.了解和掌握内核源代码的目录结构;2.了解内核系统配置方式,了解Makefile和config.in脚本文件的作用;3.了解内核各项内容;4.熟悉make命令的使用。
二、实验环境预装redhat9.0(内核版本2.4.x)的PC机一台,XScale嵌入式实验箱一台(已构建嵌入式linux系统),以太网线一根,交叉编译工具链。
三、实验步骤①察看和了解Linux内核的目录及内容;②察看和了解Linux内核的Makefile文件及作用;③察看和了解Linux内核的config.in文件及作用;④使用menuconfig或xconfig察看内核编译选项及作用;⑤开关某些编译选项,自己裁剪一个Linux内核;A.[root @localhost ~]# cd XSBASE/xsbase/Kernel/2.4.18-rmk-pxal-XSBASE[root @localhost 2.4.18-rmk-pxal-XSBASE]# make menuconfigB.设置开发板上的鼠标不能操作。
进入Input Core device,然后敲空格键,取消屏幕上的鼠标操作。
退出时并保存。
C.[root @localhost 2.4.18-rmk-pxal-XSBASE]# make dep[root @localhost 2.4.18-rmk-pxal-XSBASE]# make zImage[root @localhost 2.4.18-rmk-pxal-XSBASE]# cd arch/arm/boot/[root @localhost 2.4.18-rmk-pxal-XSBASE]# cp zImage /tftpD.启动mini终端。
XSBase255> boot[root @XSBASE /root]$ tfp 192.168.0.77ftp>cd /ftp>get /tftp/zImageE.这个时候在重启板子一下,板子就不能执行触摸屏上的鼠标操作了。
7 裁减VxWorks的映像文件实验

实验7 裁减VxWorks的映像文件实验一实验原理实验2的内核采用系统缺省的配置,没有对VxWorks的内核进行配置和裁减,而通常的系统中则需要对VxWorks的内核进行不同的配置以适应不同的硬件和软件功能。
实验6在实验2的基础上加入了ping client组件。
本实验将ping功能从系统中裁减掉,并观察生成的二进制代码的变化情况。
二实验目标1. 掌握VxWorks中裁减内核的方法。
三实验步骤1. 本实验的内核是经过实验6修改后的内核,启动该内核。
在其VxWorks Target Shell 控制台下输入如下命令:-> ping "192.168.1.180"提示信息如下:-> ping "192.168.1.180"PING 192.168.1.180: 56 data bytes64 bytes from host (192.168.1.180): icmp_seq=0. time=0. ms64 bytes from host (192.168.1.180): icmp_seq=1. time=0. ms64 bytes from host (192.168.1.180): icmp_seq=2. time=0. ms64 bytes from host (192.168.1.180): icmp_seq=3. time=0. ms64 bytes from host (192.168.1.180): icmp_seq=4. time=0. ms该命令对主机192.168.1.180执行ping动作,由于此时的内核中已经包含ping命令,通过结果可发现ping动作执行成功。
(执行过程将持续进行,按下Ctrl+C键将中止执行)。
2. 配置内核功能去掉ping client命令以裁减VxWorks内核打开实验6修改后的Bootable工程。
下图所示是实验6的可启动工程的组件管理窗口。
基于ARM的嵌入式linux内核的裁剪与移植

—
3 内核 配置 过 程
提供 用 户程 序所 使 用 的一些
自行 搭建 交叉 编译 环境 通 常 比较 复 杂 ,而 且 很 容易 出错 。本 文使 用 的是 开 发板 自带 的交 叉 编 译 器 ,即cos 33 交 叉 编译 器 ,该 编 译 只 需 将 rs一 .. 4
光 盘 中 的 am—iu 33 . r z 用 tr xf n — r l x一 .. b . 2 a v n n 4 ab i a
及 下 栽 内核 映像 到 开发 板 等设 计 ,给 出了以sc 4 O 3 2 l 为核 心 的嵌 入 式Ln x iu 内核 的裁 剪 与移植
过程。
关键词 :AR M;嵌 入式Ln x 3 2 1 ;裁剪 ;移植 iu ;¥ C 4 0
0 引 言
微 处 理 器 的产 生 为价 格 低 廉 、结 构 小 巧 的 C U和外 设 的 连接 提 供 了稳 定 可靠 的硬 件 架构 。 P 这 样 。限制嵌 入式 系统 发展 的瓶 颈就 突 出表 现在
第 1卷 1
第 1期 1
电手元 器 件 盔 用
Elcr n cCo o e t D v c p ia in et i o mp n n & e i eAp l t s c o
V . 1 I1 No 1 .l
NO V.2 9 0o
2 0 年 1 Y 09 ll
d i O3 6 /i n1 6 - 7 5 0 91 .2 o: .9 9js .5 3 4 9 . 0 .10 0 l .s 2
以在 另 一个 平 台上执 行 的程 序代 码 。不 同的C U P
需要 有 不 同 的编译 器 。交叉 编 译 如 同 翻译 一 样 ,
Linux操作系统内核裁剪的分析

Ln x操 作 系统进 行裁剪 修 改 ,使 之能在 嵌入 i u 式 系统 上 运 行 的操 作 系 统 。 目前嵌入式 Ln x i u 操作系统在移动 电话 、个人数字助理 ) 、媒体 播放器 、工业控制 以及航空航天等领域有着广泛
的应用 。Ln x操作 系统 内核 的裁剪 是嵌 入式 系统 iu 开 发的重要 环节 ,对 嵌入式 系统 的开发具有 重要 意
VO . 1 . 1 No3 2
在 某 一 具 体 应 用 中 是 多 余 的 ,裁 剪 时只 需 保 留对
入 内核 ,也 可 以卸 载 释 放 所 占有 的 资源 。这 样 的 设计 方 式 可 以灵 活 、动 态 地 分 配 内核 空 间资 源 ,
嵌入式 系统应 用 程序 提供对 应 的系 统支 持 的功 能;最后是完整性和可靠性 ,裁剪后 的操作系统 在结构和功能上要具有完整性和可靠性 。
能 都 不 一 样 。 以Ln x 作 系 统 为例 ,Ln x .是 iu 操 iu 20 第一 个 支持 S 体 系 的内核版 本 ;L u 22 MP n i x .极大 地 提 升 了S MP系 统 性 能 , 同 时支 持 更 多 的 硬 件 ;
方 面 是 开 发它 的实 时 性 能 。对 标准 的操 作 系 统
内核裁剪流程

内核裁剪流程
嘿,朋友们!今天咱就来讲讲这内核裁剪流程,这可不是一般的事儿哦!
想象一下,内核就好比是一个超级复杂的大机器,它里面有各种各样的零件和功能。
而我们要做的内核裁剪呢,就是要从这个大机器里精心挑选出我们真正需要的部分。
比如说你的手机系统吧,为啥有些手机跑得快,有些就慢吞吞的呢?这可就和内核裁剪大有关系啦!
那咋开始这裁剪流程呢?首先,你得像个侦探一样,仔细去研究这个内核,搞清楚它都有哪些“宝贝”藏在里面。
然后,根据你的实际需求,决定哪些要留,哪些可以舍弃。
这就像是你收拾房间,你总不会把所有东西都堆在那吧,得挑有用的留下呀,对吧?
在这个过程中可不能马虎哦,万一不小心剪掉了重要的东西,那可就麻烦啦!就像盖房子,要是不小心把承重墙给拆了,那房子不就塌了嘛!咱得小心翼翼地来。
我自己就经历过一次内核裁剪呢,那时候可真是费了不少心思。
我和小伙伴们一起,对着那些代码和功能,研究了好久好久。
有时候会为了一个小细节争论不休,“哎呀,这个到底要不要留啊”,“留着吧,说不定以后有用呢”。
但最后,我们还是成功地完成了裁剪,哇,那种成就感,简直太棒了!
内核裁剪流程真的很神奇,它能让一个复杂的内核变得更加简洁高效,就像给它瘦身一样。
这样一来,系统就能跑得更快,也能更好地为我们服务啦!所以啊,大家可不要小瞧了这个过程哦,它真的能带来意想不到的效果呢!。
第4章 Linux内核裁剪与移植 Linux系统移植(第2版) 教学课件

4.1 Linux内核结构 4.2 内核配置选项 4.3 内核裁剪及编译 4.4 内 核 升 级
4.1.2 内核源码目录介绍
Linux内核代码以源码树的形式存放,如 果在安装系统的时候已经安装了源码树, 其源码树就在/usr/src/linux下。
1.arch目录
禁用随机heap(heap堆是一个应用层的概念,即堆对CPU是不可见的,它 的实现方式有多种,可以由OS实现,也可以由运行库实现,也可以在一个 栈中来实现一个堆)
Choose SLAB allocator Profiling support Kprobes
选择内存分配管理器,建议选择 支持系统评测,建议不选 探测工具,开发人员可以选择,建议不选
5.init目录
init子目录包含核心的初始化代码(注意, 不是系统的引导代码)。它包含两个文件 main.c和version.c,这是研究核心如何工 作的一个非常好的起点。
6.ipc目录
ipc子目录包含核心进程间的通信代码。 Linux下进程间通信机制主要包括管道、 信号、消息队列、共享内存、信号量、套 接口。
Physical 选择XIP后,内核存放的物理地址
Kexec system call
Kexec系统调用
4.2.4 网络协议支持相关选项
菜单选项(Networking Support)的子菜 单中包含一些网络协议支持的选项。
选项名 Networking options Amateur Radio support
arch子目录包括了所有和体系结构相关的 核心代码。它的每一个子目录都代表一种 支持的体系结构,例如arm子目录是关于 ARM平台下各种芯片兼容的代码。
Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解

printk(KERN_WARNING fmt, ##arg) printk(KERN_DEBUG fmt, ##arg)
/* Module Init & Exit function */ static int __init myModule_init(void) {
/* Module init code */ PRINTK("myModule_init\n"); return 0;
图形
工具
前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍 了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成
那么如何将驱动直接编译进内核呢? 在我们实际内核的移植配置过程中经常听说的内核裁剪又是怎么麽回事呢? 我们在进行linux内核配置的时候经常会执行make menuconfig这个命令,然后屏幕上会出现以下 界面:
首页 业界 移动 云计算 研发 论坛 博客 下载 更多
process的专栏
您还未登录!| 登录 | 注册 | 帮助
个人资料
dianhuiren
访问:71424次 积分:1219分 排名:第8764名 原创:37篇 转载:127篇 译文:0篇 评论:3条
目录视图
摘要视图
订阅
《这些年,我们读过的技术经典图书》主题有奖征文 经理
这些配置工具都是使用脚本语言,如 Tcl/TK、Perl 编写的(也包含一些用 C 编写的代码)。本文
/dianhuiren/article/details/6917132
1/5
2012年04月 (6) 2012年03月 (15) 2012年02月 (16)
并不是对配置系统本身进行分析,而是介绍如何使用配置系统。所以,除非是配置系统的维护者,一般 的内核开发者无须了解它们的原理,只需要知道如何编写 Makefile 和配置文件就可以。
内核卡死调试方法-概述说明以及解释

内核卡死调试方法-概述说明以及解释1.引言1.1 概述内核卡死是指操作系统的内核无法继续执行下去,在特定的情景下,系统停止响应并无法正常运行。
这可能会导致系统崩溃、程序无法执行或者无法正常操作。
内核卡死调试方法是帮助我们解决这类问题的一种重要工具。
在本文中,我们将讨论内核卡死调试的方法和技巧,帮助读者更好地定位和解决内核卡死的问题。
首先,我们将介绍内核卡死的原因,包括硬件故障、软件错误和不兼容性等。
然后,我们将探讨内核卡死的常见表现,例如系统停止响应、屏幕冻结和错误信息等。
接着,我们将强调内核卡死调试的重要性。
内核卡死不仅会影响系统的稳定性和性能,还可能导致数据丢失和未完成的任务。
因此,在及时发现和解决内核卡死问题的同时,可以提高系统的可靠性和用户的体验。
最后,我们将总结内核卡死调试的方法和技巧。
这些方法包括使用系统日志和调试工具来分析和追踪系统状态,以及查找和修复可能的错误。
我们还将介绍一些常用的内核卡死调试工具和技术,如调试模式和堆栈跟踪。
通过本文的阅读,读者将能够更好地理解内核卡死调试的重要性和方法,使其能够快速解决内核卡死的问题,并提高系统的稳定性和可靠性。
1.2 文章结构文章结构是指对文章主要内容进行整体的组织和安排,以便读者能够清晰地了解文章的层次结构和脉络。
在讲述内核卡死调试方法的长文中,文章结构应该包括以下几个主要部分:1. 引言:在引言部分,我们将对内核卡死调试方法的重要性和必要性进行概述。
解释为什么需要调试内核卡死问题,以及通过本文能够掌握哪些相关的调试方法。
2. 内核卡死的原因:该部分将详细介绍导致内核卡死的各种原因,如硬件故障、软件错误、驱动冲突等。
通过对这些原因的分析,读者能够更好地理解内核卡死的根本问题。
3. 内核卡死的常见表现:在这一部分,我们将列举内核卡死的一些常见表现,如系统崩溃、黑屏、任务无响应等。
通过对这些表现的描述,读者能够判断出系统是否卡死,并能更好地定位具体问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内核配置与裁剪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)[*] System V IPC[*] POSIX Message Queues[*] BSD Process Accounting[*] BSD Process Accounting version 3 file format[*] Sysctl support[ ] Auditing support[*] Support for hot-pluggable devices[*] Kernel Userspace Events[*] Kernel .config support[*] Enable access to .config through /proc/config.gz() Initramfs source file(s)[*] Configure standard kernel features (for small systems) ---> --- Configure standard kernel features (for small systems) [ ] Load all symbols for debugging/kksymoops[ ] Do an extra kallsyms pass[ ] Enable support for prinlk[ ] BUG()support[ ] Enable full-sinzed data structures for core[*] Enable futex support[*] Enable eventpoll support[*] Optimize for size[*] Use full shmem filesystem(0) Function alignment(0) Label alignment(0) Loop alignment(0) Jump alignmentLocal version - append to kernel release:这里填入的是64字符以内的字符串,在这里填上的字符串可以用uname -a命令看到。
Support for paging of anonymous memory(swap):这是使用交换分区或者交换文件来做为虚拟内存的,当然要选上。
System V IPC:表示系统5的Inter Process Communication,它用于处理器在程序之间同步和交换信息,如果不选这项,很多程序运行不起来的。
POSIX Message Queues:这是POSIX的消息队列,它同样是一种IPC。
建议最好将它选上。
BSD Process Accounting:这是允许用户进程访问内核将账户信息写入文件中的。
建议最好将它选上。
Sysctl support:这个选项能不重新编译内核修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核的参数或变量。
建议最好将它选上。
Auditing support:审记支持,用于和内核的某些子模块同时工作,例如SELinux。
只有选择此项及它的子项,才能调用有关审记的系统调用。
Support for hot-pluggable devices:是否支持热插拔的选项,肯定要选上。
不然USB、PCMCIA 等这些设备都用不了。
Kernel Userspace Events:内核中分为系统区和用户区,这里是系统区和用户区进行通讯的一种方式,选上。
Kernel .config support:将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc中得到内核的配置。
Configure standard kernel features(for small systems):这是为了编译某些特殊的内核使用的,通常你可以不选择这一选项,你也不用对它下面的子项操心了。
Load all symbols for debugging/kksymoops:是否装载所有的调试符号表信息,如果你不需要对内核调试,不需要选择此项。
Enable futex support:不选这个内核不一定能正确的运行使用glibc的程序,当然要选上。
Enable eventpoll support:不选这个内核将不支持事件轮循的系统调用,最好选上。
Optimize for size:这个选项使gcc使用-Os的参数而不是-O2的参数来优化编译,以获得更小尺寸的内核,建议选上。
Use full shmem filesystem:除非你在很少的内存且不使用交换内存时,才不要选择这项。
后面的这四项都是在编译时内存中的对齐方式,0表示编译器的默认方式。
使用内存对齐能提高程序的运行速度,但是会增加程序对内存的使用量。
(0) Function alignment(0) Label alignment(0) Loop alignment(0) Jump alignment. 可加载模块Loadable module support --->[*] Enable loadable module support[*] Module unloading[ ] Forced module unloading[*] Module versioning support (EXPERIMENTAL)[ ] Source checksum for all modules[*] Automatic kernel module loadingEnable loadable module support:支持模块加载。
Module unloading:不选这个功能,加载的模块就不能卸载。
Forced module unloading:这个选项能强行卸载模块,即使内核认为这样并不安全,也就是说你可以把正在使用中的模块卸载掉。
如果你不是内核开发人员,不要选择这个选项。
Module versioning support(EXPERIMENTAL):这个功能可以让你使用其它版本的内核模块,不过建议你不要选择这个选项。
Source checksum for all modules:这个功能是为了防止更改了内核模块的代码但忘记更改版本号而造成版本冲突。
如果你不是自己写内核模块,那就不需要这一选项了。
Automatic kernel module loading:这个选项能让内核自动的加载部份模块,建议你最好选上。
举个例子说明一下,如模块eth1394依赖于模块ieee1394。
如果选择了这个选项,可以直接加载模块eth1394;如果没有选择这个选项,必需先加载模块ieee1394,再加载模块eth1394,否则将出错。
. 总线支持配置Bus support --->PCCARD (PCMCIA/CardBus) support --->[ ] Enable PCCARD debugging[ ] 16-bit PCMCIA support (NEW)[ ] Load CIS updates from userspace (EXPERIMENTAL)(NEW)[ ] PCMCIA control ioctl (obsolete) (NEW)--- PC-card bridgesPCCard(PCMCIA/CardBus)support:你的计算机是否支持PCMCIA卡Enable PCCARD debugging:通常不需要选择调试PCMCIA设备,除非你是设备驱动的开发人员。
16-bit PCMCIA support:16位的PCMCIA总线支持。
. 支持的可执行文件格式Userspace binary formats -à[*] Kernel support for ELF binaries[*] Kernel support for a.out and ECOFF binaries[*] Kernel support for MISC binaries[*] RISC OS personalityKernel support for ELF binaries:ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台。
Kernel support for a.out and ECOFF binaries:这是早期UNIX系统的可执行文件格式,目前已经被ELF格式取代。
Kernel support for MISC binaries:此选项允许插入二进制的封装层到内核中,当使用Java、.NET、Python、Lisp等语言编写的程序时非常有用。