²»ÖªµÀÔÚʲçÛʱºò£¬×ªÔØLinux ³öÏÖÁË module ÕâÖÖ¶«Î÷£¬µÄÈ·£¬ËüÊÇ Linux µÄÒ»´ó¸ïС£ÓÐÁË module Ö®ºó£¬Ð´
device driver ²»ÔÙÊÇÒ»Ïî¶ñÃΣ¬ÐÞ¸Ä kernel Ò²²»ÔÙÊÇÒ»¼þÍ´¿àµÄÊÂÁË¡£ÒòΪÄã²»ÐèҪÿ´ÎÒª²âÊÔ driver ¾ÍÖØÐÂ
compile kernel Ò»´Î¡£ÄǼòÖ±ÊÇ»áÀÛËÀÈË¡£Module ¿ÉÒÔÔÊÐíÎÒÃǶ¯Ì¬µÄ¸Ä±ä kernel£¬¼ÓÔØ device
driver£¬¶øÇÒËüÒ²ÄÜËõ¶ÌÎÒÃÇ driver development µÄʱ¼ä¡£ÔÚÕâÆªÎÄÕÂÀÎÒ½«Òª¸ú¸÷λ½éÉÜһϠmodule
µÄÔÀí£¬ÒÔ¼°ÈçºÎдһ¸ö module¡£
module ·Òë³ÉÖÐÎľÍÊÇÄ£¿é£¬²»¹ý£¬ÊÂʵÉÏÈ¥·ÒëÕâ¸ö×ÖÒ»µã¶¼Ã»ÒâÒå¡£ÔÚ½²Ä£¿é֮ǰ£¬ÎÒÏȾÙÒ»¸öÀý×Ó¡£ÏàÐźܶàÈ˶¼Óùý RedHat¡£ÔÚ
RedHat ÀÎÒÃÇ¿ÉÒÔÖ´ÐÐ sndconfig£¬Ëü¿ÉÒÔ°ïÎÒÃÇ config Éù¿¨¡£config
ÍêÖ®ºóÈç¹û×½µÃµ½ÄãµÄÉù¿¨£¬ÄÇÄãµÄÉù¿¨ÂíÉϾͿÉÒÔ¶¯ÁË£¬¶øÇÒ»¹²»ÓÃÖØÐ¼¤»î¼ÆËã»ú¡£ÕâÊÇÔõçÛ×öµÄÄØ ? ¾ÍÊÇ¿¿module¡£module
ÆäʵÊÇÒ»°ãµÄ³ÌÐò¡£µ«ÊÇËü¿ÉÒÔ±»¶¯Ì¬Ôص½ kernel Àï³ÉΪ kernelµÄÒ»²¿·Ö¡£Ôص½ kernel ÀïµÄ module Ëü¾ßÓиú
kernel Ò»ÑùµÄȨÁ¦¡£¿ÉÒÔ access ÈκΠkernel µÄ data structure¡£ÄãÌý¹ý kdebug Âð ? ËüÊÇÓÃÀ´
debug kernel µÄ¡£Ëü¾ÍÊÇÏȽ«Ëü±¾ÉíµÄÒ»¸ö module ÔØµ½ kernel À¶øÔÚ u ......
ǰÑÔ:
ÎÒÃÇÔÚÕâÒ»½Ú½«ÒªÌÖÂÛlinuxÏÂÎļþ²Ù×÷µÄ¸÷¸öº¯Êý.
1.ÎļþµÄ´´½¨ºÍ¶Áд
2.ÎļþµÄ¸÷¸öÊôÐÔ
3.Ŀ¼ÎļþµÄ²Ù×÷
4.¹ÜµÀÎļþ
--------------------------------------------------------------------------------
1¡£ÎļþµÄ´´½¨ºÍ¶Áд
ÎÒ¼ÙÉèÄãÒѾ֪µÀÁ˱ê×¼¼¶µÄÎļþ²Ù×÷µÄ¸÷¸öº¯Êý(fopen,fread,fwriteµÈµÈ).µ±È»Èç¹ûÄã²»Çå³þµÄ»°Ò²²»Òª×ż±.ÎÒÃÇÌÖÂÛµÄϵͳ¼¶µÄÎļþ²Ù×÷ʵ¼ÊÉÏÊÇΪ±ê×¼¼¶Îļþ²Ù×÷·þÎñµÄ.
µ±ÎÒÃÇÐèÒª´ò¿ªÒ»¸öÎļþ½øÐжÁд²Ù×÷µÄʱºò,ÎÒÃÇ¿ÉÒÔʹÓÃϵͳµ÷Óú¯Êýopen.ʹÓÃÍê³ÉÒÔºóÎÒÃǵ÷ÓÃÁíÍâÒ»¸öcloseº¯Êý½øÐйرղÙ×÷.
#include
#include
#include
#include
int open(const char *pathname,int flags);
int open(const char *pathname,int flags,mode_t mode);
int close(int fd);
openº¯ÊýÓÐÁ½¸öÐÎʽ.ÆäÖÐpathnameÊÇÎÒÃÇÒª´ò¿ªµÄÎļþÃû(°üº¬Â·¾¶Ãû³Æ,ȱʡÊÇÈÏΪÔÚµ±Ç°Â·¾¶ÏÂÃæ).flags¿ÉÒÔÈ¥ÏÂÃæµÄÒ»¸öÖµ»òÕßÊǼ¸¸öÖµµÄ×éºÏ.&nbs ......
ǰÑÔ:
ÎÒÃÇÔÚÕâÒ»½Ú½«ÒªÌÖÂÛlinuxÏÂÎļþ²Ù×÷µÄ¸÷¸öº¯Êý.
1.ÎļþµÄ´´½¨ºÍ¶Áд
2.ÎļþµÄ¸÷¸öÊôÐÔ
3.Ŀ¼ÎļþµÄ²Ù×÷
4.¹ÜµÀÎļþ
--------------------------------------------------------------------------------
1¡£ÎļþµÄ´´½¨ºÍ¶Áд
ÎÒ¼ÙÉèÄãÒѾ֪µÀÁ˱ê×¼¼¶µÄÎļþ²Ù×÷µÄ¸÷¸öº¯Êý(fopen,fread,fwriteµÈµÈ).µ±È»Èç¹ûÄã²»Çå³þµÄ»°Ò²²»Òª×ż±.ÎÒÃÇÌÖÂÛµÄϵͳ¼¶µÄÎļþ²Ù×÷ʵ¼ÊÉÏÊÇΪ±ê×¼¼¶Îļþ²Ù×÷·þÎñµÄ.
µ±ÎÒÃÇÐèÒª´ò¿ªÒ»¸öÎļþ½øÐжÁд²Ù×÷µÄʱºò,ÎÒÃÇ¿ÉÒÔʹÓÃϵͳµ÷Óú¯Êýopen.ʹÓÃÍê³ÉÒÔºóÎÒÃǵ÷ÓÃÁíÍâÒ»¸öcloseº¯Êý½øÐйرղÙ×÷.
#include
#include
#include
#include
int open(const char *pathname,int flags);
int open(const char *pathname,int flags,mode_t mode);
int close(int fd);
openº¯ÊýÓÐÁ½¸öÐÎʽ.ÆäÖÐpathnameÊÇÎÒÃÇÒª´ò¿ªµÄÎļþÃû(°üº¬Â·¾¶Ãû³Æ,ȱʡÊÇÈÏΪÔÚµ±Ç°Â·¾¶ÏÂÃæ).flags¿ÉÒÔÈ¥ÏÂÃæµÄÒ»¸öÖµ»òÕßÊǼ¸¸öÖµµÄ×éºÏ.&nbs ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
Linux
·¢ÐаæÓë
Linux
²úÆ·Á½ÕßÏà²îºÜ´ó£¬ÓÐʱÈÝÒ×»ìÏý£¬·¢ÉúÎó½â£¬ÉõÖÁÒªÄÖ³ö´óЦ»°À´¡£ÎªÊ²Ã´£¿
´Ó×ÖÃæÉÏÀ´½²£¬·¢Ðа棨
Distribution
£©ºÍ²úÆ·£¨
Product
£©£¬Ç°ÕßÊÇ·¢ÐÐÎºóÕßÊÇÉú²úÆ·£»Ç°ÕßÇ¿µ÷µÄÊÇÎïµÄ·¢Ðйý³Ì£¬ºóÕßÇ¿µ÷µÄÊÇÉú²úµÄ×îÖÕ½á¹û¡£·¢ÐÐÐèÒªÓз¢ÐеĹæÔò£¬²úÆ·ÐèÒªÓÐʹÓõÄÐí¿É¡£¾ßÌå˵À´£¬
Linux
·¢ÐаæÐèÒªÓз¢ÐеĹæÔò£¬¶ø
Linux
µÄ²úÆ·ÔòÐèÒªÓÐʹÓõÄÐí¿É¡£
ÔÚ¶íÂÞ˹£¬µ½´¦¿É¼ûÒ»ÖÖ¹ÚÃûΪ“
ALT”
µÄ
Linux
·¢Ðа棬ÎïÀíÔØÌå¼Û¸ñºÜµÍ£¬¿ÉÒÔ×ÔÓɵØÔÙ·Ö·¢£¬Ë͸øÁÚ¾Ó»òÅóÓÑ¡£ÔÚÖйú£¬È±ÉÙÕâÖÖ¹úÄÚ·¢²¼µÄ
Linux
·¢Ðа棬ֻÓÐÒ»ÖÖ¹ú²úµÄ
Linux
²úÆ·£¬Ìṩ¸ø×îÖÕÓû§Ê¹Ó㬲»µÃÔÙ¼ÌÐøÍâ´«£¨¼´¼ÌÐø×ÔÓɵØÔÙ·Ö·¢£©¡£ºÜÃ÷ÏÔµÄÊÂʵÊÇ£¬
Linux
²úÆ·¶ÂÈûÁË
Linux
×ÔÓÉ´«²¥µÄµÀ·£¬Óë´ËÏà·´£¬
Linux
·¢Ðаæ´Ù½øÁË
Linux
µÄ´óÆÕ¼°¡£
3
ÔÂ
8
ÈÕÉÏÎç
11
µã£¬ÉîÛÚÎÚ°îÍй«Ë¾×ܲø°¾©£¬ÎÒÃÇÔÚijÐǰͿˣ¨ ......
µÚÊ®¶þÕ Îļþ¹ÜÀí¼°LinuxʵÏÖÎÊÓë´ð
12.1 ʲôÊÇÎļþ£¿Ëü°üº¬ÄÄЩÄÚÈÝ£¿ÓÐÊ²Ã´ÌØµã£¿
´ð£ºÎļþÊÇÐÅÏ¢µÄÒ»ÖÖ×éÖ¯ÐÎʽ£¬ÊÇ´æ´¢ÔÚÍâ´æÉϵľßÓбêʶÃûµÄÒ»×éÏà¹ØÐÅÏ¢¼¯ºÏ¡£Îļþ°üº¬µÄÄÚÈÝÓУºÔ´³ÌÐò¡¢¶þ½øÖÆ´úÂë¡¢Îı¾Îĵµ¡¢Êý¾Ý¡¢±í¸ñ¡¢ÉùÒôºÍͼÏóµÈ¡£
Îļþ¾ßÓеÄÌØµãÈçÏ£º
¢Ù Îļþ¾ßÓб£´æÐÔ£¬Ëü±»´æ´¢ÔÚijÖÖ´æ´¢½éÖÊÉÏ£¬³¤ÆÚ±£´æºÍ¶à´ÎʹÓá£
¢Ú ÎļþÊǰ´Ãû´æÈ¡µÄ£¬Ã¿¸öÎļþ¾ßÓÐΨһµÄ±êʶÃû£¬Í¨¹ý±êʶÃûÀ´´æÈ¡ÎļþÖеÄÐÅÏ¢£¬¶ø²»ÐèÒªÁ˽âÎļþÔÚ´æ´¢½éÖÊÉϵľßÌåÎïÀíλÖá£
¢Û ÎļþµÄÄÚÈÝÊÇÒ»×éÐÅÏ¢µÄ¼¯ºÏ£¬ÐÅÏ¢¿ÉÒÔÊÇÔ´´úÂë³ÌÐò¡¢¶þ½øÖÆ´úÂë¡¢ÎļþÎĵµ¡¢Êý¾Ý±í¸ñ¡¢ÉùÒôºÍͼÏóµÈ¡£
12.2ÎļþϵͳҪ½â¾öÄÄЩÎÊÌ⣿ÐéÄâÎļþϵͳҪ½â¾öÄÄЩÎÊÌ⣿
´ð£ºÎļþϵͳµÄÖ÷ҪĿ±êÊÇÌá¸ß´æ´¢¿Õ¼äµÄÀûÓÃÂÊ£¬ËüÒª½â¾öµÄÖ÷ÒªÎÊÌâÓУºÍê³ÉÎļþ´æ´¢¿Õ¼äµÄ¹ÜÀí£¬ÊµÏÖÎļþÃûµ½ÎïÀíµØÖ·µÄת»»£¬ÊµÏÖÎļþºÍĿ¼µÄ²Ù×÷£¬ÌṩÎļþ¹²ÏíÄÜÁ¦ºÍ°²È«´ëÊ©£¬ÌṩÓѺõÄÓû§½Ó¿Ú¡£ÎļþϵͳÏòÓû§ÌṩÁËÓйØÎļþºÍĿ¼²Ù×÷µÄ¸÷ÖÖ¹¦ÄܽӿںÍϵͳµ÷Óã¬ÈçÃüÁî½Ó¿Ú¡¢³ÌÐò½Ó¿ÚºÍ½»»¥½Ó¿ÚµÈ¡£
ÐéÄâÎļþϵͳµÄÖ÷Òª¹¦ÄÜÊÇ¿ÉÒÔʹ¶àÖÖ±¾µØµÄ»òÕßÔ¶³ÌµÄÎļþϵͳ¹²´æÓÚͬһ̨»úÆ÷ÉÏ ......
Ò»²½Ò»Ñ§LinuxÓëWindows ¹²ÏíÎļþSamba £¨v0.2b£©
¿´ÁËÕâÆªÎÄÕ£¬¸Ð¾õͦºÃ£¬ËµµÄÒ²±È½ÏÏêϸ£¬×Ô¼º¶¯ÊÖʵÏÖ£¬Ò»µãÎÊÌâҲûÓУ¬¸ø´ó¼Ò·ÖÏí
×÷Õߣº
±±ÄÏÄϱ±£¬ÕýÔÚÔö¼ÓÖÐ... ... ÐèÒªÄúµÄ²ÎÓ룻
À´×Ô£º
LinuxSir.Org
¼ò½é£º
±¾ÎÄÖ»Êǽ²Ò»½²ÎÒÃÇ×î³£ÓõÄLinuxÓëWindows¹²ÏíÎļþ£¬Ö÷ÒªÊÇΪÐÂÊÖָһָ·¡£ÈçºÎ½¨Á¢×î¼òµ¥µÄSamba·þÎñÆ÷£¬²¢½²ÊöÓöµ½ÎÊÌâÓ¦¸Ã´ÓºÎ´¦Ñ°ÕÒ½â¾ö·½°¸£»ÕýÔÚ¸üÐÂÖ®ÖУ¬Ï£ÍûÄúµÄ²Î¼Ó ... ... лл£»
Ŀ¼
0.1 ²é¿´ÎļþÄÚÈݺͱà¼ÎļþµÄ¹¤¾ß£»
0.2 ¹ØÓÚÎļþºÍĿ¼Ïà¹Ø£»
03 Óû§ºÍÓû§×éÏà¹Ø£»
04 ½ø³Ì¹ÜÀí£»
0¡¢¼ÜÉèSamba ·þÎñÆ÷µÄǰÌ᣻
3.5.1 ÔÚLinuxϵͳÖÐ²é¿´ÍøÂçÖÐWindows¹²ÏíÎļþ¼°LinuxÖеÄSamba¹²ÏíÎļþ£»
3.5.2 ÔÚWindowsÖзÃÎÊLinux Samba·þÎñÆ÷¹²ÏíÎļþµÄ°ì·¨£»
3.5.3 smbfsÎļþϵͳµÄ¹ÒÔØ£»
3.1 Samba ÓÐÁ½¸ö·þÎñÆ÷£¬Ò»¸öÊÇsmbd£¬ÁíÒ»¸öÊÇnmbd£»
3.2 ²é¿´Samba ·þÎñÆ÷µÄ¶Ë¿Ú¼°·À»ðǽ£»
3.3 ²é¿´Samba ·þÎñÆ÷µÄÅäÖÃÎļþ£»
3.4 Samba ÔÚLinux ÖеÄһЩ¹¤¾ß£¨·þÎñÆ÷¶ËºÍ¿Í»§¶Ë£©£»
3.5 ÔÚLinux Öеij£Óù¤¾ß£¬Windows²é¿´Linux¹²ÏíµÄ·½·¨ £»
µÚÒ»²½£º ¸ü¸Äsmb.conf
µÚ¶þ²½£º½¨Á¢ÏàӦĿ¼²¢ÊÚȨ£ ......
ÒýÓãºhttp://blog.chinaunix.net/u/12207/showart_2061214.html
¹ØÓÚ2.6.31Óöµ½µÄÎÊÌâ
´íÎóÌáʾ1£º
drivers/built-in.o(.init.text+0x3bad): In function `con_init':
include/trace/events/kmem.h:47: undefined reference to `.L1452'
½â¾ö£º
vi /usr/src/linux/drivers/char/vt.c ÕÒµ½static int __init con_init(void)º¯ÊýÖУ¬ÒÔÏÂÓï¾ä
ɾ³ýÒÔÏÂÐÐ(µÚ2875ÐÐ)
vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT);
ÔÚÏàͬλÖÃÌí¼Ó£º
vc_cons[currcons].d = vc = alloc_bootmem(sizeof(struct vc_data));
ͬʱ¼ÇµÃ¼ÓÉÏÍ·Îļþ #include <linux/bootmem.h>£¬·ñÔò»á³öÏÖµÚ2¸ö´íÎó¡£
´íÎóÌáʾ2£º
drivers/char/vt.c: In function `con_init':
drivers/char/vt.c:2875: error: implicit declaration of function `alloc_bootmem'
drivers/char/vt.c:2875: warning: assignment makes pointer from integer without a cast
ÔÒò£ºvt.cÖÐÒýÓÃÁËalloc_bootmem£¬µ«ÊÇÕÒ²»µ½Ïà¹Ø.h¶¨ÒåÎļþ»òûÓÐÔÚÏà¹ØµÄÍ·Îļþ.hÖж¨Òå
½â¾ö£º
# vi /usr/src/linux/drivers/char/vt.c£¬Ìí¼ÓÒÔÏÂÕâÐУº
#include <li ......