本帖最后由 gpio 于 2013-12-20 13:01 编辑
板子到手后在nand中刷了一个官方 lubuntu 1.06 版本(下载地址), 用了一阵觉得不错, 很是喜爱, 之后由于要做一些操纵针脚跟其他模块打交道的程序, 所以准备自己开发 Linux 驱动来进行交互.
搞过 Linux 驱动的应该知道驱动的编译是需要指定内核源码路径的, 但是由于官方并没有把 lubuntu 1.06 版本的源代码放出来 (只有 1.05 的), 所以决定使用官方 git 最新源码, 自己编译个 Linux 内核.
0. 首先要确保板子 nand 内刷了 lubuntu 1.06 (下载地址), 因为此贴只谈如何升级现有内核, 而不是从 0 开始制作镜像.
1. 在PC上安装好交叉编译工具链:- sudo apt-get install gcc-arm-linux-gnueabi
复制代码 2. 使用 git 下载官方源码:
注意必须切换到 sunxi-3.4 分支!- git clone -b sunxi-3.4 https://github.com/linux-sunxi/linux-sunxi.git
复制代码 3. 准备编译内核所需的配置文件, 注意这一步非常重要, 如果配置不正确, 板子的 nand 肯定驱动不了, 系统起不来! 这一步是楼主遇到的最大的坑, 在此要感谢 @寂寞八進制 的提醒, 才明白是哪里出了问题.
如果开机时, 系统死在- Waiting for root device /dev/nanda
复制代码 说明配置不正确, 或是配置中没有勾选 SUNXI nandflash driver, 请仔细检查这一步!
这是我从官方源码包内抠出来的 cubieboard2 的配置
其他型号的配置估计也能从官方源码包里弄到 (可以从这里面找)
解压出的配置文件复制到- linux-sunxi/arch/arm/configs/
复制代码 配置文件的名字改成4. 开始编译: (注意 -j8 表示使用 8 个 CPU 编译, 改成你自己的 CPU 数目或者去掉都行)- cd linux-sunxi
- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- kernel_defconfig
- make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules
- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=output modules_install
复制代码 5. 在板子上挂载 nanda 分区到文件系统6. 把 PC 上的 uImage 替换板子上的 uImage;
把 PC 上的驱动, 覆盖到板子上根目录
PC 上 uImage 位置:- linux-sunxi/arch/arm/boot
复制代码 PC 上驱动位置:7. 自此, 内核就已经升级成功了, 可以把板子上 /lib/modules/3.4.61+ 文件夹删除, 因为它是上一版内核的驱动包, 升级内核之后就没有用了
8. 检查板子上的 /lib/modules 目录下有没有 3.4.67 目录, 如果操作正确是肯定有的
9. 重启系统10. 启动之后查看内核版本, 可以看到 3.4.67 就是成功了 |