a)准备交叉编译工具链
android代码树中有一个prebuilt项目,包含了我们编译内核所需的交叉编译工具。
b)设定环境变量
$ emacs ~/.bashrc
增加如下两行:
export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/ arm-eabi-4.4.0/bin
export ARCH=arm
保存后,同步变化:
$ source ~/.bashrc
c)获得合适的内核源代码
$ cd ~/android
获得内核源代码仓库
$ git clone git://android.git.kernel.org/kernel/common.git kernel
$ cd kernel
$ git branch
显示 * android-2.6.27
说明你现在在android-2.6.27这个分支上,也是kernel/common.git的默认主分支。
显示所有head分支:
$ git branch -a
显示 * android-2.6.27
remotes/origin/HEAD -> origin/android-2.6.27
remotes/origin/android-2.6.25
remotes/origin/android-2.6.27
remotes/origin/android-2.6.29
remotes/origin/android-goldfish-2.6.27
remotes/origin/android-goldfish-2.6.29
我们选取最新的android-goldfish-2.6.29,其中goldfish是android的模拟器模拟的CPU。
$ git checkout -b android-goldfish-2.6.29 origin/android-goldfish-2.6.29
$ git branch
显示 android-2.6.27
* android-goldfish-2.6.29
我们已经工作在android-goldfish-2.6.29分支上了。
d)设定交叉编译参数
打开kernel目录下的Makefile文件,把CROSS_COMPILE指向刚才下载的prebuilt中的arm-eabi编译器
CROSS_COMPILE ?= arm-eabi-
把 LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
$(call ld-option, -Wl$(comma) build-id,))
这一行注释掉,并且添加一个空的LDFLAGS_BUILD_ID定义,如下:
LDFLAGS_BUILD_ID =
e)编译内核映像
$ cd ~/android/kernel
$ make goldfish_defconfig
$ make f)测试生成的内核映像
$ emulator -avd myavd -kernel ~/android/kernel/arch/arm/boot/zImage
分享到:
相关推荐
Linux内核映像文件是操作系统的核心部分,负责管理和协调计算机硬件与软件资源,为其他程序提供基础服务。在嵌入式系统中,特别是在开发板或物联网设备上,使用经过裁剪的Linux内核映像非常常见,以确保系统运行轻量...
编译Linux内核 编译Linux内核是Linux操作系统课程设计实验的一部分,目的是学习重新编译Linux内核,理解并掌握Linux内核和发行版本的区别。以下是编译Linux内核的详细知识点: 一、实验目的 * 了解Linux内核的...
- **编译Linux内核**: 执行`make bzImage`命令编译内核映像文件`bzImage`,并使用`make modules`和`make modules_install`命令编译并安装内核模块。 - **修改Grub配置**: 修改Grub配置文件以支持新编译的内核,确保...
为了编译Linux内核,你需要安装MinGW32的完整版,包括gcc、make以及其他必要的库和工具。确保你的MinGW32安装了g++编译器,因为内核源码主要是用C++编写的。 接下来,我们需要**Linux 0.11** 的源代码。在解压提供...
### OMAPL138编译Linux内核方法详解 #### 1. 编译内核 根据提供的文档信息,本文将详细介绍如何针对OMAPL138平台编译Linux内核的方法。OMAPL138是一款高性能的嵌入式处理器,支持多种内核版本。本文档将涵盖Linux ...
Linux内核配置和编译的实验内容包括内核配置系统组成、内核编译流程分析、内核映像烧写以及如何在内核配置中添加编译模块等知识点。 内核配置系统由三部分组成:Makefile、配置文件和配置工具。Makefile定义了Linux...
- `make zImage`或`make bzImage`(后者用于大型内核):编译生成压缩的内核映像文件。 - **模块编译与安装**:若选择将某些功能编译为模块,还需执行`make modules`和`make module-install`,将编译后的模块放置于...
当需要对系统进行优化、添加特定功能或修复已知问题时,我们可能需要重新配置和编译Linux内核。本资料主要涵盖了Linux内核的重配置和编译过程,下面将详细解释这一过程。 首先,重配置内核意味着根据系统的特定需求...
这个实验旨在让学习者掌握在ARM系统上编译Linux内核的过程。实验设备包括一套S3C2410RP嵌入式实验箱和一台装有Redhat9的宿主机,需要确保宿主机已经配置好ARM Linux的开发环境。 实验步骤分为多个阶段: 1. 首先,...
在基于Arm的设备上编译Linux内核,你需要遵循以下步骤: 1. **环境配置**:确保你的开发环境已经安装了交叉编译工具链,例如arm-linux-gnueabi-工具集,以适应Arm架构。同时,设置好PATH环境变量,使其能够找到这些...
本文讨论了基于ARM的嵌入式Linux内核的裁剪与移植,介绍了交叉编译环境的建立、Makefile的修改、nash分区的设置、内核的编译、内核映像的生成等过程。 Linux操作系统是嵌入式系统的不二之选,原因是Linux具有开放性...
对于使用Zynq 7000系列芯片进行Linux开发的用户来说,编译Linux内核是一个基础而重要的步骤。本文将详细介绍Zynq 7000 Linux内核的编译方法,通过一系列的命令和操作步骤帮助用户快速上手。 在开始之前,需要了解...
本文将详细介绍如何为at91sam9260-ek开发板编译Linux内核,帮助读者掌握这一过程中的每一个步骤。 #### 二、准备工作 1. **获取源代码**: - 首先,需要下载Linux内核源代码。在本例中,使用的版本是2.6.19。 - ...
嵌入式Linux内核编译是一项复杂而关键的任务,它涉及到在特定的硬件平台上构建操作系统核心,以便在该平台上运行应用程序。在这个过程中,开发者需要创建一个交叉编译环境,因为通常开发工具(如编译器)运行在不同...
1. **编译内核映像**:执行`make bzImage`以生成内核映像文件。 2. **编译内核模块**:使用`make modules`命令编译内核模块。 3. **安装内核模块**:通过`make modules_install`将编译好的模块安装到系统中。 4. **...
### Linux内核编译知识点详解 #### 一、编译内核的准备工作 在开始Linux内核编译之前,需要完成一系列准备工作以确保编译过程能够顺利进行。 **1. 获取Root权限** - 输入指令:`su root` - 再输入root账户密码...
编译完成后,生成的内核映像可以烧录到目标硬件上,实现Linux系统的运行。 阅读《奔跑吧,Linux内核(ARM)》,读者将了解到如何在ARM平台上调试内核,包括使用GDB进行远程调试,以及利用kernel log和sysfs来获取内核...
Linux内核编译配置是一项重要的技术活动,尤其对于嵌入式系统开发者来说。在嵌入式Linux系统中,开发者通常需要根据具体的硬件平台和应用需求定制操作系统内核,以优化性能和功能。Linux内核编译配置命令是实现这一...
在Linux操作系统中,内核是其核心...内核裁剪是一项细致的工作,需要对Linux内核有深入理解。在裁剪过程中,既要保证系统功能的完整,又要确保效率和稳定性。通过合理裁剪,可以为特定应用创建一个轻量级且高效的内核。