您的位置:首页 > 运维架构 > Linux

Linux3.4内核的基本配置和编译

2017-07-25 19:48 225 查看
转载自:http://www.embedu.org/Column/Column634.htm

作者:李昕,华清远见研发中心讲师。
了解Linux3.4内核的特性及新增功能,掌握Linux内核的编译过程及linux内核配置选项的内容。
【实验环境】
        ●主机:Ubuntu 10.10 (64bit);

                ●目标机:FS_S5PC100平台

                ●交叉编译工具链:arm-eabi-4.4.0(Android4.0.4自带交叉工具链);
【实验步骤】
解压内核
    将linux3.4.0_android_goldfish.tar.bz2拷贝到Android源码下并解压;
$ tar xvf linux3.4.0_android_goldfish.tar.bz2

        $ cd kernel/goldfish
修改Makefile
    打开内核源码顶层的Makefile,修改CPU架构和交叉工具链;
# vim Makefile 195行:

        195ARCH         ?= $(SUBARCH)

        196CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
为:
# vim Makefile 195行:

        195ARCH         ?= arm

        196CROSS_COMPILE?= ../../prebuilt/linux-x86/toolchain/ \

                                                      arm-eabi-4.4.0/bin/arm-eabi-

        #交叉工具链路径相对于android源码的路径,具体以实际交叉工具链路径为准
添加配置文件
    拷贝Samsung S5PC100标准板配置文件作为FS_S5PC100配置文件,make menuconfig所做的修改也会保存到.config文件中;
$ cp arch/arm/configs/s5pc100_defconfig .config
配置内核
    该命令执行时会弹出一个菜单,我们可以对内核进行详细的配置。
$ make menuconfig
        ●添加NEON驱动
    NEON 技术是 ARM Cortex-A 系列处理器的128位SIMD(单指令多数据)体系结构扩展,旨在为消费性多媒体应用提供灵活强大的加速功能,从而明显改善用户体验。它具有 32个寄存器,64位宽(是16个寄存器,128位宽的双倍视图。)
Floating point emulation --->

            [*]VFP-format floating point maths

                [*] Advanced SIMD (NEON) Extension support
        ●添加Android所需要的驱动
Device Drivers --->

            [*] Staging drivers --->

                Android --->

                    [*]   Android Drivers

                    [*]   Android Binder IPC Driver

                    [*]   Enable the Anonymous Shared Memory Subsystem

                  <*>   Android log driver

                    [*]   Android RAM buffer console

                    [*]   Persistent function tracer

                    [*]   Timed output class driver (NEW)

        <*>   Android timed gpio driver

                    [*]   Android Low Memory Killer

                    <*>   Android Switch class support --->
修改文件
    注释编译器不支持的调试语句。
#  vimmm/page-writeback.c  +1772

        1772     //BUG_ON(PageWriteback(page));
编译内核
    执行编译命令编译内核,如果主机配置多核CPU可以使用多线程编译;
$ make zImage–jn     # n 代表编译线程的数量
通过上述操作我们能够在arch/arm/boot目录下生成一个zImage文件,这就是经过压缩后的内核镜像。
测试
拷贝内核镜像到TFTP目录。连接串口,开发板上电,测试内核,可以看到内核启动的打印信息。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: