在这章里,我们来看一下如何编译pcDuino的内核。
和前面章节不太一样,这里我们将在X86 PC上交叉编译pcDuino的内核,所以,下面所用到的命令都是在X86 Linux上的。
1. 从Github下载kernel源代码文件:
$ git clone https://github.com/pcduino/kernel.git
注意:
- 此步骤只下载了搭建环境。
- 其他子模块可在这里下载:https://github.com/linux-sunxi/.
- 第一次在kernel/ directory 下运行“make”的时候,子模块的源文件将被下载(如果在运行“make”之前子模块没有被下载的话)。
2. 在PC上安装交叉编译的软件和工具链:
在x86的ubuntu系统下,用apt-get安装以下程序包:
$ sudo apt-get install build-essential git u-boot-tools texinfo texlive ccache zlib1g-dev gawk $ sudo apt-get install bison flex gettext uuid-dev ia32-libs
下载推荐的linaro工具链 (选择 “arm hf crosscompiler for Linux”):
https://launchpad.net/linaro-toolchain-binaries/+download
$ tar jzxf gcc-linaro-arm-linux-gnueabihf-xxx_linux.tar.bz2 -C your-path $ export PATH=$PATH:your-path/gcc-linaro-arm-linux-gnueabihf-xxx_linux/bin/
3. 编译Kernel 镜像
在kernel/ directory 下运行“make” ( 不要在kernel/linux-sunxi directory 编译源文件)。
$ cd kernel/ $ make
如果没有发生错误, 在输出文件夹中将会出现一个可以通过livesuit烧录的镜像和一个HW_pack文件:
- pcduino_a10_hwpack_YYYYMMDD.tar.xz ( 包括给mmc-boot的 uboot, 内核和 驱动模块).
- pcduino_a10_kernel_livesuit_YYYYMMDD.img.( 通过livesuit 烧录的内核文)
注意:
- 第一次编译的时候必要的源代码将会从这里下载:https://github.com/linux-sunxi/.
- 每次运行“make”的时候,都会为pcDuino运行补丁。
- pcDuino的补丁位于kernel/patch/ 目录下。
- 所有由编译工具链产生的目标文件都保存在kernel/build 目录下。
- 在kernel/linux-sunxi 目录下编译kernel会使构造环境变得杂乱。
- 如果你之前进行过此类操作,请在kernel/linux-sunxi下运行“make mrproper “进行清理。
4. 为pcDuino更新的新的kernel
以下命在pcDuino中运行。
如果你只想更新kernel和模块(而不更新ubuntu桌面),解压hwpack 文件, 并且替换掉pcDuino板内文件即可:
- a) 为从nand 启动的板子更新kernel
$ tar xvf pcduino_a10_hwpack_YYYYMMDD.tar.xz -C /tmp $ sudo mount /dev/nanda /boot $ sudo cp /tmp/kernel/* /boot -f $ sudo mv /lib/modules/3.4.29+ /lib/modules/3.4.29_old $ sudo cp /tmp/rootfs/lib/modules/3.4.29+ /lib/modules/ -ar $ sudo sync $ sudo umount /boot/ $ sudo reboot
- b) 为从存储卡启动的板子更新kernel
$ tar xvf pcduino_a10_hwpack_YYYYMMDD.tar.xz -C /tmp $ sudo mount /dev/mmcblk0p1 /boot $ sudo cp /tmp/kernel/* /boot -f $ sudo mv /lib/modules/3.4.29+ /lib/modules/3.4.29_old $ sudo cp /tmp/rootfs/lib/modules/3.4.29+ /lib/modules/ -ar $ sudo sync $ sudo umount /boot/ $ sudo reboot
注意:
- · Hardwarelib现在已经是不公开的源模块,你可以从这里复制这些模块 /lib/modules/3.4.29_old:
- · $ sudo cp /lib/modules/3.4.29+_old/kernel/drivers/hardwarelib/ /lib/modules/3.4.29+/kernel/drivers/ -ar
5. 定制你的kernel
你可以为自己改变或增加驱动。在编译之前,把你在kernel/patch 目录 下改变或增加的源代码都保存下来(此步骤也可以通过在kernel/patch/linux-sunxi 下运行“./make_kernel_patch.sh ”实现),在kernel/linux-sunxi 下的文件可能会被补丁再次重写一遍。
如果你想改变kernel的配置文件(增加或删除一些驱动),那么这里有一些不一样的地方。运行” make menuconfig “定制kernel配置, 然后将其保存到补丁目录并且重建kernel。
$ cd kernel/build/sun4i_defconfig-linux/ $ make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- $ mv .config ./../patch/linux-sunxi/arch/arm/configs/sun4i_defconfig -f
根据第三步重建kernel和第四步在新kernel下更新pcDuino。
转载请注明:爱开源 » 如何编译pcDuino内核