免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1694 | 回复: 4
打印 上一主题 下一主题

请问如何获得RHEL内核源码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-12 17:00 |只看该作者 |倒序浏览
如题,我从网上下载到了kernel-2.6.18-164.el5.src.rpm源码包,解压出来发现是一个标准的2.6.18内核和数百个.patch文件,请问是不是将所有patch都打上去才是2.6.18-164.el5的源码呢?如果是,又该如何将这些patch打到内核上?

谢谢!

论坛徽章:
0
2 [报告]
发表于 2012-03-12 18:06 |只看该作者
顶一下,求教各位

论坛徽章:
0
3 [报告]
发表于 2012-03-12 22:15 |只看该作者
說到patch就要說一下diff
diff可以比較兩個文檔或者兩個目錄下的檔案.
如:
  1. diff file1 file2
复制代码
可能得到
545c545
< System.out.println("added");
---
> logger.info("added");
548c548,549
< System.out.println("not added");
---
> // popup error details
> logger.info("not added");

以<為首是舊文檔的源碼, 而以>為首則是新文檔的源碼. 其中548c548,549表示548行的code被換為548和549行.
所以我們可以用diff指令來製作patch, 使用patch可以減少變更衝突的機會, 也同時清楚顯示了更新的地方。

要制作patch可用如下指令:
  1. diff -ruN src-1.0 src-1.1
复制代码
這裏的r是递归(recursive), u是顯示上下3行共通的源碼以方便程序員找出更新的地方, N則是把新增的檔案也記錄.

有了patch檔當然也需要知道patch的用法:
  1. patch -p1 < ..\patch.txt
复制代码
這裏的-p1是指patch中記錄的第一個directory略去, 而<則是將patch.txt的內容輸入到patch指令中.
執行指令後如無錯誤畫面會顯示出每個被更新的檔案, 如果有衝突它會顯示警告.
將同樣的patch執行兩次則可以將patch回復.

簡單來說就是這樣!!!

论坛徽章:
0
4 [报告]
发表于 2012-03-13 07:54 |只看该作者
谢谢楼上,但是还是有疑问。
你意思是说要把所有patch都打上去吗?这些patch之间没有一个先后顺序吗?因为我觉得patch是按照行数来修改文件的,如果同一个文件的两个patch顺序错了不是会出问题?

论坛徽章:
0
5 [报告]
发表于 2012-03-13 22:46 |只看该作者
看你的需要囉....
他每個patch都有說明它的用途
舉例來說
像 linux-2.6-2-scsi-cciss-set-max-command-queue-depth.patch 是修補scsi控制器接受命令的最大量
基本上來說你可以不用上那些 patch....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP