ǶÈëʽӦÓÃLinux²Ã¼õµÄ³õ´Î³¢ÊÔ
http://blog.oasisfeng.com/2006/09/15/embedded-linux-cutdown/
ǰ¶Îʱ¼äÒòΪǶÈëʽӦÓÿª·¢µÄÐèÒª£¬¶ÔLinux½øÐÐÁËÒ»´Î´ó·ù¶ÈµÄ²Ã¼õ¡£ÓÉÓÚÊdzõ´Î½Ó´¥LinuxÆô¶¯µÄºËÐIJ¿·Ö£¬ËùÒÔ»ù±¾ÉÏ»¹ÊǶÔÍøÉϸ÷Öֲüõ
·½°¸µÄÆ´´ÕºÍÕûÀí£¬°üº¬×Ô¼ºÀí½âµÄ²¿·ÖʵÔÚºÜÉÙ¡£×ܵÄÀ´ËµÐ§¹û²»ËãÀíÏ룬ºóÃæ»¹Óкܳ¤µÄ·Ҫ×ß¡£
ÕâÀï¾Í´óÖÂ˵˵ĿǰÕâ¸öLinux²Ã¼õ·½°¸µÄ“³ûÐΔ°É¡£
¡¡¡¡1. Äں˲üõ
¶ÔLinuxÄں˲¿·ÖµÄ²Ã¼õÖ÷Òª¸ù¾Ýʵ¼ÊÐèÇó½øÐÐÁËÖØ±àÒ룬ȥµôÁ˴󲿷ÖÓò»ÉϵÄÌØÐÔ£¬ÒÔ¼°Êµ¼ÊÓ²¼þ»·¾³Ö®ÍâµÄÉ豸Çý¶¯¡£ÕâÒ»¹ý³Ìûɶ¼¼Êõº¬Á¿£¬¾Í
²»Ï¸ËµÁË¡£
2. initrd¸ÄÔì
³£¹æµÄLinuxϵͳÆô¶¯¹ý³ÌÖУ¬initrd½ö½ö³äµ±Ò»¸öÁÙʱµÄrootfs£¬ÔÚ¼ÓÔØÊµ¼ÊµÄrootfsºó¼´±»Ð¶ÔØ»ò×ªÒÆ¡£³öÓÚ¾«¼òµÄ¿¼ÂÇ£¬ÎÒ½«
Ôrootfs²¢ÈëÁËinitrd£¬ÈÃËüÖ±½Ó³äµ±rootfs£¬ÒÔ½ÚÊ¡Æô¶¯Ê±¼ä£¬²¢¼õСÌå»ý¡££¨Õâ¸ö¸ÄÔì·½°¸Ïà¶ÔÀ´Ëµ×î¼òµ¥£¬Ò²×ãÒÔÂú×ãʵ¼ÊÐèÒª£©
¸ÄÔìµÄ¹ý³ÌÖ÷ÒªÊÇ»ùÓÚÔmake install×Ô¶¯Éú³ÉµÄinitrd¾µÏñÖ®ÉÏ£¬½øÐÐÒÔÏ“ÊÖÊõ”£º
(1)
ÓÃBusyBoxµÄlinuxrcÌæ´úÔinitrdÖеijõʼ»¯½Å±¾£¬²¢½«Ôlinuxrc½Å±¾ÖÐÓÐÓõÃÉϵijõʼ»¯ÈÎÎñ¶¼ºÏ²¢ÖÁetc/inittab
ÖУ¬ÒÔ½ÚÊ¡Æô¶¯Ê±¼ä¡£
(2) ÒòΪҪ³äµ±rootfs£¬ËùÒÔ»¹ÐèΪinitrdÌí¼ÓLinuxÆô¶¯¼°ÔËÐÐËù±ØÐëµÄһЩÎļþ¼ÐºÍÎļþ£¨Ö÷Òª¸´ÖÆ×ÔÔrootfs£©£º
/dev
tty3 - tty10 Öն˻ỰÉ豸£¨ConsoleµÇ¼ʹÓã©
ttyS0¡¢ttyS1 ´®¿ÚÖÕ¶ËÉ豸£¨´®¿ÚµÇ¼ʹÓã©
ptmx¡¢pts ÐéÄâÖÕ¶ËÉ豸£¨Ô¶³ÌµÇ¼ʹÓã©
/etc
fstab ¼ÓÔØÉ豸µÄÅäÖÃÎļþ£¨ºóÃæÏêÊö£©
gettydefs ½ö±£ÁôVirtual ConsoleÒ»Ïî
group ½ö±£Áôroot¶ÔÓ¦µÄÏî
hostname °üº¬±¾»úµÄÖ÷»úÃû
inittab ³õʼ»¯½Å±¾£¨ºóÃæÏêÊö£©
issue °üº¬±¾»úµÄÈ«³ÌµÇ¼»¶ÓÎÄ×Ö
passwd ½ö±£Áôroot¶ÔÓ¦µÄÏî
shadow ½ö±£Áôroot¶ÔÓ¦µÄÏî
termcap ½ö±£ÁôÓÃÓÚ±¾µØconsole¼°Ô¶³ÌµÇ¼µÄÅäÖÃÏî
/etc/init.d
rcS ´Î¼¶³õʼ»¯½Å±¾£¨ºóÃæÏêÊö£©
/lib
libcrypt.so.1 µÇ¼ÈÏÖ¤£¨login£©ËùÐèµÄ¿âÎļþ
/mnt
/proc
/sys
/tmp
/usr
/var
(3) ÐÞ¸Äetc/fstab´æ´¢É豸¼ÓÔØÅäÖÃÎļþ£¬Ö»°üº¬ÏÂÃæËÄÐУº
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs size=512m 0 0
devpts /dev/pts devpts defaults 0 0
ÓÉÓÚʵ¼ÊÓ²¼þ»·¾³µÄÄÚ´æ±È½Ï´ó£¬ËùÒÔ¸øÁÙʱÎļþϵͳ·ÖÅäµÄÄ
Ïà¹ØÎĵµ£º
------linuxÉ豸Çý¶¯³ÌÐòµÄ¼ò½é
֮ǰֻÊÇ×öÏîÄ¿µÄʱºòÓùýÒ»¶Îʱ¼älinux£¬¶ÔlinuxÆäʵ²»ÔõôÊìϤ£¬µ«ÊÇ´óÖµIJÙ×÷£¬±à³ÌµÄ·½·¨£¬¹¤¾ß(eclipse, gcc)·½Ã滹ÊÇÉÔ΢¶®Ò»µãµÄ£¬¶ÔÓÚÎÒÀ´Ëµ£¬Ò»Ö±Ê¹ÓõÄÊÇCÓïÑÔ£¨¶àÊýǶÈëʽϵͳ¿ª·¢Ê¹Óã©£¬Ò»Ö±Ï뻨µãʱ¼äÀ´ºÃºÃµÄѧϰһÏÂlinuxϵÄÇý¶¯¿ª·¢£¬ÕýºÃÕâ¶Îʱ¼äÒ»Ö±ÔÚ´ýÒµ½×¶Î£¬¾ÍºÃº ......
tar ʹÓõÄÑ¡ÏîÓУº
-c — ´´½¨Ò»¸öй鵵¡£
-f — µ±Óë -c Ñ¡ÏîÒ»ÆðʹÓÃʱ£¬´´½¨µÄ tar ÎļþʹÓøÃÑ¡ÏîÖ¸¶¨µÄÎļþÃû£»µ±Óë -x Ñ¡Ïî
Ò»ÆðʹÓÃʱ£¬Ôò½â³ý¸ÃÑ¡ÏîÖ¸¶¨µÄ¹éµµ¡£
-t — ÏÔʾ°üÀ¨ÔÚ tar ÎļþÖ ......
³ÉΪһÃû¾«Í¨ Linux ³ÌÐòÉè¼ÆµÄ¸ß¼¶³ÌÐòÔ±Ò»Ö±ÊDz»ÉÙÅóÓÑ×Î×ÎÒÔÇóµÄÄ¿±ê¡£¸ù¾ÝÖлªÓ¢²ÅÍøÍ³¼ÆÊý¾Ý£¬±±¾©µØÇø Linux ³ÌÐòÔ±ÔÂнƽ¾ùΪ Windows ³ÌÐòÔ±µÄ 1.8 ±¶¡¢Java ³ÌÐòÔ±µÄ 2.6 ±¶£¬ Linux ³ÌÐòÔ±ÄêÖÕ½±½ðƽ¾ùΪ Windows ³ÌÐòÔ±µÄ 2.9 ±¶¡£Í¬Ê±Êý¾ÝÏÔʾ£¬Ëæ×ʤ×÷¾ÑéµÄÔö³¤£¬ Linux ³ÌÐòÔ±Óë Windows ³ÌÐòÔ±µÄÊÕÈë²î¾à» ......
1¡¢Ê¹ÓÃGTKÖеÄGdkEvent
GdkEvent *event;
event = gdk_event_new (GDK_KEY_PRESS); //°´¼ü°´ÏÂ
event->key.send_event = TRUE;
event->key.keyva ......