linux交叉编译裁剪内核记录
刚开始学习嵌入式内核编译,因为要修改内核的默认配置,因此这里把自己的学习记录写下来,方便以后查阅,也给别人一个参考,有什么写的不对的或者更好的方法,请指正~
开发板有usb从口,现在想要让开发板作为一款打印机设备来被PC机识别(因为以后要用此开发板作为一款一体打印机的主控板)但是内核默认提供的usb gadget设备驱动是大容量存储设备驱动(将默认编译好的内核下载到板子里,用usb连接pc显示大容量存储设备;而且我们可以在编译好的内核文件目录/drivers/usb/gadget/下看到内核选择编译了storage.c文件,其他文件不做编译,这就是配置文件的作用了),因此这里要修改内核配置文件,重新编译内核使其作为usb从设备的打印机。
首先要将开发板的内核文件解压到任意目,然后进入内核根目录
看到内核目录下是没有默认的.config配置文件的
就需要自己去按照记得硬件平台选择配置文件,复制到根目录下即可,我在arch/arm/config目录下找到自己的配置文件
修改配置文件有三种方法,
命令:make xconfig
- qconf: 全新的基于QT的配置接口,2.6版本内核
- 更易使用(切记阅读 help -> introduction: useful options!)
- 具有文件浏览功能,更易的加载配置文件
命令:make menuconfig
- 老式字符界面,依然很管用。你够自信,完全可以手写配置文件!
命令:make oldconfig
- 用于升级早期发布内核的配置文件
- 对一些绝对符号(obsolete symbols)发出警告
- 询问新符号的配置值
我用的是make menuconfig,如下。
这里我们要修改设备驱动,进入device drivers 找到usb gardet 设备驱动 将大容量存储设备修改为printer即可。
大家可以看到usb支持很多驱动,这里内核代码都已经实现,但是为了在嵌入式设备里使用,自然要裁剪内核,所以很多内容都没有安装,因此需要开发人员自己手动设置后在编译内核。我们这里选择 USB Gadget Suppot 即可
这里也可以看到内核默认支持usb从设备为大容量存储设备。
选择了作为打印机从设备后,大容量自动取消了,显然是多选一的选项。
修改后,退出,编译内核,因为是在arm板上编译,自然要选择交叉编译环境。
Make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm uImage
执行这条命令后(以前没有修改配置文件,执行后自动编译内核,等十几分钟即可),但是这次终端重新提示内核配置问题,包括是否支持2TB大文件,硬件平台等等。对于硬件平台和内核知识缺乏的人确实不好选择。我试了很多次没有成功。因为我们的配置文件是写好的,只是修改了一点,为什么会出现这些问题,确实我也不懂。重新修改了很多次配置文件问题依旧,
最后得出结论就是只要是用menucpnfig或者xconfig打开了配置文件,就不能自动编译了,注意这里我编译是编译arm平台的内核。于是我试了直接编译pc机内核,make 不加任何参数,表示按照本机的硬件平台和编译器来编译,结果通过了,自动编译
因此我想到是不是我修改配置文件时也和平台有关,事实却是如此,这里显示的是x86平台的配置文件,因为我打开时没有加入ARCH=arm的参数
果然是这样,网上说的修改配置文件的命令很多是基于当前的pc硬件环境,对于我要定制到arm平台的内核裁剪来说,修改配置文件需要在命令中加入 ARCH=arm 这句话,否则修改完的配置文件是基于x86平台。我们执行Make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm uImage ,make工具读取不到自己的arm平台配置文件,自然要显示内核配置选项,这就是我遇到的问题(整整5个多小时,全花在这上边了,基础还是太薄弱)。
因此我们需要重新修改下配置文件,修改的时候第一步需要这样。
Make ARCH=arm menuconfig
然后按照前文的修改定制自己的内核即可。退出,保存,Make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm uImage即可。
编译开始,静等即可。
本来是很小的问题,结果花了整整一下午,基础还是最重要的~
linux交叉编译裁剪内核记录的更多相关文章
- linux系统裁剪
linux系统裁剪 1.简介 最近为了更加了解linux系统的启动过程,通过对系统进行裁剪的的方式来了解整个启动流程.这里记录下过程. 2.环境介绍 vmware12 + centos6.5 + xs ...
- Linux系统启动那些事—基于Linux 3.10内核【转】
转自:https://blog.csdn.net/shichaog/article/details/40218763 Linux系统启动那些事—基于Linux 3.10内核 csdn 我的空间的下载地 ...
- Linux 2.6内核中新的锁机制--RCU
转自:http://www.ibm.com/developerworks/cn/linux/l-rcu/ 一. 引言 众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁 ...
- 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本、内核、当前时间
申请博客有一段时间了,然而到现在还一篇没有写过..... 主要因为没有想到需要写些什么,最近在学习Python语言,照着书上看了看最基础的东西,发现根本看不进去,而且光看的话今天看了觉得都理解懂了,过 ...
- Linux 0.12 内核管理存储器
Linux 0.12 内核管理存储器 其分段,用分段的机制把进程间的虚拟地址分隔开. 每一个进程都有一张段表LDT.整个系统有一张GDT表.且整个系统仅仅有一个总页表. 其地址翻译过程为: 程序中给出 ...
- Linux 实例常用内核网络参数介绍与常见问题处理
本文总结了常见的 Linux 内核参数及相关问题.修改内核参数前,您需要: 从实际需要出发,最好有相关数据的支撑,不建议随意调整内核参数. 了解参数的具体作用,且注意同类型或版本环境的内核参数可能有所 ...
- [转帖]linux 内存管理——内核的shmall 和shmmax 参数
(转)linux 内存管理——内核的shmall 和shmmax 参数 内核的 shmall 和 shmmax 参数 SHMMAX= 配置了最大的内存segment的大小 ------>这个 ...
- linux4.10.8 内核移植(三)---裁剪内核
一.裁剪内核 1.1 第一次修改 现在的内核大小为2.8M左右,要裁剪到2.0M以下,毕竟给内核分区就只有2.0M. 这两个设备我们没有,裁剪掉. 进入make menuconfig中,搜索mouse ...
- Linux移植之内核启动过程start_kernel函数简析
在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容 ...
随机推荐
- Mysql命令alter add:增加表的字段
alter add命令用来增加表的字段. alter add命令格式:alter table 表名 add字段 类型 其他; 例如,在表MyClass中添加了一个字段passtest,类型为int(4 ...
- Beautyacticle
Original: https://github.com/rizhilee/Beautyacticle Backup: https://github.com/eltld/Beautyacticle
- 【JavaScript】JS跨域设置和取Cookie
cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值.本文主要JS怎样 ...
- jQuery css() 方法
$("p").css("background-color"); $("p").css("background-color" ...
- iOS开发——网络编程OC篇&使用WebView构建HyBird应用
使用WebView构建HyBird应用 HyBird是一种本地技术与Web相结合,能过实现跨平台的移动应用开发,最常用的一个框架:PhoneGap 一:首先,写好html代码 <!DOCTYPE ...
- innobackupex 备份实验
[root@localhost ~]# xtrabackup -v xtrabackup version based Linux (x86_64) (revision id: 45cda89) [ro ...
- Lucene的Vint类型详解
Lucene Vint压缩策略是,用每个字节的最高位做标志位,后7位为有效算术位,如果标志位为1,则说明后一个字节和当前字节是同一个数字,为0说明后一个字节是一个新的数字 Lucene源代码中进行存储 ...
- ext2磁盘布局
概述 本篇博客主要关注ext2文件系统的磁盘布局,即ext2会在格式化时将磁盘划分成什么样子. ext2磁盘布局 任何Ext2分区中的第一个块从不受Ext2文件系统的管理, ...
- 一款基于jQuery轮播切换焦点图,可播放多张图片
今天给大家分享一款基于jQuery轮播切换焦点图,可播放多张图片,在这个组件中,你可以任意指定8张图片,然后插件就会帮你自动生成缩略图,并且自动开始切换播放图片.当然,你也可以手动切换图片,只要点击缩 ...
- Common Linux log files name and usage--reference
reference:http://www.coolcoder.in/2013/12/common-linux-log-files-name-and-usage.html if you spend lo ...