首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

zedboard学习-为Linux内核打补丁

zedboard学习-为Linux内核打补丁

编译Linux内核源代码时碰到的一个问题
问题:补丁0001-Xilinx-ARM-Kernel-32MB-RAM-disk-on-ZedBoard.patch 打不上
首先说明一下为什么要打这个补丁,即这个补丁的作用:修改内核针对Zynq目标器件默认的编译配置,使得32MB RAM disks能够被支持。
按照官方给的方法输入以下命令:
[wicoboy@localhost linux-xlnx]$ git apply 0001-Xilinx-ARM-Kernel-32MB-RAM-disk-o
n-ZedBoard.patch
然后出现会错误提示补丁没被打上:
error: patch failed: arch/arm/configs/xilinx_zynq_defconfig:723
error: arch/arm/configs/xilinx_zynq_defconfig: patch does not apply
错误原因分析:
据本人推测是补丁和源码二者的版本不太和谐,可能就是源码又被修改过而对应的补丁未相应更新(当然也可能是其它原因)。linux下出现问题首先我们就要考虑一下版本的问题,编译交叉工具链时可是深刻体会了一下。
解决思路分析:
我们最终的目的是让编译出来的内核支持32MB RAM disk.就有两个思路:补丁和配置文件。补丁归根揭底也是来修改配置文件,既然补丁打不上那我们就直接修改配置文件。
但是如何修改呢?研究配置文件与补丁。研究配置文件知道它都做了哪些的配置、哪些是和ramdisk相关的、以及是怎么配置的;参考补丁内容,研究它是怎么实现让内核支持32MB RAMdisk的。下面摘录了补丁文件中一些有价值的信息:
This patch allows the kernel to use a 32MB RAM disk as the root file system on ZedBoard.
(说明了其作用)
arch/arm/configs/xilinx_zynq_defconfig | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
(所修改的文件,即其修改的整体情况描述)
-CONFIG_BLK_DEV_RAM_COUNT=16
-CONFIG_BLK_DEV_RAM_SIZE=16384
+CONFIG_BLK_DEV_RAM_COUNT=8
+CONFIG_BLK_DEV_RAM_SIZE=32768
(具体做的修改)
解决方案:
1、打开xilinx_zynq_defconfig
[wicoboy@localhost linux-xlnx]$ vi arch/arm/configs/xilinx_zynq_defconfig
2、手动修改默认配置
找到如下两行内容:
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=16384
修改为:
CONFIG_BLK_DEV_RAM_COUNT=8
CONFIG_BLK_DEV_RAM_SIZE=32768
经验总结:
定位问题以知道是做什么的为基础;
解决问题以知道是怎么做的为基础。
具体来讲:要准确定位问题关键是对系统整体上、宏观上的一个把握,可以不清楚每个模块具体是怎么实现的,但一定要明白每个模块的作用是什么。但是要最终解决问题就需要我们知道它具体是怎么实现这个作用的。比如我们这个错误,只有知道了这个补丁的作用才能定位到问题是怎么让内核支持32MB RAM disk,而又只有知道了配置文件是怎么实现对目标平台的配置,补丁又是做了工作以使其支持这项特性,这样才能让我们最终解决问题。
这就给了我们解决问题的思路:遇到问题时首先整体把握以定位问题,然后深入细节以解决问题。

来源:wicoboy的博客
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表