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的内容 ...
随机推荐
- getFields()和getDeclaredFields()
getFields()获得某个类的所有的公共(public)的字段,包括父类. getDeclaredFields()获得某个类的所有申明的字段,即包括public.private和proteced, ...
- EasyUI基础入门之Pagination(分页)
前言 对于一些企业级的应用来说(非站点),页面上最为基本的内容也就是表格和form了.对于类似于ERP这类系统来说数据记录比較大,前端表格展示的时候必需得实现分页功能了.恰巧EasyUI就提供了分页组 ...
- 【UML】具体解释六种关系
UML中包括六中关系.各自是:关联(Association).聚合(Aggregation).组合(Composition).泛化(Generalization).依赖(Dependency).实现( ...
- oracle数据迁移
通过这个文章演示一下Oracle的表空间迁移流程以及需要注意的诸多事项. 实验目标:将ora10g数据库实例上的表空间TBS_SEC_D迁移到secooler数据库实例上操作系统:Redhat 5.3 ...
- windows下使用代理连接github
在公司的windows下使用github,因为github被墙,查了查,发现给在windows下的git制定代理很简单,一句话 git config --global http.proxy htt ...
- Android实现定时器的方法
一.Handler 和 Thread package com.lstech.app; import android.app.Activity; import android.os.Bundle; im ...
- setsockopt
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO ...
- Android进阶笔记20:Android手机屏幕坐标系
1. 手机屏幕坐标系: 整个坐标系是以手机屏幕左上角为原点(0,0),如下:
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
作者:阿里云用户mr_wid ,z)NKt# @I6A9do 如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV RsfTUb)< 投票标题: 28.[阿里云 ...
- UICollectionView 简单应用和实际操作
1.网格视图 UICollectionView 网格布局 UICollectionViewFlowLayout系统图自带网格布局 系统自带的网格布局 UICollectionViewFl ...