做一个最小的Linux kernel( 二 )



很显然的,filesystem;相当的大 。大约在;230K;左右,占了;1/3;的体积 。记忆体管理占了;80K,和核心其它部份的总合差不多 。TCP/IP;stack;占了;65K,驱动程序占了;120K 。SysV;IPC;占了;21K,必要的话可以拿掉,核心档应该可以再小个;10K;左右 。;

所以如果要减核心大小,应该动那里呢?;答案应该很明显,当然是档案系统 。Linux;的;VFS;减化了档案系统的设计,buffer;cache,;directory;cache;增加了系统的效率 。但这些对整个系统都在;flash;上的;embedded;系统而言根本就用处不大 。如果可以把它们对拿掉,核心可以马上缩小;20K;左右 。如果跳过整个;VFS,直接将档案系统写成一个;driver;的型式,应该可以将;230K;缩减至;50K左右 。整个核心缩到;100K;左右 。;

从上面的数据来看,ucLinux;所减小的;mm;部份反到省的不多,主要是;mm;除了;virtual;memory;之外,也要处理;memory;allocation;的部份,这部份是省不得的 。如果二者齐做,则;100K;以下的;Linux;核心不是不可能的事 。;


结语;
如果有人有闲的话,不妨拿;2.0;或;1.0;的核心来试试 。看能做出多小的核心 。看完本文后,143K;的核心不再是技术上的挑战了,是吗?;也许明天就有人宣称做了;120K;的核心了.....;

不过,所为何来,省那几十K 。不如好好想想;compressed;filesystem;等更有用的技术吧!

推荐阅读