日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

做一個最小的Linux kernel

Linux;能有多小呢;?;每一個做;embedded;系統(tǒng)的人都把小看成第一要務,其實這是不對的 。如果我們對系統(tǒng)的好壞和大小作圖,它應該長得像
|
|----
|
|;-----
|;
|;--------
|;---
|-----------------------;

小當然不會比較壞,但不一定比較好 。如果系統(tǒng)使用;4MB;和;5MB;沒有價格或性能上的差別,那;4MB;和;5MB;是一樣好的 。;

到底有多小;
廢話說了一堆,那到底;Linux;有多小呢?;好吧,各位這么有小牛頓的精神 。我也只好想辦法生一個答案出來了 。;

首先我必須聲明,我的不一定最小 。不要說我在欺騙世人,你的核心比我小 。我無意比較,我的數據只是給大家一個參考而己 。不過我歡迎大家提出自己的心得,告訴大家怎么樣做出更小的核心 。;

我使用的是;Mandrake;內付的;2.2.15,我沒有修改任何一行程序碼,完全只靠修改組態(tài)檔得到這些數據 。;

首先,使用;make;xconfig;把所有可以拿掉的選項都拿得 。;

不要;floppy
不要;SMP,MTRR
不要;networking,SCSI
把所有的;block;device;移除,只留下;old;IDE;device
把所有的;character;device;移除
把所有的;filesystem;移除,只留下;minix
不要;sound;支援
相信我,我己經把所有的選項都移除了 。這樣做之后,我得到了一個;188K;的核心 。
還不夠小嗎?;OK,再加上一招,請把下列二個檔案中的;-O3,-O2;用;-Os;取代 。
./Makefile
./arch/i386/kernel/Makefile;

這樣一來,整個核心水小了;9K,成為;179K 。;

不過這個核心恐怕很難發(fā)揮;Linux;的功能,因此我決定把網絡加回去 。把;General;中的;network;support;加回去,重新編譯,核心變成;189;K 。10K;換個;TCP/IP;stack,似乎是很上算的生意 。;

不過有;stack;沒有;driver;也是惘然,所以我把;embedded;board;常用的;RTL8139;的;driver;加回去,195K 。;

如果你需要;DOS;檔案系統(tǒng),那大小成為;213K 。如果;minix;用;ext2;換代,則大小成長至;222K 。;

不過大家要注意,那里的大小指的是核心檔的大小 。那和所需要的隨取記憶體是二回事 。這個數字代表的意義是你需要多小的;ROM;來存放你的核心 。;

Linux;所需的記憶體大約在;600~800;K;之間 。1MB;可能可以開機了,但可能不太有用 。因為可能連載入;C;程序庫都有困難 。2MB;應該就可以做點事了,但可能要到;4MB;以上才可以執(zhí)行一個比較完整的系統(tǒng) 。;


到底誰占了這些空間;
看到這里,是不是覺得;Linux;真的有點大 。好吧!;那我們就來看看誰占用了這些空間,下面這個列表是從;222K;這個核心做出來的 。
#;wc;
arch/i386/kernel/kernel.o;arch/i386/mm/mm.o;kernel/kernel.o;mm/mm.o;fs/fs.o;
ipc/ipc.o;
fs/filesystems.a;
net/network.a;
drivers/block/block.a;
drivers/char/char.a;
drivers/misc/misc.a;
drivers/net/net.a;drivers/pnp/pnp.a;
/usr/src/smalllinux/arch/i386/lib/lib.a;
/usr/src/smalllinux/lib/lib.a;
/usr/src/smalllinux/arch/i386/lib/lib.a;



結果如下;:;


243;2250;81946;arch/i386/kernel/kernel.o
42;316;10569;arch/i386/mm/mm.o
173;1541;74660;kernel/kernel.o
266;2307;68053;mm/mm.o
222;3139;123193;fs/fs.o
49;602;21600;ipc/ipc.o
263;2940;106504;fs/filesystems.a
137;1510;65512;net/network.a
92;719;39178;drivers/block/block.a
230;2308;87556;drivers/char/char.a
1;1;8;drivers/misc/misc.a
83;721;25680;drivers/net/net.a
1;1;8;drivers/pnp/pnp.a
20;187;9526;/usr/src/smalllinux/arch/i386/lib/lib.a
23;150;7714;/usr/src/smalllinux/lib/lib.a
20;187;9526;/usr/src/smalllinux/arch/i386/lib/lib.a
1865;18879;731233;total;

先說明一下,這里的大小和最終的大小有點差別,但大致還是可以做個參考 。這邊顯示;730K;實際上大約在;600K;左右 。;

推薦閱讀