ʹÓÃBusyBoxÖÆ×÷linux¸ùÎļþϵͳ
ʹÓÃBusyBoxÖÆ×÷linux¸ùÎļþϵͳ£¨CramFS+mdev£©
²Ù×÷ϵͳ£ºUbuntu9.04
Äں˰汾£ºlinux-2.6.24.7
¿ª·¢°å£º²©´´arm2410s
½»²æ±àÒ빤¾ß£ºarm-linux-gcc-4.1.1
BusyBox£ºbusybox-1.11.1
CramFS£ºCramFS-1.1
×¢Ò⣺ÓÉÓÚÒªÖÆ×÷µÄ¸ùÎļþϵͳʹÓÃÁËmdev(BusyBox¼ò»¯°æµÄudev£©£¬Òò´Ë£¬ÐèÒªÄÚºËÖ§³Ösysfs¡¢procfsºÍramfs£¨tmpfs£©ÎļþϵͳÒÔ¼°hotplug£¨uevent£©Ê¼þ»úÖÆ¡£
dzÀ¶É«ÎªÃüÁéÙºìɫΪ´úÂëºÍ½Å²½
1¡¢×¼±¸¸ùÎļþϵͳ
ʹÓÃshell½Å±¾create_rootfs.sh£¬½¨Á¢¸ùÎļþϵͳµÄĿ¼¿ò¼Ü
lingd@ubuntu:~/arm2410s$ vi create_rootfs.sh
create_rootfs.shÄÚÈÝÈçÏ£º
#!/bin/sh
echo "------Create rootfs directons......"
mkdir rootfs
cd rootfs
echo "--------Create root,dev......"
mkdir root dev etc bin sbin mnt sys proc lib home tmp var usr
mkdir usr/sbin usr/bin usr/lib usr/modules
mkdir mnt/usb mnt/nfs mnt/etc mnt/etc/init.d
mkdir lib/modules
chmod 1777 tmp
cd ..
echo "-------make direction done---------"
Ϊcreate_rootfs.shÌí¼ÓÖ´ÐÐȨÏÞ
lingd@ubuntu:~/arm2410s$ chmod a+x create_rootfs.sh
Ö´ÐÐcreate_rootfs.sh£¬½¨Á¢¸ùÎļþϵͳµÄĿ¼¿ò¼Ü
lingd@ubuntu:~/arm2410s$ ./create_rootfs.sh
lingd@ubuntu:~/arm2410s$ cd rootfs
lingd@ubuntu:~/arm2410s/rootfs$ ls
bin dev etc home lib mnt proc root sbin sys tmp usr var
2¡¢´´½¨É豸Îļþ
mdev ÊÇͨ¹ý init ½ø³ÌÀ´Æô¶¯µÄ£¬ÔÚʹÓà mdev ¹¹Ôì /dev Ŀ¼֮ǰ£¬init ÖÁÉÙÒªÓõ½É豸Îļþ/dev/console¡¢ /dev/null £¬ËùÒÔÐèÒªÊÂÏȽ¨Á¢ÕâÁ½¸öÉ豸Îļþ:
lingd@ubuntu:~/arm2410s/rootfs$ cd dev
lingd@ubuntu:~/arm2410s/rootfs/dev$ sudo mknod -m 660 console c 204 64
[sudo] password for lingd:
lingd@ubuntu:~/arm2410s/rootfs/dev$ sudo mknod -m 660 null c 1 3
lingd@ubuntu:~/arm2410s/rootfs/dev$ ls -l
total 0
crw-rw---- 1 root root 5, 1 2010-04-02 15:49 console
crw-rw---- 1 root root 1, 3 2010-04-02 15:50 null
×¢Ò⣺±¾À´consoleµÄÖ÷´ÎÉ豸ºÅӦΪ5ºÍ1.µ«ÊÇÒòΪinitÔÚÖ´ÐÐÍê/etc/init.d/rcS½Å±¾ºó£¬¾Í»áÔÚÒ»¸ö¿ØÖÆÌ¨ÉÏ£¬°´ÕÕini
Ïà¹ØÎĵµ£º
wait(µÈ´ý×Ó½ø³ÌÖжϻò½áÊø)
±íÍ·Îļþ
#include<sys/types.h>
#include<sys/wait.h>
¶¨Ò庯Êý pid_t wait (int * status);
º¯Êý˵Ã÷
wait()»áÔÝʱֹͣĿǰ½ø³ÌµÄÖ´ÐÐ,Ö±µ½ÓÐÐźÅÀ´µ½»ò×Ó½ø³Ì½á
Êø¡£È ......
List_Head
²Ù×÷ϵͳÄں˾³£ÐèҪά»¤Êý¾Ý½á¹¹¡£ÄÚºËÓбê×¼µÄÑ»·Á´±í¡¢Ë«ÏòÁ´±íµÄʵÏÖ¡£ÔÚ<Linux/list.h>ÎļþÖж¨ÒåÁËÒ»¸ölist_headÀàÐͼòµ¥½á¹¹£º
struct list_head {
struct list_head *next, *prev;
};
ͨÓÃÁ´±íµÄ³£ÓÃÓÃ;Êǽ«Ä³Ò»¸öÊý¾Ý½á¹¹±¾Éí´®³ÉÁ´±í£¬»ò½«Ä³Ð©Á´±íÓëÒ»¸öÊý¾Ý½á¹ ......
linux Îļþϵͳ½á¹¹
/ ¸ùĿ¼
/bin ³£ÓõÄÃüÁî binary file µÄĿ¼
/boot ´æ·ÅϵͳÆô¶¯Ê±±ØÐë¶ÁÈ¡µÄµµ°¸£¬°üÀ¨ºËÐÄ (kernel) ......
Ŀ ¼
Çý¶¯
I/O¶Ë¿Ú
from smth
»ù±¾½á¹¹
Çý¶¯³ÌÐò
¾ßÌåʵÏÖ
PCI
loopback
Sis 900
ISA×ÜÏßDMAµÄʵÏÖ
Çý¶¯
Linuxϵͳ֧³ÖÈýÖÖÀàÐ͵ÄÓ²¼þÉ豸£º×Ö·ûÉ豸¡¢¿éÉè
< type="text/javascript">< type="text/jav ......
http://www.linuxjournal.com/
Linux Kernel Newbies
Ò»·½ÊʺÏÄں˿ª·¢³õ¼¶ºÚ¿ÍµÄÀÖÍÁ——¸ÃÍøÕ¾¼¸ºõÄܹ»Âú×ãËùÓÐÄ¥µ¶»ô»ôÏòÄں˵ÄÐÂÊÖµÄÐèÇó¡£
http://kernelnewbies.org/
http://vger.kernel.org/
Á˽âÈçºÎʹÓÃlinuxÄÚºËÁбí
http://www.tux.org/lkml/
Linux
ÐÂÎÅÖÜ¿¯£¬ËüÓÐÒ»¸ö×¨Çø±¨µÀÓйØÄں˵ÄÖØÒª ......