手把手教你编译MK802 II 这款mini pc的Linux内核

至于mk802II 是什么东西,在有强大搜索引擎的时代。这就不需要多说了。

因为mk802II所采用的方案是珠海全志科技的芯片(AllWinner A10), 性能也不低,cortex a8架构 armv7指令集。但是目前Allwinner A10的Linux内核代码树还没有合并到kernel.org的官方主线。其代码分支托管在www.github.com 上:https://github.com/amery/linux-allwinner 现在转移到了 https://github.com/linux-sunxi/linux-sunxi,所以我们编译内核代码的第一步就是需要取回代码。

  • 准备目录,取代码:
    mkdir ~/mk802 && cd  ~/mk802
    git clone git://github.com/amery/linux-allwinner.git           #这一步视你的网络速度情况,网速快就很快取下来了。慢就需要耐心等待,可能会几小时
    #取完代码后,我们需要切换到合并了主线3.0.36版本的时候。因为此分支3.0.36版本还算稳定。
    git checkout 23e5456879db0175f571dec43095c49e181e0b10   #取出所需用来编译的3.0.36版本
    cd linux-allwiner                                                                                        #进入内核目录    
    #下载我配置好的内核配置文件,包含了usb摄像头uvc驱动以及ppp协议驱动还有常用的usb网卡驱动,usb转serail驱动。可以启动Lubuntu
    wget -qO - http://www.diveinedu.net/download/customed-ok-mk802-v3.0.36-t1-config.gz | zcat > .config

     

    如果你还需要修改内核配置以增加驱动,可以自己再运行  make ARCH=arm menuconfig 进行配置:

    make ARCH=arm menuconfig

    内核配置界面

     

    编译内核命令:

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 uImage           #编译内核
    
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j3 INSTALL_MOD_PATH=output modules   #编译驱动模块 安装目录是 output
    
    #模块编译成功之后,把模块安装到目的目录
    
    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j3 INSTALL_MOD_PATH=output modules_install

     

    此时。

    生成供Uboot启动的内核文件的位置是~/mk802/linux-allwinner/arch/arm/boot/uImage

      LD      arch/arm/boot/compressed/vmlinux
      OBJCOPY arch/arm/boot/zImage
      Kernel: arch/arm/boot/zImage is ready
      UIMAGE  arch/arm/boot/uImage
    Image Name:   Linux-3.0.36-t1
    Created:      Wed Nov 14 23:31:23 2012
    Image Type:   ARM Linux Kernel Image (uncompressed)
    Data Size:    3258088 Bytes = 3181.73 kB = 3.11 MB
    Load Address: 40008000
    Entry Point:  40008000
      Image arch/arm/boot/uImage is ready
    cheetah@Cheetah-Desktop:~/mk802/linux-allwinner$ ls -l arch/arm/boot/
    总用量 15060
    drwxrwxr-x 2 cheetah cheetah    4096  9月 29 01:57 bootp
    drwxrwxr-x 2 cheetah cheetah    4096 11月 14 23:31 compressed
    -rwxrwxr-x 1 cheetah cheetah 8882716 11月 14 23:31 Image
    -rw-rw-r-- 1 cheetah cheetah    1274  9月 29 01:57 install.sh
    -rw-rw-r-- 1 cheetah cheetah    3074  9月 29 01:57 Makefile
    -rw-rw-r-- 1 cheetah cheetah 3258152 11月 14 23:31 uImage
    -rwxrwxr-x 1 cheetah cheetah 3258088 11月 14 23:31 zImage
    cheetah@Cheetah-Desktop:~/mk802/linux-allwinner$ ls -lh arch/arm/boot/

     

    驱动模块以及firmware是在~/mk802/linux-allwinner/output/lib下

    cheetah@Cheetah-Desktop:~/mk802/linux-allwinner$ tree -d -L 5 output/
    output/
    └── lib
        ├── firmware
        │   ├── edgeport
        │   ├── emi26
        │   ├── emi62
        │   ├── kaweth
        │   └── keyspan_pda
        └── modules
            └── 3.0.36-t1
                ├── build -> /home/cheetah/mk802/linux-allwinner
                ├── kernel
                │   ├── drivers
                │   ├── net
                │   └── sound
                └── source -> /home/cheetah/mk802/linux-allwinner
    
    15 directories
    cheetah@Cheetah-Desktop:~/mk802/linux-allwinner$

    然后只需把uImage和驱动所在目录cp到你想要放的uboot启动分区或rootfs相应目录下就OK了。

     

    内核编译说难不难。说简单不简单。首先需要取到稳定版的内核代码以及适合配置好硬件的驱动配置是关键。

    这就是常说的内核定制过程。

    这一回粗糙的介绍mk802内核的配置和编译。下一回再接着介绍怎么整合根文件系统。

标签: , , , ,
文章分类 Linux嵌入式开发
2 条评论在 “手把手教你编译MK802 II 这款mini pc的Linux内核” 上
  1. 大茶园丁说道:

    考虑到网速慢的以及不想使用git操作的同学们,可以直接下载我已经checkout后的代码包。这样更方便,省流量生时间。不需要下载整个git仓库
    下载地址:http://www.diveinedu.net/download/linux-allwinner-v3.0.36.tgz
    解压缩命令 tar xzvf linux-allwinner-v3.0.36.tgz

  2. ls说道:

    楼主好人啊

发表评论