Jack:在读大学的时候我想过移植Linux操作系统。
我:现在呢?
Jack:我还是想移植Linux操作系统。你教我移植吧。
我:你知道什么是“Linux内核移植”吗?
Jack:当然知道。举个例子——把x86平台的Linux移植到ARM平台。
我:这是一个很有“学问”的概念。
Jack:什么意思?
我:我先给你讲一段历史,你自然就明白了。
Jack:好。
我:在1991年,Linus发表他独立完成的Linux时(那个时候他把它叫做freax),是只支持386平台的,而且,在他的设想中,Linux就是为386平台设计的。但是,大概在1993年,也就是Linux1.0发表之后,Linux逐渐被移植到了sparc、mips等平台。
Jack:然后呢?
我:我想说的是,那些把Linux从386移植到sparc等平台的人是技术比较牛逼的,属于科研型人才或者真正的geek,因为之前还没有人做过这样的事儿。
Jack:是的。但是,这个和我想学习Linux移植到ARM有关系吗?
我:有关系的。因为Linux内核对ARM的支持已经非常完善,就是说,移植的代码早就已经完成了,比如针对ARM的内存管理、系统引导、嵌入式设备驱动等等,都已经很完善了。
Jack:不是太明白。
我:我的意思是,Linux内核其实已经被移植到ARM了,只是你在笔记本上运行的Linux是在编译时选择的x86平台而已。
Jack:那如果我坚持要移植Linux到ARM,我需要做什么呢?
我:你需要做2件事。
1、买一块ARM开发板(例如s3c2440,而不是ARM CPU)。
2、照着你买的开发板的说明书一步一步地做。
Jack:我操。这么简单。
我:是的。如果你只想移植Linux内核就是这么简单。
Jack:草。原来Linux内核移植是这么没有技术含量的活儿。
我:你SB啊。之所以这么简单,是因为处理器的公司以及核心开发板的公司请了大神过来移植(弄不好就是Linux内核email list那些人)。你所做的,是按照别人做好的手册去做一遍而已。
Jack:我擦。移植Linux内核本来就很简单的嘛。
我:1、你照着手册去移植很简单,但是你能明白各个步骤的原理吗?2、等你明白了原理,你又如何能把内核移植作为一个项目,然后挣钱呢?
Jack:那你给我讲讲原理吧。
我:等我心情好了再给你讲。