ʹÓÃbusybox×öÒ»¸öСÇɵÄlinux²Ù×÷ϵͳ
1.»ù´¡ÖªÊ¶
Ò»¸ö²Ù×÷ϵͳ¿ÉÒÔ¼òµ¥µÄ³éÏóΪ£¬Òýµ¼³ÌÐò ÄÚºË Îļþϵͳ¡£
vmlinuzÊÇLinux Äں˵ľµÏñÎļþ,¿ÉÒÔ±»Òýµ¼³ÌÐò¼ÓÔØ,´Ó¶øÆô¶¯Linuxϵͳ¡£
initrdµÄÈ«³ÆÊÇboot loader initialized RAM disk£¬ËüÊÇϵͳÆô¶¯Ê±ËùʹÓõĸùÎļþϵͳӳÏñÎļþ£¬Õâ¸öÎļþϵͳÖаüº¬¼¸¸öÇý¶¯Ä£¿é£¬ÓÃÀ´×°ÔØÊµ¼ÊµÄ¸ùÎļþϵͳ£¬±ÈÈçÒ»¸öIDE»òSCSIÓ²Å̵ÄÇý¶¯Ä£¿é£¬ÄÚºË×°ÈëÕâ¸öÄ£¿éÖ®ºóÓÃËüÀ´Çý¶¯Ó²ÅÌ£¬¹Ò½ÓÓ²Å̵½ramdiskµÄij¸ö×ÓĿ¼£¬È»ºóÔÙÓÃÆäÖеÄpivot_rootÃüÁ½«Ó²ÅÌÎļþϵͳ±ä³É¸ùÎļþϵͳ£¬²¢¿ªÊ¼Ö´ÐÐinit½ø³Ì£¬´Ëʱinit ram disk±»umount£¬ÊÙÖÕÕýÇÞ¡£
Óɴ˿ɼû£¬ÎÒÃÇ¿ÉÒÔÓÃvmlinuz initrd.img×öÒ»¸öÎļþϵͬ³¤×¤ÄÚ´æµÄÃÔÄãLinux¡£
ÏÖÔÚ½øÈëÕýÌâÁË£º
2.±àÒëÄÚºË
cd /usr/src/....----½øÈëÄÚºËÔ´´úÂëĿ¼£¬Ã»ÓеĻ°È¥¹Ù·½ÍøÕ¾£¬Ëæ±ãÏÂ
make menuconfig-----ÅäÖñàÒëÑ¡ÏîÇë×¢ÒâÒ»¶¨¼ÓÈëRAM disk support ºÍinitial RAM disk
(initrd) support µÄÖ§³Ö(ÔÚblock deviceÖÐ)¡£ÁíÍâ×îºÃ½«ext3Îļþϵͳ±àÈëÄںˣ¬²»Òª±à³ÉÄ£¿é¡£ÅäÖÃÍê±Ïºó±£´æÎª.config(ĬÈÏ)
make bzImage----±àÒë
ÔÚÐí¶àÄں˱àÒë²Î¿¼Öл¹ÓÐ
make modules
make modules_installÁ½²½
µ«ÎÒÃÇÕâÀïûÓмÓÈë¶ÔmodulesµÄÖ§³Ö£¬ËùÒÔ²»ÐèÒª¡£Éú³ÉµÄbzImageÎļþÔÚusr/src/linux/arch/.../bootÖУ¬Ê¡ÂԵĸù¾ÝÄãµÄ»úÆ÷¼Ü¹¹¾ö¶¨£¬make¹ý³ÌÖлáÓÐÌáʾ£¬±ÈÈçÎÒµÄÊÇx86_64. ×¢ÒâÕâ¸öÎļþ·Ç³£ÖØÒª£¬Æäʵ¾ÍÊÇÎÒÃÇ×îÖÕµÄvmlinuz.
3.busybox
busyboxÊÇÒ»¸ö¼¯³ÉÁËÒ»°Ù¶à¸ö×î³£ÓÃlinuxÃüÁîºÍ¹¤¾ßµÄÈí¼þ,ËüÉõÖÁ»¹¼¯³ÉÁËÒ»¸öhttp·þÎñÆ÷ºÍÒ»¸ötelnet·þÎñÆ÷,¶øËùÓÐÕâÒ»Çй¦ÄÜÈ´Ö»ÓÐÇøÇø1M×óÓҵĴóС.ÎÒÃÇÆ½Ê±ÓõÄÄÇЩlinuxÃüÁî¾ÍºÃ±ÈÊÇ·ÖÁ¦Ê½µÄµç×ÓÔª¼þ,¶øbusybox¾ÍºÃ±ÈÊÇÒ»¸ö¼¯³Éµç·,°Ñ³£ÓõŤ¾ßºÍÃüÁ³ÉѹËõÔÚÒ»¸ö¿ÉÖ´ÐÐÎļþÀï,¹¦ÄÜ»ù±¾²»±ä,¶ø´óСȴСºÜ¶à±¶,ÔÚǶÈëʽlinuxÓ¦ÓÃÖÐ,busyboxÓзdz£¹ãµÄÓ¦ÓÃ,ÁíÍâ,´ó¶àÊýlinux·¢ÐаæµÄ°²×°³ÌÐòÖж¼ÓÐbusyboxµÄÉíÓ°,°²×°linuxµÄʱºò°¸ctrl alt F2¾ÍÄܵõ½Ò»¸ö¿ØÖÆÌ¨,¶øÕâ¸ö¿ØÖÆÌ¨ÖеÄËùÓÐÃüÁî¶¼ÊÇÖ¸ÏòbusyboxµÄÁ´½Ó.ÔÚÎÒÃǵÄÃÔÄãLinuxÖУ¬ÐèÒªµÄÒ²ÕýÊÇbusyboxµÄÃüÁîºÍ¹¤¾ß¡£
ÏÂÔØ http://busybox.net/downloads/
ʹÓùý³ÌÖÐÐí¶à¸ß°æ±¾¶¼³öÏÖ±àÒë´íÎó£¬ËùÒÔÓÃÁËÒ»¸ö×îÔʼµÄ°æ±¾busybox-1.00
#cp busybox-1.00.tar.gz /tmp/bunny
#cd /tmp/bunny
#tar xvfz busybox-1.00.tar.gz
#cd busybox-1.00
#make menuconfig ----±àÒëÅäÖÃ
ÏÂÃæÊÇÐèÒª±àÒë½øbusyboxµÄ¹
Ïà¹ØÎĵµ£º
Æô¶¯ÅäÖãº
/etc/init.d/rcS
# mkfs.jffs2 -r yyfs/ -o yy.jffs2 -p -l -n -e 0x8000 -m size
ÄÚºËÆô¶¯ÏÔʾ£º
unable to open an initial console.
½â¾ö£º
´´½¨rootfs¹ý³ÌÖУ¬ÔÚ/devĿ¼ÏÂÊÖ¶¯´´½¨ÈçϽڵ㣺
mknod -m 660 null c 1 3
mknod -m 660 console c 5 1
Taking the GNU/Linux hos ......
ShellµÄI/OÓï·¨ÄÑÒÔÀí½â£¬¸üÄÑÒÔÕýȷʹÓá£ShellµÄÊäÈëÊä³öÓï·¨ÓÐÁ½¸öÄÑµã£ºÖØ¶¨ÏòºÍÎļþÃèÊö·û¡£ÎÒÒÔǰ¶ÔShell I/OµÄÀí½âÒ²ÓдíÎó¡£×î½üÖØÐÂÕûÀí˼·£¬¾ö¶¨Ð´Ò»ÆªÎÄÕÂÀ´×ܽáI/OÖØ¶¨Ïò¡£
ÏȽéÉܼ¸¸ö»ù±¾¸ÅÄî:
1£©Îļþ(File)£ºÔÚUnix/LinuxÖУ¬ÎļþÀàÐÍÓÐÆ ......
/boot:ÕâÀï´æ·ÅµÄÊÇÆô¶¯LINUXʱʹÓõÄһЩºËÐÄÎļþ¡£
/dev:devÊÇdevice(É豸)µÄËõд¡£Õâ¸öĿ¼ÏÂÊÇËùÓÐLINUXµÄÍⲿÉ豸£¬Æä¹¦ÄÜÀàËÆDOSϵÄ.sysºÍWinϵÄ.vxd¡£ÔÚLINUXÖÐÉ豸ºÍÎļþÊÇÓÃͬÖÖ·½·¨·ÃÎʵġ£ÀýÈç:/dev/hda´ú±íµÚÒ»¸öÎïÀíIDEÓ²ÅÌ¡£
/etc:Õâ¸öĿ¼ÓÃÀ´´æ·ÅËùÓеÄϵͳ¹ÜÀíËùÐèÒªµÄÅäÖÃÎļþºÍ×ÓĿ¼¡£
/bin:bin ......
Ïà¹Øº¯Êý
fork£¬execve£¬waitpid£¬popen
±íÍ·Îļþ
££i nclude<stdlib.h>
¶¨Ò庯Êý
int system(const char * string);
º¯Êý˵Ã÷
system()
»áµ÷ÓÃfork()²úÉú×Ó½ø³Ì£¬ÓÉ×Ó½ø³ÌÀ´µ÷ÓÃ/bin/sh-c
stringÀ´Ö´ÐвÎÊýstring×Ö·û´®Ëù´ú±íµÄÃüÁ´ËÃü>ÁîÖ´ÐÐÍêºóËæ¼´·µ»ØÔµ÷ÓõĽø³Ì¡£ÔÚµ÷ÓÃsystem()ÆÚ¼äSIGCHLD ......