ÄúµÄλÖãºÍøÕ¾Ê×Ò³ > µçÆ÷άÐÞ×ÊÁÏÍø > ÕýÎÄ >
LinuxÄں˵Ť×÷ÔÀí
¡ï¡ï¡ï¡ï¡ï¡¾ÎÄÕµ¼¶Á¡¿£ºLinuxÄں˵Ť×÷ÔÀí¾ßÌåÄÚÈÝÊÇ£ºÅ£½ò×ÖµäÖжÔ"kernel"Ò»´ÊµÄ¶¨ÒåÊÇ£º"½ÏÈíµÄ¡¢Í¨³£ÊÇÒ»¸ö¼á¹û¿ÉʳÓõIJ¿·Ö¡£"µ±È»»¹ÓеڶþÖÖ¶¨Ò壺"ij¸ö¶«Î÷ºËÐÄ»òÕß ÖØÒªµÄ²¿·Ö¡£"¶ÔlinuxÀ´Ëµ£¬ËüµÄkernelÎÞÒÉÊôÓÚµÚ¶þÖÖ½âÊÍ¡£ÈÃÎÒÃÇÀ´¿´¿´Õâ¸öÖØÒªµÄ¶«Î÷ÊÇÈçºÎ¹¤¡
À´Ô´£º ÈÕÆÚ£º2013-11-27 21:58:34 ÈËÆø£º±êÇ©£º
Å£½ò×ÖµäÖжÔ"kernel"Ò»´ÊµÄ¶¨ÒåÊÇ£º"½ÏÈíµÄ¡¢Í¨³£ÊÇÒ»¸ö¼á¹û¿ÉʳÓõIJ¿·Ö¡£"µ±È»»¹ÓеڶþÖÖ¶¨Ò壺"ij¸ö¶«Î÷ºËÐÄ»òÕß ÖØÒªµÄ²¿·Ö¡£"¶ÔlinuxÀ´Ëµ£¬ËüµÄkernelÎÞÒÉÊôÓÚµÚ¶þÖÖ½âÊÍ¡£ÈÃÎÒÃÇÀ´¿´¿´Õâ¸öÖØÒªµÄ¶«Î÷ÊÇÈçºÎ¹¤×÷µÄ£¬ÏÈ´ÓÒ»µãÀíÂÛ˵Æð¡£
¹ãÒ嵨À´Ëµkernel¾ÍÊÇÒ»¸öÈí¼þ£¬ËüÔÚÓ²¼þºÍÔËÐÐÔÚ¼ÆËã»ú(µçÄÔ)ÉϵÄÓ¦ÓóÌÐòÖ®¼äÌṩÁËÒ»¸ö²ã¡£Ñϸñµã´Ó¼ÆËã»ú(µçÄÔ)¿ÆÑ§µÄ½Ç¶ÈÀ´Ëµ£¬linuxÖеÄkernelÖ¸µÄÊÇlinus torvaldsÔÚ90Äê´ú³õÆÚдµÄÄǵã´úÂë¡£
ËùÓеÄÄãÔÚlinux¸÷°æ±¾Öп´µ½µÄÆäËû¶«Î÷--bash shell¡¢kde´°¿Ú¹ÜÀíÆ÷¡¢webä¯ÀÀÆ÷¡¢x·þÎñÆ÷¡¢tux racerÒÔ¼°ËùÓÐµÄÆäËû£¬¶¼²»¹ýÊÇÔËÐÐÔÚlinuxÉϵÄÓ¦ÓöøÒÑ£¬¶ø²»ÊDzÙ×÷ϵͳ×ÔÉíµÄÒ»²¿·Ö¡£ÎªÁ˸ø´ó¼ÒÒ»¸ö¸ü¼ÓÖ±¹ÛµÄ¸Ð¾õ£¬ÎÒÀ´¾Ù¸öÀý×Ó£¬±ÈÈçrhel5µÄ°²×°´ó¸ÅÒªÕ¼¾Ý2.5gbµÄÓ²ÅÌ£¨Ó²µúhdd´æ´¢Ã½½éÖ®Ò»£©¿Õ¼ä£¨¾ßÌå¶à´óµ±È»ÊÓÄãµÄÑ¡Ôñ°²×°À´¶¨£©£¬ÔÚÕâÆäÖУ¬kernelÒÔ¼°ËüµÄ¸÷¸öÄ£¿é×é¼þ£¬Ö»ÓÐ47mb£¬ËùÕ¼±ÈÀýԼΪ2%¡£
ÄÇôkernelµ½µ×ÊÇÈçºÎ¹¤×÷µÄÄØ?ÈçÏÂÃæµÄͼ±í¡£kernelͨ¹ýÐí¶àµÄ½øÈë¶Ë¿ÚÒ²¾ÍÊÇÎÒÃÇ´Ó¼¼Êõ½Ç¶ÈËù˵µÄϵͳµ÷Óã¬À´Ê¹µÃÔËÐÐÔÚËüÉÏÃæµÄÓ¦ÓóÌÐò¿ÉÓá£kernelʹÓõÄϵͳµ÷ÓñÈÈç"¶Á"ºÍ"д"À´ÌṩÄãÓ²¼þµÄ³éÏó£¨abstraction£©¡£

´Ó³ÌÐòÔ±µÄÊÓ½ÇÀ´¿´£¬ÕâЩ¿´ÆðÀ´Ö»ÊÇÆÕͨµÄ¹¦Äܵ÷Óã¬È»¶øÊµ¼ÊÉÏϵͳµ÷ÓÃÔÚ´¦ÀíÆ÷µÄ²Ù×÷ģʽÉÏ£¬´ÓÓû§¿Õ¼äµ½kernel¿Õ¼äÓÐÒ»¸öÃ÷ÏÔµÄÇл»¡£Í¬Ê±£¬ÏµÍ³µ÷ÓÃÌṩÁËÒ»¸ö"linuxÐéÄâ»ú"£¬¿ÉÒÔ±»ÈÏΪÊǶÔÓ²¼þµÄ³éÏó¡£
kernelÌṩµÄ¸üÃ÷ÏԵijéÏóÖ®Ò»ÊÇÎļþϵͳ¡£¾ÙÀýÀ´Ëµ£¬ÕâÀïÓÐÒ»¶Î¶ÌµÄ³ÌÐòÊÇÓÃcдµÄ£¬Ëü´ò¿ªÁËÒ»¸öÎļþ²¢½«ÄÚÈÝ¿½±´µ½±ê×¼µÄÊä³ö£º
#include <fcntl.h>
int main()
{
int fd, count; char buf[1000];
fd=open("mydata", o_rdonly);
count = read(fd, buf, 1000);
write(1, buf, count);
close(fd);
}
ÔÚÕâÀÄã¿ÉÒÔ¿´µ½Ëĸöϵͳµ÷ÓõÄÀý×Ó£º´ò¿ª¡¢¶Á¡¢Ð´ºÍ¹Ø±Õ¡£²»Ì¸Õâ¶Î³ÌÐòÓï·¨µÄϸ½Ú£¬ÖصãÊÇ£ºÍ¨¹ýÕâЩϵͳµ÷ÓÃlinux kernelÌṩÁËÒ»¸öÎļþµÄ"´í¾õ"£¬¶øÊµ¼ÊÉÏËü²»¹ýÊÇÒ»¶ÑÊý¾ÝÓÐÁ˸öÃû×Ö£¬ÕâÑùÒ»À´Äã¾Í²»±ØÈ¥ÓëÓ²¼þµ×²ãµÄ¶ÑÕ»¡¢·ÖÇø¡¢Í·ºÍÖ¸Õë¡¢·ÖÇøµÈ½»ÉæÁË£¬¶øÊÇÖ±½ÓÒÔÀý×ÓÖеķ½Ê½ÓëÓ²¼þ"½»Á÷"£¬ÕâÒ²¾ÍÊÇÎÒÃÇËù˵µÄ³éÏó£¨abstraction£©£¬½«µ×²ãµÄ¶«Î÷ÒÔ¸üÒ×¶®µÄ·½Ê½±í´ï³öÀ´¡£
ϵͳÎļþÊÇkernelÌṩµÄ½ÏΪÃ÷ÏÔµÄÒ»ÖÖ³éÏó¡£»¹ÓÐÒ»Ð©ÌØÐÔ²»ÊÇÕâôµÄÃ÷ÏÔ£¬±ÈÈç½ø³Ìµ÷¶È¡£ÈκÎÒ»¸öʱ¼ä£¬¶¼¿ÉÄÜÓкü¸¸ö½ø³Ì»òÕß³ÌÐòµÈ´ý×ÅÔËÐС£kernelµÄʱ¼äµ÷¶È¸øÃ¿¸ö½ø³Ì·ÖÅäcpuʱ¼ä£¬ËùÒÔ¾ÍÒ»¶Îʱ¼äÄÚÀ´Ëµ£¬ÎÒÃÇ»áÓÐÖÖ´í¾õ£ºµçÄÔ(¼ÆËã»ú(µçÄÔ))ͬһʱ¼äÔËÐкü¸¸ö³ÌÐò¡£ÕâÊÇÁíÍâÒ»¸öc³ÌÐò£º
#include <stdlib.h>
main()
{
if (fork()) {
write(1, "parent\n", 7);
wait(0);
exit(0);
}
else {
write(1, "child\n", 6);
exit(0);
}
}
ÔÚÕâ¸ö³ÌÐòÖд´½¨ÁËÒ»¸öнø³Ì£¬¶øÔÀ´µÄ½ø³Ì£¨¸¸½ø³Ì£©ºÍнø³Ì£¨×Ó½ø³Ì£©¶¼±àдÁ˱ê×¼Êä³öÈ»ºó½áÊø¡£×¢Òâϵͳµ÷ÓÃfork(), exit() ÒÔ¼° wait()Ö´ÐгÌÐòµÄ´´½¨¡¢½áÊøºÍ¸÷×Ôͬ²½¡£ÕâÊǽø³Ì¹ÜÀíºÍµ÷¶ÈÖÐ µäÐ͵ļòµ¥µ÷Óá£
kernel»¹ÓÐÒ»¸ö¸ü¼Ó²»Ò×¼ûµ½µÄ¹¦ÄÜ£¬Á¬³ÌÐòÔ±¶¼²»Òײì¾õ£¬ÄǾÍÊÇ´æ´¢¹ÜÀí¡£Ã¿¸ö³ÌÐòÔËÐеö¼ºÃÏñËüÓиö×Ô¼ºµÄµØÖ·¿Õ¼äÀ´µ÷ÓÃÒ»Ñù£¬Êµ¼ÊÉÏËü¸úÆäËû½ø³ÌÒ»Ñù¹²Ïí¼ÆËã»ú(µçÄÔ)µÄÎïÀí´æ´¢£¬Èç¹ûϵͳÔËÐеĴ洢¹ýµÍ£¬ËüµÄµØÖ·¿Õ¼äÉõÖÁ»á±»´ÅÅ̵Ľ»»¥ÇøÔÝʱ¼ÄÓᣴ洢¹ÜÀíµÄÁíÍâÒ»¸ö·½ÃæÊÇ·ÀÖ¹Ò»¸ö½ø³Ì·ÃÎÊÆäËû½ø³ÌµÄµØÖ·¿Õ¼ä--¶ÔÓÚ¶à½ø³Ì²Ù×÷ϵͳÀ´ËµÕâÊǺܱØÒªµÄÒ»¸ö·À·¶´ëÊ©¡£
kernelͬÑù»¹ÅäÖÃÍøÂçÁ´½ÓÐÒé±ÈÈçip¡¢tcpºÍudpµÈ£¬ËüÃÇÔÚÍøÂçÉÏÌṩ»úÆ÷¶Ô»úÆ÷£¨machine-to-machine£©ºÍ½ø³Ì¶Ô½ø³Ì£¨process-to-process£©µÄͨÐÅ¡£ÕâÀïÓÖ»áÔì³ÉÒ»ÖÖ¼ÙÏ󣬼´tcpÔÚÁ½¸ö½ø³ÌÖ®¼äÌṩÁËÒ»¸ö¹Ì¶¨Á¬½Ó--¾ÍºÃÏñÁ¬½ÓÁ½¸öµç»°µÄÍÏßÒ»Ñù£¬Êµ¼ÊÖÐÈ´²¢Ã»Óй̶¨µÄÁ¬½Ó£¬ÌØÊâµÄÒýÓÃÐÒé±ÈÈçftp¡¢dnsºÍhttpÊÇͨ¹ýÓû§¼¶³ÌÐòÀ´ÊµÊ©µÄ£¬¶ø²¢·ÇkernelµÄÒ»²¿·Ö¡£
linux£¨Ïñ֮ǰµÄunix£©ÔÚ°²È«·½Ãæ¿Ú±®ºÜºÃ£¬ÕâÊÇÒòΪkernel¸ú×ټǼÁËÿ¸öÔËÐнø³ÌµÄuser idºÍgroup id£¬Ã¿´Îµ±Ò»¸öÓ¦ÓÃÆóͼ·ÃÎÊ×ÊÔ´£¨±ÈÈç´ò¿ªÒ»¸öÎļþÀ´Ð´È룩µÄʱºò£¬kernel¾Í»áºË¶ÔÎļþÉϵķÃÎÊÐí¿ÉÈ»ºó×ö³öÔÊÐí/½ûÖ¹µÄÃüÁî¡£ÕâÖÖ·ÃÎÊ¿ØÖÆÄ£Ê½ ÖÕ¶ÔÕû¸ölinuxϵͳµÄ°²È«×÷Óúܴó¡£
kernel»¹ÌṩÁËÒ»´óÌ×Ä£¿éµÄ¼¯ºÏ£¬Æä¹¦ÄܰüÀ¨ÈçºÎ´¦ÀíÓëÓ²¼þÉ豸½»Á÷µÄÖî¶àϸ½Ú¡¢ÈçºÎ´Ó´ÅÅ̶Áȡһ¸ö·ÖÇø¡¢Èç¹û´ÓÍøÂç½Ó¿Ú¿¨»ñÈ¡Êý¾Ý°üµÈ¡£ÓÐʱÎÒÃdzÆÕâЩΪÉ豸Çý¶¯¡£
Ä£¿é»¯µÄkernel
ÏÖÔÚÎÒÃǶÓkernelÊÇ×öʲôµÄÒѾÓÐÁËһЩÁ˽⣬ÈÃÎÒÃÇÔÙÀ´¼òµ¥¿´ÏÂËüµÄÎïÀí×é³É¡£ÔçÆÚ°æ±¾µÄlinux kernelÊÇÕûÌåʽµÄ£¬Ò²¾ÍÊÇ˵ËùÓеIJ¿¼þ¶¼¾²Ì¬µØÁ¬½Ó³ÉÒ»¸ö£¨ºÜ´óµÄ£©Ö´ÐÐÎļþ¡£
Ïà±È½Ï¶øÑÔ£¬ÏÖÔÚµÄlinux kernelÊÇÄ£¿é»¯µÄ£ºÐí¶à¹¦Äܰüº¬ÔÚÄ£¿éÄÚ£¬È»ºó¶¯Ì¬µØÔØÈëkernelÖС£ÕâʹµÃkernelµÄÄں˺ÜС£¬¶øÇÒÔÚÔËÐÐkernelʱ¿ÉÒÔ²»±Øreboot¾ÍÄÜÔØÈëºÍÌæ´úÄ£¿é¡£
kernelµÄÄÚºËÔÚboot timeʱ´ÓλÓÚ/boot Ŀ¼µÄÒ»¸öÎļþ¼ÓÔØ½ø´æ´¢ÖУ¬Í¨³£Õâ¸ö/boot Ŀ¼»á±»½Ð×ökernelversion£¬kernelversionÓëkernel°æ±¾Óйء££¨Èç¹ûÄãÏëÖªµÀÄãµÄkernel°æ±¾ÊÇʲô£¬ÔËÐÐÃüÁîÐÐÏÔʾϵͳÐÅÏ¢-r¡££©kernelµÄÄ£¿éλÓÚĿ¼/lib/modules/kernelversion֮ϣ¬ËùÓеÄ×é¼þ¶¼»áÔÚkernel°²×°Ê±±»¿½±´¡£
¹ÜÀíÄ£¿é
´ó²¿·ÖÇé¿öÏ£¬linux¹ÜÀíËüµÄÄ£¿é²»ÐèÒªÄãµÄ°ï棬µ«ÊÇÈç¹û±ØÒªµÄʱºòÓÐÃüÁîÐпÉÒÔÀ´ÊÖ¶¯¼ì²éºÍ¹ÜÀíÄ£¿é¡£±ÈÈ磬ΪÁ˲éÇå³þµ±Ç°µ½µ×ÄĸöÄ£¿éÔÚÔØÈëkernel¡£ÕâÀïÓÐÒ»¸öÊä³öµÄÀý×Ó£º
# lsmod
pcspkr 4224 0
hci_usb 18204 2
psmouse 38920 0
bluetooth 55908 7 rfcomm,l2cap,hci_usb
yenta_socket 27532 5
rsrc_nonstatic 14080 1 yenta_socket
isofs 36284 0
Êä³öµÄÄÚÈݰüÀ¨£ºÄ£¿éµÄÃû×Ö¡¢´óС¡¢Ê¹ÓôÎÊýºÍÒÀÀµÓÚËüµÄÄ£¿éÁÐ±í¡£Ê¹ÓôÎÊý¶Ô·ÀÖ¹Ð¶ÔØµ±Ç°»îÔ¾µÄÄ£¿é·Ç³£×ÜÒª¡£linuxÖ»ÔÊÐíʹÓôÎÊýΪÁãµÄÄ£¿é±»ÒƳý¡£
Äã¿ÉÒÔʹÓÃmodprobeÀ´ÊÖ¶¯¼ÓÔØºÍÐ¶ÔØÄ£¿é£¬£¨»¹ÓÐÁ½¸öÃüÁîÐнÐ×öinsmodºÍrmmod£¬µ«modprobe¸üÒ×ÓÚʹÓÃÒòΪËü×Ô¶¯ÒƳýÁËÄ£¿éÒÀÀµ£©¡£±ÈÈçlsmodµÄÊä³öÔÚÎÒÃǵĵçÄÔ(¼ÆËã»ú(µçÄÔ))ÉÏÏÔʾÁËÒ»¸öÃû½ÐisofsµÄÐ¶ÔØÄ£¿é£¬ËüµÄʹÓôÎÊýÊÇÁã¶øÇÒûÓÐÒÀÀµÄ£¿é£¬£¨isofsÊÇÒ»¸öÄ£¿é£¬ËüÖ§³ÖcdÉÏʹÓõÄisoϵͳÎļþ¸ñʽ£©ÕâÖÖÇé¿öÏ£¬kernel»áÔÊÐíÎÒÃÇÐ¶ÔØÄ£¿é£º
# modprobe -r isofs
ÏÖÔÚ£¬isofs²»ÔÙÏÔʾÔÚismodµÄÊä³öÖУ¬kernelÓɴ˽ÚÊ¡ÁË36,284×ֽڵĴ洢¡£Èç¹ûÄã·ÅÈëcd²¢ÇÒÈÃËü×Ô¶¯°²×°£¬kernel½«×Ô¶¯ÖØÐÂÔØÈëisofsÄ£¿é£¬¶øÇÒisofsµÄʹÓôÎÊýÔö¼Óµ½1´Î¡£Èç¹ûÕâʱºòÄ㻹ÊÔÍ¼ÒÆ³ýÄ£¿é£¬¾Í²»»á³É¹¦ÁËÒòΪËüÕýÔÚ±»Ê¹Óãº
# modprobe -r isofs
fatal: module isofs is in use.
lsmodÖ»ÊÇÁгöÁ˵±Ç°±»ÔØÈëµÄÄ£¿é£¬modprobeÔò½«ÁгöËùÓпÉÓõÄÄ£¿é£¬Ëüʵ¼ÊÉÏÊä³öÁË/lib/modules/kernelversionĿ¼ÏÂËùÓеÄÄ£¿é£¬Ãûµ¥»áºÜ³¤£¡
ʵ¼ÊÉÏ£¬Ê¹ÓÃmodprobeÀ´ÊÖ¶¯¼ÓÔØÒ»¸öÄ£¿é²¢²»³£¼û£¬µ«È·Êµ¿ÉÒÔͨ¹ýmodprobeÃüÁîÐÐÀ´¶ÔÄ£¿éÉèÖòÎÊý£¬ÀýÈ磺
# modprobe usbcore blinkenlights=1
ÎÒÃDz¢²»ÊÇÔÚ´´½¨blinkenlights£¬¶øÊÇusbcoreÄ£¿éµÄʵ²ÎÊý¡£
ÄÇôÈçºÎÖªµÀÒ»¸öÄ£¿é»á½ÓÊÜʲô²ÎÊýÄØ£¿Ò»¸ö±È½ÏºÃµÄ·½·¨ÊÇʹÓÃmodinfoÃüÁËüÁгöÁ˹ØÓÚÄ£¿éµÄÖÖÖÖÐÅÏ¢¡£ÕâÀïÓÐÒ»¸ö¹ØÓÚÄ£¿ésnd-hda-intelµÄÀý×Ó
# modinfo snd-hda-intel
filename: /lib/modules/2.6.20-16-generic/kernel/sound/pci/hda/snd-hda-intel.ko
description: intel hda driver
license: gpl
srcversion: a3552b2df3a932d88ffc00c
alias: pci:v000010ded0000055dsv*sd*bc*sc*i*
alias: pci:v000010ded0000055csv*sd*bc*sc*i*
depends: snd-pcm,snd-page-alloc,snd-hda-codec,snd
vermagic: 2.6.20-16-generic smp mod_unload 586
parm: index:index value for intel hd audio interface. (int)
parm: id:id string for intel hd audio interface. (charp)
parm: model:use the given board model. (charp)
parm: position_fix:fix dma pointer (0 = auto, 1 = none, 2 = posbuf, 3 = fifo size). (int)
parm: probe_mask:bitmask to probe codecs (default = -1). (int)
parm: single_cmd:use single command to communicate with codecs (for debugging only). (bool)
parm: enable_msi:enable message signaled interrupt (msi) (int)
parm: enable:bool
¶ÔÎÒÃÇÀ´Ëµ±È½ÏÓÐÐËȤµÄÒÔ"parm"¿ªÍ·µÄÄÇЩ²¿·Ö£ºÏÔʾÁËÄ£¿éËù½ÓÊܵIJÎÊý¡£ÕâЩÃèÊö¶¼±È½Ï¼òÃ÷£¬Èç¹ûÏëÒª¸ü¶àµÄÐÅÏ¢£¬ÄǾͰ²×°kernelµÄÔ´´úÂ룬ÔÚÀàËÆÓÚ/usr/src/kernelversion/documentationµÄĿ¼ÏÂÄã»áÕÒµ½¡£
ÀïÃæ»áÓÐһЩÓÐȤµÄ¶«Î÷£¬±ÈÈçÎļþ/usr/src/kernelversion/documentation/sound/alsa/alsa-configuration.txtÃèÊöµÄÊDZ»Ðí¶àalsaÉùÒôÄ£¿é³ÐÈϵIJÎÊý£»/usr/src/kernelversion/documentation/kernel-parameters.txtÕâ¸öÎļþÒ²ºÜÓÐÓá£
ǰ¼¸ÌìÔÚubuntuÂÛ̳ÓÐÒ»¸öÀý×Ó£¬ËµµÄÊÇÈçºÎ½«²ÎÊý´«µÝµ½Ò»¸öÄ£¿é£¨Ïê¼ûhttps://help.ubuntu.com/community/hdaintelsoundhowto£©¡£Êµ¼ÊÉÏÎÊÌâµÄ¹Ø¼üÊÇsnd-hda-intel²ÎÊýÔÚÕýÈ·Çý¶¯ÉùÒôÓ²¼þʱÐèÒªÒ»µã²Ù×÷£¬¶øÇÒÔÚboot time¼ÓÔØÊ±»áÖÐÖ¹¡£½â¾ö·½·¨µÄÒ»²¿·ÖÊǽ«probe_mask=1Ñ¡Ï¸øÄ£¿é£¬Èç¹ûÄãÊÇÊÖ¶¯¼ÓÔØÄ£¿é£¬ÄãÐèÒªÊäÈ룺
# modprobe snd-hda-intel probe_mask=1
¸üÓпÉÄÜ£¬ÄãÔÚÎļþ/etc/modprobe.confÖзÅÖÃÕâÑùÀàËÆµÄÒ»ÐУºoptions snd-hda-intel probe_mask=1
Õâ"¸æËß"modprobeÿ´ÎÔÚ¼ÓÔØsnd-hda-intelÄ£¿éʱ°üº¬probe_mask=1Ñ¡Ïî¡£ÏÖÔÚµÄÓÐЩlinux°æ±¾½«ÕâÒ»ÐÅÏ¢·ÖÀë½ø/etc/modprobe.dϵIJ»Í¬ÎļþÖÐÁË£¬¶ø²»ÊÇ·ÅÈëmodprobe.confÖС£
/procϵͳÎļþ
linux kernelͬÑùͨ¹ý/procϵͳÎļþÀ´Õ¹Ê¾ÁËÐí¶àϸ½Ú¡£ÎªÁË˵Ã÷/proc£¬ÎÒÃÇÊ×ÏÈÐèÒªÀ©Õ¹ÎÒÃǶÔÓÚÎļþµÄÀí½â¡£³ýÁËÈÏΪÎļþ¾ÍÊÇ´æ´¢ÔÚÓ²ÅÌ£¨Ó²µúhdd´æ´¢Ã½½éÖ®Ò»£©»òÕßcd»òÕß´æ´¢¿Õ¼äÉϵij־ÃÐÅÏ¢Ö®Í⣬ÎÒÃÇ»¹Ó¦µ±°ÑËüÀí½âΪÈκοÉÒÔͨ¹ý´«Í³ÏµÍ³µ÷ÓÃÈ磺´ò¿ª¡¢¶Á¡¢Ð´¡¢¹Ø±ÕµÈ·ÃÎʵÄÐÅÏ¢£¬µ±È»ËüÒ²¿ÉÒÔ±»³£¼ûµÄ³ÌÐò·ÃÎÊ¡£
/proc֮ϵÄ"Îļþ"ÍêÈ«ÊÇkernelÐéÄâµÄÒ»¸ö²¿·Ö£¬¸øÎÒÃÇÒ»¸öÊӽǿÉÒÔ¿´µ½kernelÄÚ²¿µÄÊý¾Ý½á¹¹¡£Êµ¼ÊÉÏ£¬Ðí¶àlinuxµÄ±¨¸æ¹¤¾ß¾ùÄܹ»ºÜºÃµØ³ÊÏÖÔÚ/procϵÄÎļþÖÐѰµ½µÄ¸ñʽ»¯°æ±¾µÄÐÅÏ¢¡£±ÈÈ磬һÁÐ/proc/modules½«Õ¹Ê¾Ò»Áе±Ç°¼ÓÔØµÄÄ£¿é¡£
ͬÑùµÄ£¬/proc/meminfoÌṩÁ˹ØÓÚÐéÄâ´æ´¢ÏµÍ³µ±Ç°×´Ì¬µÄ¸ü¶àϸ½ÚÐÅÏ¢£¬¶øÀàÈçvmstatµÄ¹¤¾ßÔòÊÇÒÔÒ»ÖÖ¸ü¼Ó¿ÉÀí½âµÄ·½Ê½ÌṩÁËÏàͬµÄһЩÐÅÏ¢£»/proc/net/arpÏÔʾÁËϵͳarp cacheµÄµ±Ç°ÄÚÈÝ£¬´ÓÃüÁîÐÐÀ´Ëµ£¬arp -aÏÔʾµÄÒ²ÊÇÏàͬµÄÐÅÏ¢¡£
ÓÈÆäÓÐÒâ˼µÄÊÇ/proc/sysϵÄ"Îļþ"¡£/proc/sys/net/ipv4/ip_forwardϵÄÉèÖøæËßÎÒÃÇkernelÊÇ·ñ½«×ª·¢ipÊý¾Ý°ü£¬Ò²¾ÍÊÇ˵ÊÇ·ñ°çÑÝÍø¹ØµÄ×÷Óá£ÏÖÔÚ£¬kernel¸æËßÎÒÃÇÕâÊǹرյģº
# cat /proc/sys/net/ipv4/ip_forward
0
µ±Äã·¢ÏÖÄã¿ÉÒÔ¶ÔÕâЩÎļþдÈëµÄʱºò£¬Äã»á¾õµÃ¸ü¼ÓÓÐÒâ˼¡£¼ÌÐø¾ÙÀýÀ´Ëµ£º
# echo 1 > /proc/sys/net/ipv4/ip_forward
½«ÔÚÔËÐеÄkernelÖдò¿ªip ת·¢£¨ip forwarding£©
³ýÁËʹÓÃcatºÍechoÀ´¼ì²éºÍ¸üÕý/proc/sysϵÄÉèÖÃÒÔÍ⣬ÄãÒ²¿ÉÒÔʹÓÃsysctlÃüÁ
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
ÕâµÈͬÓÚ£º
# cat /proc/sys/net/ipv4/ip_forward
0
Ò²µÈͬÓÚ£º
# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
»¹µÈͬÓÚ£º
# echo 1 > /proc/sys/net/ipv4/ip_forward
ÐèҪעÒâµÄÊÇ£¬ÒÔÕâÖÖ·½Ê½ÄãËù×öµÄÉèÖøıäÖ»ÄÜÓ°Ï쵱ǰÔËÐеÄkernelµÄ£¬µ±rebootµÄʱºò¾Í²»ÔÙÓÐЧ¡£Èç¹ûÏëÈÃÉèÖÃÓÀ¾ÃÓÐЧ£¬½«ËüÃÇ·ÅÖÃÔÚ/etc/sysctl.confÎļþÖС£ÔÚboot timeʱ£¬sysctl½«×Ô¶¯ÖØÐÂÈ·¶¨ËüÔÚ´ËÎļþÏÂÕÒµ½µÄÈκÎÉèÖá£
/etc/sysctl.confϵĴúÂëÐдó¸ÅÊÇÕâÑùµÄ£ºnet.ipv4.ip_forward=1
ÐÔÄܵ÷ÓÅ£¨performance tuning£©
ÓÐÕâÑùÒ»¸ö˵·¨£º/proc/sysÏ¿ÉдÈëµÄ²ÎÊýÔÐÓýÁËÕû¸ölinuxÐÔÄܵ÷ÓŵÄÑÇÎÄ»¯¡£ÎÒ¸öÈ˾õµÃÕâÖÖ˵·¨Óеã¹ý¿ä£¬µ«ÕâÀï»áÓм¸¸öÄãȷʵºÜÏëÒ»ÊÔµÄÀý×Ó£ºoracle 10gµÄ°²×°ËµÃ÷£¨www.oracle.com/technology/obe/obe10gdb/install/linuxpreinst/linuxpreinst.htm£©ÒªÇóÄãÉèÖÃÒ»×é²ÎÊý£¬°üÀ¨£ºkernel.shmmax=2147483648 Õ⽫¹«Óô洢Æ÷µÄ´óСÉèÖÃΪ2gb¡££¨¹«Óô洢Æ÷ÊÇ´¦ÀíÆÚÄÚµÄͨÐÅ»úÖÆ£¬ÔÊÐí´æ´¢µ¥ÔªÔÚ¶à¸ö½ø³ÌµÄµØÖ·¿Õ¼äÄÚͬʱ¿ÉÓã©
ibm 'redpaper'ÔÚlinuxÐÔÄܺ͵÷ÓÅ·½ÃæµÄ˵Ã÷£¨www.redbooks.ibm.com/abstracts/redp4285.html£©ÔÚµ÷½Ì/proc/sysϵIJÎÊý·½Ãæ¸ø³öÁ˲»ÉÙ½¨Ò飬°üÀ¨£ºvm.swappiness=100 Õâ¸ö²ÎÊý¿ØÖÆ×Å´æ´¢Ò³ÈçºÎ±»½»»»µ½´ÅÅÌ¡£
һЩ²ÎÊý¿ÉÒÔ±»ÉèÖôӶøÌá¸ß°²È«ÐÔ£¬Èçnet.ipv4.icmp_echo_ignore_broadcasts=1 Ëü"¸æËß"kernel²»±ØÏìÓ¦icmpÇëÇ󣬴ӶøÊ¹µÃÄãµÄÍøÂçÃâÊÜÀàÈçsmurf¹¥»÷Ö®ÀàµÄ¾Ü¾ø·þÎñÆ÷(serverÍøÂç×ÊÔ´ÏÂÔØ)£¨denial-of-service£©Ð͹¥»÷¡£
net.ipv4.conf.all.rp_filter=1 ÔòÊÇ"¸æËß"kernel¼ÓÇ¿ÈëÕ¾¹ýÂË£¨ingress filtering£©ºÍ³öÕ¾¹ýÂË£¨egress filtering£©
¡¾¿´¿´ÕâÆªÎÄÕÂÔڰٶȵÄÊÕ¼Çé¿ö¡¿
Ïà¹ØÎÄÕÂ
- ÉÏһƪ£º ÌùƬ¿É±äµçÈÝÆ÷
- ÏÂһƪ£º WindowsµÄ20¸öÌØÊâÖ´ÐÐÃüÁî