关闭

核心黑客系列之二Russell King

1123人阅读 评论(0) 收藏 举报
本周采访了Russell King,是他最先将Linux移植到ARM上并继续关注和管理着ARM Linux的开发。Russell谈到关于ARM,2.4内核,未来的2.5内核和很多其他的……
 
JA:请谈谈你自己和你的背景
 
Russell King:我28岁,住在England的Surrey,我一直对电子和计算机有浓厚的兴趣,大学在Southampton University
 
JA:你何时并且如何开始参与Linux的
 
Russell King:1994年春天,当时我还在Southampton上学,我的同学Martin Ebourne,向我介绍了Linux,在那之后,我开始研究Linux用于我的Acorn A5000机器
 

JA:你做了那些贡献
 
Russell King:我独立的将Linux移植到ARM3处理器上(A5000使用的),包括用户空间。这后面是一个很长的故事,在我的网页上,
 
JA:ARM移植版和主流的iX86分支之间的一些关键区别是什么
 
 
Russell King:我们有将近120机器类型,它们之间都有很大不同。为所有机型建造一个统一的内核是不可能的,虽然我们试图让一种内核可以运行在尽可能多的相似机型上。

 
JA:ARM移植版支持何种文件系统,你有使用最新的任何一种日志文件系统(Journaling File Systems)吗
 
Russell King:一般的ext2,minix,cramfs,jffs,jffs2,fat,nfs等工作起来没有任何问题,我也更希望其他的文件系统也一样。我不清楚ext3是否针对ARM做过测试,但是它们应该也不会出问题-代码已经被审查过,像endianness这样的普通问题(common portability problems like endianness,译者:不知何意?)应该已经解决了。
 
JA:为什么要在多种其他的移植版选择ARM Linux呢
 
Russell King:ARM机器可以很Cool-比如,iPAQ掌上PC,或者LART(Linux Advanced Radio Terminal)。iPAQ预装WinCE,但是handhelds.org上的人给出了如何在iPAQ上面加载ARM Linux的步骤。
 
JA:分区支持的重建工作怎么样了
 
Russell King:在2.3的时候,分区支持就被重建了;事实上,这项工作开展的更早是因为对于2.2 ARM Linux内核来说是必须的。Acorn机器有很多奇怪并令人迷惑的分区格式,把他们都放到原始的genhd.c文件中会变得很杂乱。 我,Alan Cox和其他人认为分区支持的有关代码应该对于他们各自的类型进行拆分,然后放到比较合理的位置,就象fs/partitions。比如,一般的x86 DOS分区系统在fs/partitions/msdos.c,而Sun分区系统放在fs/partitions/sun.c。
 
JA:你在开发时使用的主要工具是什么http://kernelnewbies.org)对成长中的内核黑客提供帮助。 邮件列表是无价的资源,它可以告诉你社团在做什么,提议的特性,新发行版的信息。有很多Linux mailing lists,加入其中可能会成为一场恶梦,特别是那些每天拥有很高容量的列表。使用一个能理解threading的邮件客户端会有帮助。
 
Russell King:我一般使用MicroEMACS编辑器(sorry vi and EMACS people)。我在我的ARM的工作站上运行X11,使用常见的Gnome环境。我也使用Mozilla,但那是在一台x86笔记本上(keep that quiet ;-))。 ARM内核在本地构建-在一些机器上。由于有这么多ARM机器类型,我只能在我这里有的这些机器上构建很小一部分。
 
JA:你使用其他操作系统吗,对比Linux,你喜欢或者不喜欢他们什么地方
 
Russell King:我现在没有使用任何其他的操作系统,但是过去曾安装和使用过Windows的不同版本,也曾涉足过Novell 4文件服务器。 我也使用过RISC OS,一个很多年来在Acorn机器上运行的操作系统。它有互相协作的多任务图形用户接口(GUI),响应很快,也有很多应用程序,但缺乏像VM(虚拟机)这样的功能 不管如何,对于ARM机器,OpenSource是无价的 - 你将很难得到一个运行在ARM上的Oracle for Linux。但是有源代码,加上时间,我们可以让任何软件都能在ARM上运行。ARM确实有一些独特的问题,但是要是它没有,那么也就没有这么有趣了(ARM does have some unique problems, but it wouldn't be any fun if it didn't!)
 
JA:你面临这那些“独特的问题”
 
Russell King:ARM处理器对于数据类型有不同的对齐规则(alignment rules)。比如,32位的字应该以32边界对齐。但是内核网络代码不是这样的,所以我们不得不通过特别的代码“改正”这些“非对齐(mis-aligned)”式的访问。 ARM处理器一般没有浮点指令 - 目前我们通过一个内核模式模拟器模拟他们。当然也有其他解决方案,比如用户空间的“软浮点(soft-float)”实现(通过一个连接到应用程序的库提供必要的整数运算来处理浮点) 从缓存一致性的观点,ARM上的缓存也需要特殊处理。我们的缓存使用“虚拟”地址被标识和搜索,这个地址是Linux和应用程序使用的。所以当进程切换和内存映射改变(比如映射一个文件)时,就需要特别的缓存管理代码来维护数据的一致性。
 
JA:你曾经看过很多各种Open Source的BSD内核吗
 
Russell King:在极少的情况下,我曾看过一眼他们在那里,还有BSD的人们是否仍在作ARM的事。Linux新手确实要求Linux和BSD的人共享代码,但是这有一些问题 - 主要是这涉及到BSD License的专利权。
 
JA:你对2.4内核系列的目前状态作何评价,你认为它稳定吗?
 
Russell King:Linux 2.4内核几乎达到了(商业)产品质量,但是仍然还有许多事要做。Alan Cox的2.4-ac是基础,我把ARM社团从Linus的内核转移到Alan的2.4.8内核,主要是因为我不喜欢linus选择的方向
 
JA: Alan已经在他的 -ac的changelog中提到,他将在某个版本时转换到新的VM上,为了将他的分支融入主流(merge his branch with the main tree),你怎么看
 
Russell King:我认为Alan将使用Rik的VM,直到Andrea/Linus VM变的稳定时。我认为Alan不会改变他分支中的VM“只是为了同Linus的版本相融合”,因为这不是一种可以达到稳定的办法。 Alan相信一次只对VM作一个很小的修改并在做下一个修改前仔细测试它的效果。这允许修改变得很独立并被评估,这样差劲的修改将很容易的抛弃掉。

 
JA:你对未来的2.5内核最大的期望是什么,你何时准备开始
 
Russull King:我将在2.5内核推出后尽早开始 - 对2.5内核有很多计划,这些都将非常明显的影响ARM体系结构 - 比如,我们将使用一个普通(generic)的“设备驱动”结构来处理PCI,ISA,PnP设备。对一些ARM机器,我们有我们自己的“扩展卡(expansion cards)”,我们可能将把这个也全部放入这个普通结构中。 我希望,我们能将ARM完全融入;只有那些适合于集成到主流的开发系列中的分支才能融入,但是对于ARM却变得是很必要了(正在显现)

 
JA:比如?
 
Russull King:在ARM代码树中有一些对控制台和键盘代码的改变,这将能影响其他其他体系结构的行为。还有对于PCI层的改变,这允许Linux能利用“PCI预提取”区域( "PCI prefetchable" region)。在这些改变被融入前,还真要在其他体系结构中作广泛的测试以确定这些修改不会带来其他的稳定性问题。
 
JA:你遇到过Linus吗,Alan呢,其他内核开发者呢
 
Russell King:我遇到过很多Linux的同志们,包括Linus和Alan,主要是在不同的会议的场合,比如UK Unix User Group Linux 会议,Ottawa Linux Symposium,今年在San Jose的Kernel 2.5 Conference。 ARM社团在纽约相聚过一次,我们希望未来有更多的机会

 
JA: ARM社团有多大,上次在纽约的聚会有多少人
 
Russell King:这很难说ARM社团有多大。上次纽约会议的组织者收到了很多出席的请求,远远超过了能提供的席位。在ARM Linux Mailing lists上有大约1000人,但是我直到有很多人并没有订阅。而且,也有很多对ARM Linux感兴趣的商业用户。 还有其他的列表 - 在handhelds.org和LART mailing lists,这上面有很多人并没有订阅ARM Linux mailing lists

 
JA:你在”非Linux“时间做什么?
 
Russell King:直到几个星期前,我还为Jubilee Line project(London tube transport network的一部分)工作。从那时起,我就决定从大公司的政治中脱离出来休整一段时间,回到心志空灵的状态。(take a break from the politics of major companies for a while to return to sanity.)

 
JA:对于渴望成为内核黑客的人,你有什么提示和鼓励
 
Russell King:不断快速扩展的Linux经典书籍能提供有用的信息。当然”Linux Device Drivers”是强烈推荐的,还有,#Kernelnewbies频道,在Openprojects IRC网络上(请看

 
JA:在过去的几年里我曾经换过很多邮件客户端。最近几个月,我很高兴的在使用Sylpheed,它支持threading并在被很快的开发着。你推荐用什么客户端
 
Russell King:Mutt其实很不错,但需要花时间适应它。如果你以前使用elm,你将发现很多键的使用是相同的。我认为mutt是“elm v10” - 它有很多elm缺乏的非常有用的特性。比如,mutt集成了mime编码和pgp(gnupg)支持,还有健全的延迟消息功能。
 
JA:上次的采访中我们见到了Robert Love,我们知道了关于他的可抢占内核升级包,这个包,或者是Andrew Morton维护的那个包应用在ARM移植版上吗?
 
Russell King:Andrew Morton的不能应用在ARM代码树中,因为我们做了一些修改而产生一个错误,这个只要在应用了该包之后做一个小修改就行了。而且这个包需要对内核配置脚本做一点很小的修改,任何有C和shell经验的人能轻松搞定并且让它毫无问题的运行。 Rebert Love的抢占包就需要更多的修改了,因为它改动了一些i386汇编文件。这些改动需要移植到相应ARM汇编文件上来,也就是说,这可能只适合那些有ARM汇编经验的内核高手。 我没有将任何一种融入到ARM内核中的计划,直到我知道了我们前进的方向。抢占包入侵了普通内核,并且当前不是2.4内核一个稳定的元素,这是我个人的观点。
 
JA:你还希望补充些其他的吗
 
Russell King:我要感谢在Acorn,ex-Digital, Intel, netwinder.org以及ARM社团提供过支持的人们,是他们帮助ARM Linux发展到

http://www.arm.linux.org.uk。后来,Martin Ebourne将它移植到后续的基于RiscPC的ARM710上。在当时,Linux还是以本地的方式构建的操作系统,还没有像diff和patch这样的工具。因此Martin的工作并没有加入到我的代码树中。我后来将它移植到Digital EBSA110 StrongARM评估平台,接着,Acorn(a company)友好的贡献了一个StrongARM RiskPC,到那时,ARM Linux内核的通用结构才得以成型。 我现在主要的工作就是管理对ARM的linux移植,基本上就是从不同的ARM开发者那里收到补丁包,将它们清晰的集成在一起,并保证它们能一起工作。 我也在2.4内核中做重建分区支持的工作,还有就是核心busmouse设备驱动程序。 未来,我将为“CPU时钟速度缩放(CPU clock speed scaling)”项目提供宿主,它同时可以用于x86和ARM体系结构。还有一个内核UART子系统的替换工作。 电源管理对于电池供电的机器很重要,比如Compaq iPAQ和x86的笔记本。处理器消耗的电力将和执行指令的速度和时钟频率有关;时钟频率越慢,耗电越少。你想,要是能调节CPU时钟频率,你就能使机器发挥更好的性能,还有更长的电池寿命。 在一些应用程序中,用户空间(的程序)能够知道将有什么事情发生,对于嵌入式设备也一样,这就允许对电源使用作非常精确的控制,比如Delft University of Technology的LART项目http://www.lart.tudelft.nl/projects/scaling/
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2242709次
    • 积分:22133
    • 等级:
    • 排名:第318名
    • 原创:6篇
    • 转载:1124篇
    • 译文:1篇
    • 评论:253条
    最新评论