©®linuxÉçÇø©® °®ÐÄÔ®Öú ©® LinuxÈÏÖ¤©®ÏµÁÐ½Ì³Ì ©® Òµ½ç¶¯Ì¬©® Õ¾ÎñÐÂÎÅ ©® ¹«Ë¾ÕÐÆ¸©® ½¨ÒéÁôÑÔ ©® ÍøÖ·´óÈ« ©®LPIרÌâ©® CISCOרÌâ
ÉèΪÊ×Ò³
¼ÓÈëÊÕ²Ø
¹ÜÀíÍŶÓ
JSP  
JAVA  
PERL  
 ÄúµÄλÖãºÊ×Ò³ > article > unix > unixÌá¸ß >
À¸Ä¿µ¼À¸
×ÊÁÏËÑË÷
ÈÈÃÅÎÄÕÂ
¡¤20%µÄSOLARIS֪ʶ½â¾ö80%µÄÎÊÌâ
¡¤SolarisÆô¶¯¹ý³ÌÏê½â zt
¡¤²é¿´SolarisϵͳӲ¼þÅäÖõÄÃüÁî
¡¤UnixϵÁÐshell³ÌÐò±àд(ÖÐ)
¡¤STRUTS Ô´Âëѧϰ±Ê¼Ç
¡¤SOLARIS¼¼ÇÉÆª
¡¤snortÔ´Âë·ÖÎö
¡¤UnixϵÁÐshell³ÌÐò±àд(ÏÂ)
¡¤ÔÚsolaris 10/x86ϰ²×°oracle
¡¤solaris 10 Ó²Å̰²×°
¡¤Solaris°²È«ÅäÖÃÊÖ²á
¡¤ApacheÔ´´úÂë·ÖÎö¡ª¡ª¹ØÓÚÄ£¿é
¡¤HP-UX»ù±¾Ö¸Áî¿ìËٲο¼
¡¤ Tomcat ServerÔ´ÂëÆô¶¯·ÖÎö
¡¤Solaris8 Ë«Íø¿¨ÅäÖã¨Â·ÓÉÆ÷ÓÃ
×îÐÂÎÄÕÂ
¡¤solarisϵͳ°²È«ÅäÖÃ
¡¤RHEL5.0²Ù×÷ϵͳÏÂNFS·þÎñµÄÅä
¡¤Solaris Linux 9ÏÂVsftpdµÄÅäÖÃ
¡¤ÔÚHP-UXϽ¨Á¢Ö»¹éÊôÓÚij¸öĿ¼
¡¤SolarWinds2002ʹÓÃ˵Ã÷
¡¤´ÓÍⲿ´æ´¢»®Å̲¢¼ÓÈëvg,ΪfsÀ©
¡¤Òò´ø¿âÎÊÌâµ¼ÖÂϵͳ¹âÏË¿¨±¨´í
¡¤Unix϶àÏß³ÌÖÐÌõ¼þ±äÁ¿µÄʹÓÃ
¡¤UNIXºÍLinuxÖÐÐźŵĸöÊý
¡¤²»Í¬µÄÀàUNIX²Ù×÷ϵͳÃÜÂëÆÆ½â
¡¤AIXϵͳÏÂDominoÓʼþ·þÎñÆ÷°²×°
¡¤ÏÞÖÆROOTÓû§Ô¶³ÌµÇ½UNIXϵͳ
¡¤Unix²Ù×÷ϵͳÈëÇÖ×·×Ù·´»÷Õ½
¡¤AIX CDE²»ÄÜÆô¶¯µÄ¹ÊÕÏÒ»°ãÐÔ½â
¡¤CentOS4.4ÓÃVSFTPD¼ÜÉèFTP·þÎñ
Google
 
FreeBSDºËÐÄÈëÃÅ
[ ×÷Õß:LinuxÁªÃËÊÕ¼¯  ¼ÓÈëʱ¼ä:2006-06-14 00:46:28  À´×Ô:LinuxÁªÃËÊÕ¼¯ ]
£Í¨¹ýÕâЩ£¬¾Í¿ÉÒÔʶ±ðdevice driver¡£device ºÅ¾ÍÊÇmajorºÅ£¨8bit£©£¨Ö÷É豸 9wMLinuxÁªÃË
ºÅ£©ºÍminorºÅ£¨24bit£©£¨¸¨ÖúÉ豸ºÅ£©£¬device driverµÄʶ±ð¾ÍÊÇÓÉmajorµÄ²» 9wMLinuxÁªÃË
Ò»Ñù¶øÇø±ð¡£¶øÇÒÄØ£¬blockÐÍ£¬charÐ͵ĵȵȿÉÄÜ´æÔÚ×î´óÊýÄ¿ÊÇ256ÖÖÀà¡£Ò»°ãµÄ 9wMLinuxÁªÃË
Çé¿ö£¬Í¬ÖÖÀàµÄÉ豸²»Í¬ÊýÄ¿µÄÇø±ð¾ÍÊÇͨ¹ý¸¨ÖúÉ豸ºÅ½øÐÐʶ±ð¡£Êµ¼ÊÉÏ£¬¶ÔÓÚ 9wMLinuxÁªÃË
diskµÄÌØÊâÎļþ£¬ÓÐdisk/slide/partition±íʾ·¨£¬¶øÇÒ£¬ÎÄ×ÖÐÍ£¬¿éÐ͵ȵÄÌØÊâ 9wMLinuxÁªÃË
É豸ÎļþÒ²´æÔÚ¡£ÒÔϾÍÊÇÒ»¸öideÓ²Å̵ĵÄÎÄ×ÖÐÍÌØÊâÉ豸ÎļþµÄÀý×Ó£º 9wMLinuxÁªÃË
/dev/rwd0 1̨ideµÄÓ²ÅÌ 9wMLinuxÁªÃË
/dev/rwd0s1 1̨ideµÄÓ²Å̵Äslide #1 9wMLinuxÁªÃË
/dev/rwd0s2 1̨ideµÄÓ²Å̵Äslide #2 9wMLinuxÁªÃË
/dev/rwd0s2a slide #2µÄpartition a 9wMLinuxÁªÃË
/dev/rwd0s2b slide #2µÄpartition b 9wMLinuxÁªÃË
... 9wMLinuxÁªÃË
/dev/rwd0s3 1̨µÄideµÄÓ²Å̵Äslide #3 9wMLinuxÁªÃË
9wMLinuxÁªÃË
Èç¹û°Ñrwd»»³Éwd£¬¶ÔÓ¦µÄ¾ÍÊÇblockÐ͵ÄÌØÊâÉ豸ÎļþÁË¡£ 9wMLinuxÁªÃË
¶ÔÓÚ´ÅÅÌ£¬ÓÐÈçϵÄʹÓ÷½·¨£º 9wMLinuxÁªÃË
¡£¶ÔÓÚslideµÄÎÄ×ÖÐÍÌØÊâÎļþ 9wMLinuxÁªÃË
¶Áдdisk labelʱºòʹÓã¨disklabel command£© 9wMLinuxÁªÃË
¡£¶ÔÓÚ¶ÔÓ¦µÄpartitionµÄÎÄ×ÖÐÍÌØÊâÎļþ 9wMLinuxÁªÃË
ÔÚ·ÖÇøÉϽ¨Á¢unixÎļþϵͳʱºò£¨newfs command£©,ÎļþϵͳÐÞ¸´£¬ 9wMLinuxÁªÃË
¼ì²é£¨fsck£©Ê±ºòʹÓà 9wMLinuxÁªÃË
¡£¶ÔÓÚpartitionµÄblockÐ͵ÄÌØÊâÎļþ 9wMLinuxÁªÃË
×÷ΪmountÃüÁîµÄ²ÎÊýʹÓà 9wMLinuxÁªÃË
(ÏÂÒ»½Ú½éÉÜÐéÄâÎļþϵͳºÍv-node£¬ÒªÐÝÏ¢ÁË ) 9wMLinuxÁªÃË
9wMLinuxÁªÃË
9wMLinuxÁªÃË
FreeBSDºËÐÄ̽ÌÖ.5.Çý¶¯³ÌÐòƪ 9wMLinuxÁªÃË
9wMLinuxÁªÃË
2.2 ÐéÄâÎļþϵͳºÍv-node 9wMLinuxÁªÃË
FreeBSDÔÚdiskÉϵijýÁËffsÒÔÍ⻹¿ÉÒÔ²Ù×÷¸÷ÖÖ¸÷ÑùµÄÎļþϵͳ¡£Ö÷ÒªµÄÈç 9wMLinuxÁªÃË
Ï£º 9wMLinuxÁªÃË
¡£cd9660 9wMLinuxÁªÃË
¿ÉÒÔ¶ÔISO9660ÐÎʽµÄcd-romµÄĿ¼/Îļþ¹¹ÔìµÄÎļþϵͳ½øÐÐmount£¬ 9wMLinuxÁªÃË
locateµÈĿ¼²ãµÄ²Ù×÷ 9wMLinuxÁªÃË
¡£ms-dos 9wMLinuxÁªÃË
¶Ôms-dosÎļþϵͳ½øÐÐĿ¼²ã´ÎµÄmount£¬¶¨Î»µÈ²Ù×÷ 9wMLinuxÁªÃË
¡£mfs 9wMLinuxÁªÃË
ͨ¹ýʹÓÃÐéÄâÄÚ´æ¶ÔswapÇøµÄÒ»²¿·Ö½øÐÐunixÎļþϵͳµÄ¹¹Ô죬¶¨Î» 9wMLinuxÁªÃË
×÷ΪĿ¼µÄÒ»²¿·Ö½øÐжÁд 9wMLinuxÁªÃË
¡£nfs 9wMLinuxÁªÃË
ÓÉnfs serverÌṩµÄremoteĿ¼¼¶½øÐÐmount£¬¶¨Î»µÄĿ¼²ã²Ù×÷¡£ 9wMLinuxÁªÃË
¡£null 9wMLinuxÁªÃË
¶ÔÒѾ­´æÔÚµÄĿ¼²ãµÄʹÓñðÃû 9wMLinuxÁªÃË
¡£union 9wMLinuxÁªÃË
¶ÔÒÑÓеÄĿ¼A£¨Éϲ㣩ÔÚϲãĿ¼BÉϽøÐÐÖØµþ (²»´óÀí½âÕâµÄÒâ˼ 9wMLinuxÁªÃË
£¬´ó¸ÅÊÇÔÚϲãĿ¼ÀïÃæÓÖ¼Þ½ÓÁËÉϲãĿ¼µÄÒâ˼£ºÒëÕß)¡£ÎļþÃûµÄ²é 9wMLinuxÁªÃË
ÕÒÓÉÉϲãÓÅÏȽøÐС£Ã»Óеϰ¾ÍתµÀϲ㡣Èç¹û¶ÔϲãµÄÎļþ½øÐÐд²Ù×÷ 9wMLinuxÁªÃË
£¬ËüµÄ¿½±´¾ÍÔÚÉϲãÉϽøÐС£¾ÙÀý˵Ã÷£¬×÷ҵĿ¼ÔÚÉϲ㣬µ«cd-romµÄÔ´ 9wMLinuxÁªÃË
ÔÚϲ㣬Á½¸öÄ¿Â¼ÖØµþ£¬ÄÇô±àÒësourceµÄʱºò£¬¾ÍÏ൱·½±ãÁË¡£ 9wMLinuxÁªÃË
¡£procfs 9wMLinuxÁªÃË
¶ÔÓÚ½ø³ÌºÅµÄĿ¼×÷³Émount point¡£Í¨¹ýÎļþÃû¶Ô¸÷¸öĿ¼µÄ½ø³Ì½øÐÐ 9wMLinuxÁªÃË
¿ØÖÆ¡£ 9wMLinuxÁªÃË
¡£kernfs 9wMLinuxÁªÃË
ΪÁ˶Զ¯×÷ÖеÄkernelÓйصÄÐÅÏ¢½øÐвο¼£¬¶ø×÷³ÉµÄmount point 9wMLinuxÁªÃË
¡£fdesc 9wMLinuxÁªÃË
¶ÔÓÚ¸÷¸ö½ø³Ì£¬ÓÃËüËù´ò¿ªµÄÎļþ±ú¶ÔÓ¦µÄÎļþ×÷³ÉµÄmount point 9wMLinuxÁªÃË
9wMLinuxÁªÃË
ʵ¼ÊÉÏ£¬ÔÚºËÐÄÄÚ²¿£¬ÎªÁ˶ÔËüÃǽøÐÐͳһ²Ù×÷£¬¾Í¶ÔÎļþϵͳºÍv-node 9wMLinuxÁªÃË
½øÐгéÏ󻯣¬Êµ¼ÊµÄ´¦Àí¹ý³Ì¾ÍÊǵ÷Óø÷ÀàµÄÎļþϵͳµÄÄ£¿é½øÐд¦Àí¡£
2.2.1¶ÔÐéÄâÎļþϵͳµÄ²Ù×÷ 9wMLinuxÁªÃË
¸÷¸öÎļþϵͳ¿ÉÒÔÌṩµÄ²Ù×÷µÄÒ»ÀÀÈçÏ£¬ËüÔÚstruct vfsops 9wMLinuxÁªÃË
(@sys/mount.h)ÀïÃæ¶¨Ò壺 9wMLinuxÁªÃË
¡£¶ÔÎļþϵͳ½øÐÐmountµÄ²Ù×÷ 9wMLinuxÁªÃË
¡£±¾ÎļþϵͳµÄ¿ªÊ¼¶¯×÷µÄ²Ù×÷ 9wMLinuxÁªÃË
¡£±¾ÎļþϵͳµÄumount²Ù×÷ 9wMLinuxÁªÃË
¡£±í´ïÎļþϵͳµÄ¸ùµÄv-nodeµÄ²éÕÒ²Ù×÷ 9wMLinuxÁªÃË
¡£¶ÔÒ»°ãÓû§µÄȨÏÞ¿ØÖÆ 9wMLinuxÁªÃË
¡£È¡µÃÎļþϵͳµÄ״̬ 9wMLinuxÁªÃË
¡£ÄÚ´æÄڵĹÜÀíÐÅϢдÈë½éÖÊÖÐ 9wMLinuxÁªÃË
¡£´Ói-nodeµ½v-nodeµÄÈ¡µÃ²Ù×÷ 9wMLinuxÁªÃË
¡£v-nodeºÍnfsµÄÎļþ±úµÄÏ໥±ä»»µÄ²Ù×÷ 9wMLinuxÁªÃË
¡£Îļþϵͳʵ¼ÊµÄÄ£¿éµÄ³õʼ»¯ 9wMLinuxÁªÃË
9wMLinuxÁªÃË
¶ÔÓÚÎļþϵͳ£¬¸÷¸öʵ¼ÊµÄ²Ù×÷routineÔÚvfsopsµÄÐÎʽÌṩ׼±¸¹¤×÷¡£¸÷¸öÎļþϵ 9wMLinuxÁªÃË
ͳµÄvfsops£¬ÔÚÒÔϵıíÀïµÄsource½øÐж¨Ò壺 9wMLinuxÁªÃË
9wMLinuxÁªÃË
-------------------------------------------------------------- 9wMLinuxÁªÃË
file system vfsopsµÄ¶¨Òå source 9wMLinuxÁªÃË
-------------------------------------------------------------- 9wMLinuxÁªÃË
ufs ufs_vfsops ufs/ffs/ffs_vfsops.c 9wMLinuxÁªÃË
cd9660 cd9660_vfsops isofs/cd9660/cd9660_vfsops.c 9wMLinuxÁªÃË
msdos msdosfs_vfsops msdosfs/msdosfs_vfsops.c 9wMLinuxÁªÃË
mfs mfs_vfsops ufs/mfs/mfs_vfops.c 9wMLinuxÁªÃË
nfs nfs_vfsops nfs/nfs_vfsops.c 9wMLinuxÁªÃË
null null_vfsops miscfs/nullfs/null_vfsops.c 9wMLinuxÁªÃË
nuion union_vfsops miscfs/union/union_vfsops.c 9wMLinuxÁªÃË
procfs procfs_vfsops miscfs/procfs/procfs_vfsops.c 9wMLinuxÁªÃË
kernfs kernfs_vfsops miscfs/kernfs/kernfs_vfsops.c 9wMLinuxÁªÃË
fdesc fdesc_vfsops miscfs/fdesc/fdesc_vfsops.c 9wMLinuxÁªÃË
devfs devfs_vfsops miscfs/devfs/devfs_vfsops.c 9wMLinuxÁªÃË
ext2fs ext2fs_vfsops gnu/ext2fs/ext2_vfsops.c 9wMLinuxÁªÃË
lfs lfs_vfsops ufs/lfs/lfs_vfsops.c 9wMLinuxÁªÃË
portal portal_vfsops miscfs/portal.portal_vfsops.c 9wMLinuxÁªÃË
umap umap_vfsops miscfs/umapfs/umap_vfsops.c 9wMLinuxÁªÃË
--------------------------------------------------------------- 9wMLinuxÁªÃË
ÕâЩ¾ÍÊÇÎļþϵͳµÄʵ¼ÊÄ£¿é(*_vfsops.c)£¬ÎļþϵͳÃû³Æ£¬ÎļþϵͳºÅµÈµÈ 9wMLinuxÁªÃË
ÔÚstruct vfsconf(@sys/mount.h)ÀïÃæ»ã×Ü£¬¸÷¸öÄ£¿éÀïÓúêVFS_SET()½øÈëºË 9wMLinuxÁªÃË
ÐÄ¡£ 9wMLinuxÁªÃË
¸ù¾Ýmain()(@kern/init_main.c),ÔÚkernel³õʼ»¯µÄ¹ý³ÌÖУ¬vfsinit() 9wMLinuxÁªÃË
(@kern/vfs_init.c)ÀïÃæÓÐ 9wMLinuxÁªÃË
struct vfsconf *vfsconf[MOUNT_MAXTYPE+1]; 9wMLinuxÁªÃË
struct vfsops *vfssw[MOUNT_MAXTYPE+1]; 9wMLinuxÁªÃË
¸÷ÖÖ¶«Î÷µÄÉ趨£¬ÕâЩÊÇ£¬¹ÜÀímountÐÅÏ¢µÄstruct mount(@sys/mount.h)µÄ³ÉÔ± 9wMLinuxÁªÃË
mnt_vfcºÍmnt_opÒªÖ¸¶¨Ëù¶ÔÓ¦µÄÎļþϵͳµÄvfsconf,vfssw¡£»¹ÓкêVFS_²Ù×÷Ãû 9wMLinuxÁªÃË
(struct mount *,..)À¿ÉÒÔ¸÷¸ö²Ù×÷µÄµ÷Óᣠ9wMLinuxÁªÃË
9wMLinuxÁªÃË
2.2.2¶Ôv-nodeµÄ²Ù×÷ 9wMLinuxÁªÃË
ÐéÄâÎļþϵͳ¾ÍÊÇͨ¹ý¶Ôi-nodeµÄ³éÏó»¯Ö®ºóµÄv-nodeµÄÎļþ/Ŀ¼½øÐÐio´¦Àí¡£ 9wMLinuxÁªÃË
ΪÁËÕâ¸öÄ¿µÄ£¬×÷Ϊ¶Ôv-nodeµÄÊÊÓô¦Àí£¬ÓÐ 9wMLinuxÁªÃË
¡£´Óv-nodeµ½ÎļþÃûµÄ²éÕÒ£¬·µ»Øv-node 9wMLinuxÁªÃË
¡£´ò¿ª/¹Ø±Õv-node 9wMLinuxÁªÃË
¡£¼ì²éÊÇ·ñ¿ÉÄÜ·ÃÎÊv-node 9wMLinuxÁªÃË
¡£µÃµ½-v-nodeµÄÊôÐÔ 9wMLinuxÁªÃË
¡£É趨v-nodeµÄÊôÐÔ 9wMLinuxÁªÃË
¡£¶Ôv-nodeµÄÊäÈë/Êä³ö 9wMLinuxÁªÃË
¡£À©Õ¹v-nodeµÄÓ²Á¬½ÓºÍ·ûºÅÁ¬½Ó 9wMLinuxÁªÃË
¡£¶Ôv-node½øÐÐĿ¼µÄ×÷³ÉºÍɾ³ý 9wMLinuxÁªÃË
¡£¡£¡£¡£ 9wMLinuxÁªÃË
ÓÉÕâÀ↑ʼ£¬Ò»¹²¶¨ÒåÁË41¸ö¡£ 9wMLinuxÁªÃË
v-nodeÓÉstruct vnode(@sys/vnode.h)ÀﶨÒ壬×÷ΪÀà±ðÔÚenum vtype 9wMLinuxÁªÃË
ÀïÃæ±íʾ³öÀ´£¬Ò»¹²ÊÇ9ÖÖÀà¡£Ëü°üº¬×ÅÔÚ¸÷¸öÎļþϵͳÉ϶Ը÷¸öµÄÎļþ/Ŀ¼£¨°ü 9wMLinuxÁªÃË
À¨ÌØÊ⣩Îļþ½øÐÐͳһʶ±ðµÄÐÅÏ¢¡£ÎªÁËʵÏÖÕâÑù£¬v-nodeÒ»Á¬´®µÄ²Ù×÷¾ÍÊÇÔÚ¸÷ 9wMLinuxÁªÃË
Ä£¿éÀïͨ¹ýºêVNODEOP_SET()ºÍºËÐÄͨѶ¡£ÕâЩ²Ù×÷ÃûºÍʵÏÖµÄroutineÖ»ÐèÒª±ØÒª 9wMLinuxÁªÃË
µÄ¼¸¸ö¶ÔÓ¦¡£ÔÚºËÐijõʼ»¯Àvfs_opv_init()(@kern/vfs_init.c)¾Íʹ´ÓÊý¾ÝµÃ 9wMLinuxÁªÃË
µ½µÄºÅÂëÒ»Ò»¶ÔÓ¦£¬ÊÕ¼¯ÁËroutineµÄµØÖ·µÄͬһsizeµÄÅäÁÐÔÙ½øÐÐ×éºÏ¡£¸÷¸ö 9wMLinuxÁªÃË
v-node¾ÍÒ»¸öÒ»¸öÖ¸ÏòÕâЩÅäÁС£¶Ôv-nodeµÄ²Ù×÷ÔÚvnode_if.hÀﶨÒ壺 9wMLinuxÁªÃË
ËüÒÔ 9wMLinuxÁªÃË
VOP_²Ù×÷Ãû(v-node,...) 9wMLinuxÁªÃË
µÄͳһÐÎʽ¼ÇÊö¡£ 9wMLinuxÁªÃË
9wMLinuxÁªÃË
ÏÂÃæÊǶÔv-nodeµÄ²Ù×÷µÄ¶¨Òåsource£º 9wMLinuxÁªÃË
------------------------------------------------------------------------ 9wMLinuxÁªÃË
¸÷¸öv-node²Ù×÷£¨vnodeopv£© source 9wMLinuxÁªÃË
------------------------------------------------------------------------ 9wMLinuxÁªÃË
cd9660_fifoop_opv_desc isofs/cd9660/cd9660_vnops.c 9wMLinuxÁªÃË
cd9660_specop_opv_desc isofs/cd9660/cd9660_vnops.c 9wMLinuxÁªÃË
cd9660_vnodeop_opv_desc isofs/cd9660/cd9660_vnops.c 9wMLinuxÁªÃË
dead_vnodop_opv_desc miscfs/deadfs/dead_devfs_vnops.c 9wMLinuxÁªÃË
devfs_vnodeop_desc miscfs/devfs/devfs_vnops.c 9wMLinuxÁªÃË
ext2fs_fifoop_opv_desc gnu/ext2fs/ext2fs_vnops.c 9wMLinuxÁªÃË
ext2fs_specop_opv_desc gnu/ext2fs/ext2fs_vnops.c 9wMLinuxÁªÃË
ext2fs_vnodeop_opv_desc gnu/ext2fs/ext2fs_vnops.c 9wMLinuxÁªÃË
fdesc_vnodeop_opv_desc miscfs/fdesc/fdesc_vnops.c 9wMLinuxÁªÃË
ffs_fifoop_opv_desc ufs/ffs/ffs_vnops.c 9wMLinuxÁªÃË
ffs_specop_opv_desc ufs/ffs/ffs_vnops.c 9wMLinuxÁªÃË
ffs_vnodeop_opv_desc ufs/ffs/ffs_vnops.c 9wMLinuxÁªÃË
fifo_nfsv2nodeop_opv_desc nfs/nfs_vnops.c 9wMLinuxÁªÃË
fifo_vnodeop_opv_desc miscfs/fifofs/fifo_vnops.c 9wMLinuxÁªÃË
kernfs_vnodeop_opv_desc miscfs/kernfs/kernfs_vnops.c 9wMLinuxÁªÃË
lfs_fifoop_opv_desc ufs/lfs/lfs_vnops.c 9wMLinuxÁªÃË
lfs_specop_opv_desc ufs/lfs/lfs_vnops.c 9wMLinuxÁªÃË
lfs_vnodeop_opv_desc ufs/lfs/lfs_vnops.c 9wMLinuxÁªÃË
mfs_vnodeop_opv_desc ufs/mfs/mfs_vnops.c 9wMLinuxÁªÃË
msdosfs_vnodeop_opv_desc msdosfs/msdosfs_vnops.c 9wMLinuxÁªÃË
nfsv2_vnodeop_opv_desc nfs/nfs_vnops.c 9wMLinuxÁªÃË
null_vnodeop_opv_desc miscfs/nullfs/null_vnops.c 9wMLinuxÁªÃË
portal_vnodeop_opv_desc miscfs/portal/portal_vnops.c 9wMLinuxÁªÃË
procfs_vnodeop_opv_desc miscfs/procfs/procfs_vnops.c 9wMLinuxÁªÃË
spec_nfsv2nodeop_opv_desc nfs/nfs_vnops.c 9wMLinuxÁªÃË
spec_vnodeop_opv_desc miscfs/specfs/spec_vnops.c 9wMLinuxÁªÃË
umap_vnodeop_opv_desc miscfs/umapfs/umap_vnops.c 9wMLinuxÁªÃË
union_vnodeop_opv_desc miscfs/union/union_vnops.c 9wMLinuxÁªÃË
------------------------------------------------------------------------ 9wMLinuxÁªÃË
Õâ¸ö»ù´¡ÉÏ£¬spec_vnodeop_opv_specÀïÃèÊöµÄ²Ù×÷Ⱥ¾ÍÊÇdevice driver 9wMLinuxÁªÃË
interfaceµÄ¶«Î÷£¡£¡ 9wMLinuxÁªÃË
9wMLinuxÁªÃË
( ±¾Ð¡½ÚÍ꣬´ý±¾µºÖ÷ÓпÕÔÙ¼ÌÐø ) 9wMLinuxÁªÃË
9wMLinuxÁªÃË
9wMLinuxÁªÃË
FreeBSDºËÐÄ̽ÌÖ.6.Çý¶¯³ÌÐòƪ 9wMLinuxÁªÃË
9wMLinuxÁªÃË
2.3 mount¸ùĿ¼֮ǰµÄ´¦Àí¸ÅÒª 9wMLinuxÁªÃË
mount¸ùĿ¼µÄʱºò£¬main()(@kern/init_main.c)µÄ³õʼ»¯µÄ¹ý³Ì´Óxxx_vfs_mountroot() 9wMLinuxÁªÃË
(@kern/init_mail.c)±»µ÷ÓÿªÊ¼¡£Èç¹û´¦Àí¹ý³ÌÕý³££¬¾Í¶ÔrootvpÉ趨°üº¬ÁËrootµÄ 9wMLinuxÁªÃË
v-node¡£ 9wMLinuxÁªÃË
¡£main()µÄ³õʼ»¯¹ý³ÌÖУ¬configure()(@autoconf.c)±»µ÷Óá£ÔÚÕâ¸ö£¬ioÉ豸 9wMLinuxÁªÃË
³õʼ»¯ÍêÁ˺󣬾Í×ªÒÆµ½ÈçÏÂÁ½¸ö±äÁ¿µÄµØÖ·£ºÒ»¸öÊÇmountroot,ÊÇ´¦ÀímountµÄroutine, 9wMLinuxÁªÃË
ÁíÒ»¸öÊÇmountrootvfsops,ÊÇ´¦ÀíÐéÄâÎļþϵͳµÄroutine¡£ÔÚ±¾»ú´ÅÅÌÖУ¬¾Í½øÈë±äÁ¿ 9wMLinuxÁªÃË
rootdevËùÖ¸¶¨µÄdiskºÅÖС£ÕâÀï¾ÍÊÇ,¼Ù¶¨±¾»ú´ÅÅÌ 9wMLinuxÁªÃË
mountroot vfs_mountroot 9wMLinuxÁªÃË
mountrootvfsop &ufs_vfsops 9wMLinuxÁªÃË
rootdev boot disk number 9wMLinuxÁªÃË
9wMLinuxÁªÃË
¡£xxx_vfs_mountroot()(@kern/init_main.c) 9wMLinuxÁªÃË
ÔËÐÐ(*mountroot)(mountrootvfsops)ºó£¬¾ÍÖ¸Ã÷ÁËroot file systemµÄmount. 9wMLinuxÁªÃË
¡£vfs_mountroot()(@kern/vfs_conf.c) 9wMLinuxÁªÃË
¹ÜÀímountµÄÁËÎļþϵͳµÄÐÅÏ¢µÄstruct mount(@sys/mount.h),¶ÔËü½øÐÐÈ·ÈÏ 9wMLinuxÁªÃË
£¬È»ºóÉ趨´«µÝ¹ýÀ´µÄ¶ÔÐéÄâÎļþϵͳµÄ²Ù×÷Ⱥ(&ufs_vfsops),²Å½øÐÐ"root" 9wMLinuxÁªÃË
±ê¼Ç¡£¸ù¾ÝVFS_MOUNT(mp,...)½øÐÐmountÕâ¸öÐéÄâÎļþϵͳ¡£mount³É¹¦ºó£¬¾Í 9wMLinuxÁªÃË
×·¼Ófile systemµÄlist¡£ÕâÀÓÉÓÚ´«µÝÁË&ufs_vfsops£¬¾Í¿ÉÒÔµ÷Óà 9wMLinuxÁªÃË
ffs_mount()(@ufs/ffs/ffs_vfsops.c) 9wMLinuxÁªÃË
¡£ffs_mount() 9wMLinuxÁªÃË
Ê×Ïȵ÷ÓÃbdevvp()(@kern/vfs_subr.c),½øÐÐVBLKÀà±ð£¬spec_vnodeop_p 9wMLinuxÁªÃË
(@misc/specfs/spec_vnops.c) v-node²Ù×÷£¬±£Ö¤É趨ÁËÇý¶¯ºÅµÄrootdevµÄ 9wMLinuxÁªÃË
v-nodeµÄ×îÐÂÐÅÏ¢£¬È»ºóÉ趨rootvp¡£×îºó£¬Í¨¹ýffs_mountfs()µ÷ÓýøÐÐʵ¼Ê 9wMLinuxÁªÃË
µÄmount rootvp²Ù×÷¡£ 9wMLinuxÁªÃË
¡£ffs_mountfs() 9wMLinuxÁªÃË
¸÷ÖÖ¸÷ÑùµÄ¼ì²éÍêÁ˺󣬵÷ÓÃVOP_OPEN(),´ò¿ªrootvpµÄv-node¡£ÔÚÕâÀÈç¹û 9wMLinuxÁªÃË
v-nodeµÄv_op³ÉÔ±ÔÚspec_vnodeop_p´æÔڵϰ£¬¾Íµ÷ÓÃspec_open()(@misc/ 9wMLinuxÁªÃË
specfs/spec_vnops.c)¡£ 9wMLinuxÁªÃË
.spec_open 9wMLinuxÁªÃË
ÓÉÓÚVBLKÀï°üº¬v-nodeµÄÖÖÀ࣬´Óv-nodeÖ¸¶¨µÄdeviceºÅÈ¡µÃmajorµÄ 9wMLinuxÁªÃË
ºÅ£¬µ÷ÓöÔÓ¦driverµÄXXopen() routine 9wMLinuxÁªÃË
9wMLinuxÁªÃË
ÐøÉÏ£¬ÓÉVOP_IOCTL()(»¹ÊǵÄͨ¹ýspec_ioctl()(@misc/specfs/spec_vnops.c)) 9wMLinuxÁªÃË
¿ÉÒԵõ½partitionÐÅÏ¢£¬È»ºó¸Ã¼ì²ésuper blockµÄÄÚÈÝ¡£ÕýÈ·µÄ»°£¬¾ÍÔÚstruct 9wMLinuxÁªÃË
ufsmount(@ufs/ufs/ufsmount.h)É趨unix file system£¬ÕâÑù´¦Àí¹ý³Ì¾ÍÍêÁË¡ LinuxÁªÃËÊÕ¼¯ÕûÀí ,תÌùÇë±êÃ÷ԭʼÁ´½Ó,ÈçÓÐÈκÎÒÉÎÊ»¶Ó­À´±¾Õ¾LinuxÂÛ̳ÌÖÂÛ
·ÖÒ³£º1 2 [3] 4 5
¡¾ÆÀÂÛ¡¿¡¾¼ÓÈëÊղؼС¿¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿¡¾¹Ø±Õ¡¿
¡ù Ïà¹ØÁ´½Ó
ÎÞÏà¹ØÐÅÏ¢