玩linux,不玩LFS是个遗憾
不清楚什么时候看到的这么一句话:你知道红帽子,就也仅知道红帽子;你知道LFS,你将知道linux。不晓得大家是怎么理解的,目前linux的发行版本太多,已经成气候的有好几个,象RH,SUSE,DEBIAN,ML等。在使用发行版的时候,我们更多的是看到了花哨的界面,方便的使用等,而从来没有再去关注默默工作的kernel,系统的支柱toolchain。这些才是真正的linux!
Rpm也好,apt也好,这些智能的打包工具提供了很大方便,然而使用中我们也丧失了对“依赖性”的关注!
搞嵌入式开发,linux更是不离不弃,始终在我们周围。作为一名开发者,很多朋友可以轻松的搞定bootloader,任意裁减kernel,添加自己的device-driver,制作rootfs,安装漂亮的GUI等等等等。
或许在我们眼中linux已经不再陌生,我们的认识也不局限与RH,使用的发行版更多是基于console操作的。直到有一天,我发现了LFS,一直藏于心中的一个节终于解开。从开始使用arm-toolchain的那天,其实问题就出现了,只是没有拿出来。即使拿出来了,当时也不知道如何找寻答案。
问题:那个toolchain是怎么来的?
由于使用了二进制的发布包,所以解压就可以运行,所以当时没有多花心思。后来因为涉及到如何在一个分区上为不同的linux建立rootfs,到处寻找答案。我们知道,2.4和2.6的内核使用的文件系统不一样的,而我现在只有一个分区,很明显必然要把一个kernel的rootfs做到文件夹里面。这个过程中,我接触了LFS,粗略的看了介绍,因为是基于源码建立linux系统,感觉蛮有意思。就开始干了:)
LFS的精华是里面的toolchain的建立,通过建立toolchain,我领悟到了arm-toolchain是如何产生的。使用了那么久的gcc,现在终于找到了出生地。编译,升级kernel没什么,因为有了gcc[page_break],简单的配置一下就可以了。可是编译一个gcc就不是那么容易的。
LFS我走过了一遍,LFS ID:17037。这个过程不是按部就班的,虽然book上有每一个步骤。多些思考,