Linux ÐéÄâÎļþϵͳ¸Å¹Û
×÷Õß Richard Gooch <rgooch@atnf.cs.iro.au>
·Òë albcamus <albcamus@gmail.com>
×îºó¸üÐÂ:2007 Äê 6 Ô 24 ÈÕ
°æÈ¨:1999, Richard Gooch
°æÈ¨:2005, Pekka Enberg
±¾ÎļþÒÔ GPLv2 Ðí¿É·¢·Å
[·Òë˵Ã÷:Richard Gooch µÄÕâ·Ý Overview of the Linux Virtual File System λÓÚÄÚºË
Ô´´úÂëµÄ Documentation/filesystems/ÏÂ, ÎļþÃûÊÇ vfs.txt¡£ ¸ÃÎĵµÔÚ Understanding
the Linux Kernel Öб»ÍƼö, ÎÒÊÇ´Ó 2.6.16 ¹Ù·½ÄÚºËÖп½±´³öÀ´·ÒëµÄ¡£ ×Ô¼ºÖªµÀˮƽ
²î, Àí½âºÍ±í´ï¶¼²»µ½Î», ËùÒÔ»¹Êǽ¨Òé¿´ÔÎÄ:( ]
½éÉÜ
====
ÐéÄâÎļþϵͳ(Ò²±»³Æ×öÐéÄâÎļþϵͳÇл»)ÊÇÄÚºËÖÐΪӦÓóÌÐòÌṩÎļþϵͳ½Ó¿ÚµÄÒ»¸öÈí¼þ²ã¡£
ͬʱ, ËüҲΪ²»Í¬µÄÎļþϵͳ¹²´æ, ÌṩÁËÒ»ÖÖ³éÏó¡£
open(2),stat(2),read(2),write(2),chmod(2)µÈVFSϵͳµ÷ÓÃ, ÊÇÔÚ½ø³ÌÉÏÏÂÎÄÖб»
µ÷Óõġ£ ÎļþËøµÄÃèÊöÔÚ Documnetation/filesystems/LockingÖС£
Ŀ¼Ï´æ(dcache)
-----------------
VFSʵÏÖÁËÖîÈç open(2),stat(2),chmod(2)µÈϵͳµ÷Óᣠ·¾¶Ãû×÷Ϊ²ÎÊý´«µÝ¸øÕâЩϵͳ
µ÷ÓÃ, È»ºóVFSʹÓ÷¾¶Ãû, ÔÚ ......
1. ²é¿´Äں˰汾ÃüÁ
¡¡¡¡1) [root@q1test01 ~]# cat /proc/version
¡¡¡¡ Linux version 2.6.9-22.ELsmp (bhcompile@crowe.devel.redhat.com) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Mon Sep 19 18:00:54 EDT 2005
¡¡¡¡2) [root@q1test01 ~]# uname -a
¡¡¡¡Linux q1test01 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:00:54 EDT 2005 x86_64 x86_64 x86_64 GNU/Linux
¡¡¡¡3) [root@q1test01 ~]# uname -r
¡¡¡¡2.6.9-22.ELsmp
2.²é¿´linuxµÄ°æ±¾Ö÷ÒªÓÐÈýÖÖ·½·¨£º
1) µÇ¼µ½·þÎñÆ÷Ö´ÐÐ lsb_release -a £¬¼´¿ÉÁгöËùÓа汾ÐÅÏ¢£¬ÀýÈ磺
[root@3.5.5Biz-46 ~]# lsb_release -a
LSB Version: 1.3
Distributor ID: RedHatEnterpriseAS
Description: Red Hat Enterprise Linux AS release 4 (Nahant Update 1)
Release: 4
Codename: NahantUpdate1
[root@3.5.5Biz-46 ~]#
Õâ¸öÃüÁîÊÊÓÃÓÚËùÓеÄlinux£¬°üÀ¨Redhat¡¢SuSE¡¢DebianµÈ·¢Ðа档
2) µÇ¼µ½linuxÖ´ÐÐcat /etc/redhat-release £¬ÀýÈçÈçÏ£º
[root@3.5.5Biz-46 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux AS relea ......
»·¾³½éÉÜ£ºCentos5.2+2.6.18-8.el5Äںˣ¬±àÒëÆ÷ÊÇGCC4.1.2¡£
Òª±àÒëµÄÄÚºË2.6.18-8.el3
½ö½öÐÞ¸ÄÁ˲¿·ÖÄں˵ÄÅäÖÃÐÅÏ¢£¬Ã»ÓдóµÄ±ä»¯¡£
È»ºó£ºmake ;make modules;make modules_install;
±àÒëûÓгöÎÊÌ⣬Éú³ÉÁËÄںˣ¬mkinitrdÉú³ÉÁËinitrd£¬¼Óµ½lilo.confÖУ¬ÖØÆôÑ¡ÔñÐÂÄںˣ¬³öÏÖÒ»ÏÂÎÊÌ⣺
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 2 ports detected
Scanning and configuring dmraid supported devices
Trying to resume from LABEL=SWAP-hdc4
No suspend signature on swap, not resuming.
Creating root device.
Mounting root filesystem.
mount: could notKernel panic - not syncing: Attempted to kill init!
find filesystem '/dev/root'
Setting up other filesystems.
Setting up new root fs
setuproot: moving /dev failed: No such file or directory
no fstab.sys, mounting internal defaults
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
Switching to new root and running init.
unmounting old /dev
unmounting old /proc
unmounting o ......
ת×Ô£º http://www.diybl.com/course/6_system/linux/Linuxxl/20081124/152557.html
ºÃºÃѧϰ£¬ÌìÌìÏòÉÏ
ÒýÑÔ
¡¡¡¡ Ị̈߳¨thread£©¼¼ÊõÔçÔÚ60Äê´ú¾Í±»Ìá³ö£¬µ«ÕæÕýÓ¦ÓöàÏ̵߳½²Ù×÷ϵͳÖÐÈ¥£¬ÊÇÔÚ80Äê´úÖÐÆÚ£¬ solarisÊÇÕâ·½ÃæµÄٮٮÕß¡£´«Í³µÄUnixÒ²Ö§³ÖÏ̵߳ĸÅÄµ«ÊÇÔÚÒ»¸ö½ø³Ì£¨process£©ÖÐÖ»ÔÊÐíÓÐÒ»¸öỊ̈߳¬ÕâÑù¶àÏ߳̾ÍÒâζ×Å¶à½ø³Ì¡£ÏÖÔÚ£¬¶àÏ̼߳¼ÊõÒѾ±»Ðí¶à²Ù×÷ϵͳËùÖ§³Ö£¬°üÀ¨Windows/NT£¬µ±È»£¬Ò²°üÀ¨Linux¡£
¡¡¡¡ ΪʲôÓÐÁ˽ø³ÌµÄ¸ÅÄîºó£¬»¹ÒªÔÙÒýÈëÏß³ÌÄØ£¿Ê¹ÓöàÏ̵߳½µ×ÓÐÄÄЩºÃ´¦£¿Ê²Ã´µÄϵͳӦ¸ÃÑ¡ÓöàỊ̈߳¿ÎÒÃÇÊ×ÏȱØÐë»Ø´ðÕâЩÎÊÌâ¡£
¡¡¡¡ ʹÓöàÏ̵߳ÄÀíÓÉÖ®Ò»ÊǺͽø³ÌÏà±È£¬ËüÊÇÒ»Öַdz£"½Ú¼ó"µÄ¶àÈÎÎñ²Ù×÷·½Ê½
¡£ÎÒÃÇÖªµÀ£¬ÔÚLinuxϵͳÏ£¬Æô¶¯Ò»¸öеĽø³Ì±ØÐë·ÖÅ䏸Ëü¶ÀÁ¢µÄµØÖ·¿Õ¼ä£¬½¨Á¢ÖÚ¶àµÄÊý¾Ý±íÀ´Î¬»¤ËüµÄ´úÂë¶Î¡¢¶ÑÕ»¶ÎºÍÊý¾Ý¶Î£¬ÕâÊÇÒ»ÖÖ"°º¹ó"µÄ¶àÈÎÎñ¹¤×÷·½Ê½¡£¶øÔËÐÐÓÚÒ»¸ö½ø³ÌÖеĶà¸öỊ̈߳¬ËüÃDZ˴ËÖ®¼äʹÓÃÏàͬµÄµØÖ·¿Õ¼ä£¬¹²Ïí´ó²¿·ÖÊý¾Ý£¬Æô¶¯Ò»¸öÏß³ÌËù»¨·ÑµÄ¿Õ¼äԶԶСÓÚÆô¶¯Ò»¸ö½ø³ÌËù»¨·ÑµÄ¿Õ¼ä£¬¶øÇÒ£¬Ï̼߳ä±Ë´ËÇл»ËùÐèµÄʱ¼äҲԶԶСÓÚ½ø³Ì¼äÇл»ËùÐèÒªµÄʱ¼ä¡£
¡¡¡¡ ʹÓöàÏ̵߳ÄÀíÓÉÖ ......
´ÓUbuntu 8.04µ½9.10£¬ÎÒµÄAcer Aspire 4920±¾×ÓµÄýÌå´¥Ãþ¿ØÖƼüʼÖÕ²»ÄÜÕý³£¹¤×÷¡£×î½üÕÒµ½ÁË´ËÎÊÌâµÄ½â¾ö·½·¨£¬¹©Ê¹ÓÃLinux²Ù×÷ϵͳ¼°ÓµÓÐAcer±Ê¼Ç±¾µÄÓû§²Î¿¼¡£ ÔÚUbuntu 9.10Ï£¬ÎÒµÄýÌå¿ØÖÆ¼ü±»Ê¶±ðΪÁíÒ»¿éSynaptics´¥Ãþ°å£¬²¢ÇÒËĸö¼ü·Ö±ð±»Ê¶±ðΪÉÏ¡¢Ï¡¢×ó¡¢ÓÒ·Ò³¼ü£¬µ¼ÖÂÎÞ·¨Õý³£¹¤×÷¡£ÐèҪͨ¹ýÐ޸İ´¼üÓ³ÉäʵÏÖ¡£ 1¡¢°²×°xbindkeysºÍxvkbd sudo apt-get install xbindkeys xvkbd xbindkeysÓÃÀ´½«°´Å¥Óë¼üÅ̰´¼ü°ó¶¨£¬xvkbdÓÃÀ´Ä£ÄâýÌå¿ØÖÆ¼ü¶¯×÷¡£ 2¡¢²éÕÒ´¥Ãþ°å°´Å¥¶ÔÓ¦µÄDevice ID cat /proc/bus/input/devices ÆäÖÐÁгöÁËËùÓÐÊäÈëÉ豸µÄÐÅÏ¢¡£ÎҵĻúÆ÷ÐÅÏ¢ÈçÏ£º I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=LNXPWRBN/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
U: Uniq=
H: Handlers=kbd event0
B: EV=3
B: KEY=100000 0 0 0
¡¡
I: Bus=0011 Vendor=0002 Product=0007 Version=81b1
N: Name="SynPS/2 Synaptics TouchPad"
P: Phys=isa0060/serio2/input ......
ÏÖ´úLinux²ÉÓÃELF×öΪÆä¿ÉÁ¬½ÓºÍ¿ÉÖ´ÐÐÎļþµÄ¸ñʽ£¬Òò´ËELF¸ñʽҲÏòÎÒÃÇ͸³öÁËÒ»µãLinuxºËÄÚµÄÇé¾°£¬¾ÍÏñϷ̨άĻÁôϵÄÒ»ÌõδÀÑϵķ졣PCÊÀ½ç32ÈÔÊÇÖ÷Á÷£¬µ«64λµÄ½Å²½È´ÒÑÈç´ËµÄ±Æ½ü¡£±¾ÎÄ×ÅÖØ½²Êö32λELFµÄͬʱ¸½´øÁË64λµÄÐÅÏ¢£¬ÕâÁ½ÖÖ¸ñʽÈç´ËÀ×ͬ£¬ÒÔÖÂÓÚ³õ´Î½Ó´¥ELFµÄ¶ÁÕß²»±Ø¼æ¹Ë×óÓÒ¡£Èç¹ûÄã¶ÔWindows±È½ÏÊìϤ£¬±¾ÎÄ»¹½«Ê±Ê±°ÑÄã´ø»Øµ½PEÖУ¬ÔÚËüÃǵÄÏàËÆÖ®´¦ÉÔ×ö±È½Ï¡£ELFÎļþÒÔ“ELFÍ·”¿ªÊ¼£¬ºóÃæ¿ÉÑ¡ÔñµÄ¸úËæ×ųÌÐòÍ·ºÍ½ÚÍ·¡£µØÀíѧÓõȸßÏßÓëµÈÎÂÏß·Ö±ðչʾͬһµØÇøµÄµØÊÆºÍÆøºò£¬³ÌÐòÍ·ºÍ½ÚÍ·Ôò·Ö±ð´Ó¼ÓÔØÓëÁ¬½Ó½Ç¶ÈÀ´ÃèÊöEFLÎļþµÄ×éÖ¯·½Ê½¡£ÏÂÃæÎÒÃǽøÈëÕýÎÄ¡£
Ò»¡¢ELFÍ·
ELFÍ·Ò²½ÐELFÎļþÍ·£¬ËüλÓÚÎļþÖÐ×ʼµÄµØ·½¡£ÎÒÓÃϵͳµÄÊÇFedora Core 2£¬ËüÔÚelf.hÎļþÖÐͬʱ¸ø³öÁËELFÍ·ÔÚ32λϵͳºÍ64λϵͳϵĽṹ£¬ÎÒÃÇÏÈÀ´¿´Ò»Ï£º
typedef struct
{
unsigned char e_ident[EI_NIDENT];
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf3 ......