运行在TQ2440开发板上以及X86平台上的linux内核编译
一、运行在TQ2440开发板上的linux内核编译
1、获取源码并解压
直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包。
解压(天嵌默认解压到/opt/EmbedSky/linux-2.6.30.4/中)
tar xvjf linux-2.6..4_20100531.tar.bz2 -C /
2、获取默认配置文件
可以使用“config_EmbedSky_W43”作为默认配置文件
cp config_EmbedSky_W43 .config
3、配置(根据需要修改部分选项)
笔者认为只要有一个适合自己开发板的“.config”,这一步也不需要,直接使用这个配置文件去编译内核即可。
至于这一步的意义,其实也就是为了生成一个适合自己开发板的“.config”,决定哪些模块需要编译进内核(裁剪内核)。
默认配置文件的意义就在于,为我们提供了一种参考,通常选择的默认配置文件是与我们的开发板很相似的。由于配置选项太多,多达上千项,使用默认配置文件,只需要修改那些默认配置文件与我们开发板不一样的选项即可,这肯定是节省时间和体力的捷径。
make menuconfig
4、编译内核
make zImage
5、编译modules(内核驱动)模块
make modules
可在内核中挂载使用生成的“*.ko”文件
二、运行在X86平台上的linux内核编译和安装
1、获取源码并解压
可以从http://www.kernel.org/选择一个想要的版本,例如“linux-3.2.55.tar.xz”,并解压到“/usr/src”(/usr/src目录下是专门存放内核源代码的)。
sudo tar -xvf linux-3.2.55.tar.xz -C /usr/src
解压后源码大小几百MB。
2、 获取默认配置文件
比如说:/boot/config-3.2.0-55-generic-pae(Ubuntu当前内核的配置文件)
cp /boot/config-3.2.--generic-pae .config
3、配置
make menuconfig
此命令会调取各级目录中的kconfig生成一个菜单,通过这个菜单,我们可以配置linux内核。配置完成后的信息,保存在“.config”中。在编译内核的时候,会读取这个配置文件,从而决定以什么样的方式编译内核,编译内核的那些模块等等。
4、编译内核和模块
编译内核
make
此过程长达几个小时,编译完后源码包就有5、6个G,所以在编译之前确保你的虚拟磁盘剩余容量足够大,不够的话参考修改虚拟机linux硬盘的大小 进行磁盘扩容,否则在编译过程中将出现“磁盘空间不足”的问题。生成的内核镜像在arch/x86/boot目录下。
安装模块
make modules_install
make modules_install命令用于安装可装载模块,安装的目的目录时/lib/modules/3.2.55
5、安装
make install
make install命令执行三个操作:复制内核镜像到/boot目录下;生成initrd-img;更新grub。命令成功执行成功后,新的内核已可以使用,并且列在引导菜单中。
/boot目录下的内容
6、重启检查
重启系统,grub引导选项中多了我们新编译的内核选择,选择新内核引导。“Previous Linux version”为更新内核前的内核启动项。
进入系统后执行命令uname -r 查看当前的内核版本。
uname -r
后记
倘若想卸载自己编译的内核,可以参考linux下删除内核 进行操作。
参考网页:linux内核学习之二:编译内核
运行在TQ2440开发板上以及X86平台上的linux内核编译的更多相关文章
- 【转】深度分析NandFlash—物理结构及地址传送(以TQ2440开发板上的K9F2G08U0A为例)
K9F2G08U0A是三星公司生产的总容量为256M的NandFlash,常用于手持设备等消费电子产品.还是那句话,搞底层就得会看datasheet,我们就从它的datasheet看起. 这就是 K9 ...
- 在TQ2440开发板上ping 127.0.0.1不通
问题:在TQ2440上ping 127.0.0.1,提示错误 ping: sendto: Network is unreachable 解决方法:ifconfig lo 127.0.0.1 up ...
- DE1-SOC开发板上搭建NIOS II处理器运行UCOS II
DE1-SOC开发板上搭建NIOS II处理器运行UCOS II 今天在DE1-SOC的开发板上搭建NIOS II软核运行了UCOS II,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过 ...
- 在Developerkit开发板上运行blink例程
本文将介绍怎么样在VScode环境下,将AliOS Tings提供的blink例程在Developerkit开发板上运行起来. DeveloperKit开发板 在例程中分别用到两个led和一个按钮 ...
- 如何编译(helloworld)可以在开发板上运行的应用
本节介绍如何编译可以在开发板上运行的应用,编译方法很简单.基于:iTOP4412开发板首先要确定一下环境变量,如下图所示,使用“cd”命令回到根目录,然后使用命令“vim .bashrc”打开环境变量 ...
- 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上
在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...
- 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上
博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813 本篇文章中用到的工具源码下载 : -- ok-6410A 附带的 A ...
- easycwmp在开发板上的配置
原创作品,转载请注明出处 copyright:weishusheng 2015.3.18 email:642613208@qq.com 平台: Linux version 2.6.32-279.e ...
- FS210开发板上Qt4.7.0移植过程
作者:冯老师,华清远见嵌入式学院讲师. 1. 搭建Qt开发环境平台 1.开发环境:ubuntu 12.04 2.交叉编译链:arm-cortex_a8-linux-gnueabi 3.开发板:FS21 ...
随机推荐
- .\Obj\uCOSDemo.axf: Error: L6218E: Undefined symbol LCD_Fast_DrawPoint (refe
这个问题是 没有定义此函数 解决方法是 定义并声明一下 这个函数!!!
- c++文件流
前言 文件流能够从文件系统中读取数据并向文件中写入数据. 文件输入流适用于读取配置数据.读取保存的文件以及批处理基于文件的数据等任务.Fprintf,fwrite,fputs 文件输出流适用于保存状态 ...
- android 加载图片防止内存溢出
图片资源: private int fore[]; private int back[]; fore = new int[]{R.drawable.a0, R.drawable.a1, R.drawa ...
- 用ChooseALicense帮自己选一个开源license,然后用AddALicense给自己的github自动加上license文件
在我之前的一篇博客里面介绍过tl;drLegal ——开源软件license的搜索引擎,可以很方便的查询各种license,并且给出了很简洁的解释.今天又发现了另外一个帮助你选择你的开源软件licen ...
- zTree实现地市县三级级联报错(一)
zTree实现地市县三级级联 1.详细报错例如以下: java.lang.IllegalStateException: Failed to load ApplicationContext at org ...
- Qt 学习之路 :坐标系统
在经历过实际操作,以及前面一节中我们见到的那个translate()函数之后,我们可以详细了解下 Qt 的坐标系统了.泛泛而谈坐标系统,有时候会觉得枯燥无味,难以理解,好在现在我们已经有了基础. 坐标 ...
- java Map实现的cache manager
一个模仿memcached的JAVA虚拟缓存工具,可以缓存java对象 import java.io.ByteArrayInputStream; import java.io.ByteArrayOut ...
- 根据引用jar包路径查找原JAR包
网站:http://www.findjar.com/. 就是这个网站,经常在网上看到一些好的源码,什么都说了,就是没有说明需要引入那个包,这个包需要从什么地方下载,有些时候在网上搜索还不一定搜索得到, ...
- HDU 5592 ZYB's Premutation(树状数组+二分)
题意:给一个排列的每个前缀区间的逆序对数,让还原 原序列. 思路:考虑逆序对的意思,对于k = f[i] - f[i -1],就表示在第i个位置前面有k个比当前位置大的数,那么也就是:除了i后面的数字 ...
- java io 流基础