linuxÄÚºËprintkµ÷ÊÔ
linuxÄÚºËprintkµ÷ÊÔ£¨ÕªÂ¼¡¶Linux°²È«Ìåϵ·ÖÎöÓë±à³Ì¡·£©
linuxÄÚºËprintkµ÷ÊÔ£¨ÕªÂ¼¡¶Linux°²È«Ìåϵ·ÖÎöÓë±à³Ì¡·£©
1 printk¼°¿ØÖÆÌ¨µÄÈÕÖ¾¼¶±ð
º¯ÊýprintkµÄʹÓ÷½·¨ºÍprintfÏàËÆ£¬ÓÃÓÚÄں˴òÓ¡ÏûÏ¢¡£printk¸ù¾ÝÈÕÖ¾¼¶±ð£¨loglevel£©¶ÔÏûÏ¢½øÐзÖÀà¡£
ÈÕÖ¾¼¶±ðÓú궨Ò壬ÈÕÖ¾¼¶±ðºêÕ¹¿ªÎªÒ»¸ö×Ö·û´®£¬ÔÚ±àÒëʱÓÉÔ¤´¦ÀíÆ÷½«ËüºÍÏûÏ¢Îı¾Æ´½Ó³ÉÒ»¸ö×Ö·û´®£¬Òò´Ëprintk º¯ÊýÖÐÈÕÖ¾¼¶±ðºêºÍ¸ñʽ×Ö·û´®¼ä²»ÄÜÓжººÅ¡£
ÏÂÃæÊÇÁ½¸öprintkµÄÀý×Ó£¬Ò»¸öÓÃÓÚ´òÓ¡µ÷ÊÔÐÅÏ¢£¬ÁíÒ»¸öÓÃÓÚ´òÓ¡ÁÙ½çÌõ¼þÐÅÏ¢¡£
printk(KERN_DEBUG "Here I am: %s:%i\n", _ _FILE_ _, _ _LINE_ _);
printk(KERN_CRIT "I'm trashed; giving up on %p\n", ptr);
printkµÄÈÕÖ¾¼¶±ð¶¨ÒåÈçÏ£¨ÔÚlinux26/includelinux/kernel.hÖУ©£º
#defineKERN_EMERG"<0>"/*½ô¼±Ê¼þÏûÏ¢£¬ÏµÍ³±ÀÀ£Ö®Ç°Ìáʾ£¬±íʾϵͳ²»¿ÉÓÃ*/
#defineKERN_ALERT"<1>"/*±¨¸æÏûÏ¢£¬±íʾ±ØÐëÁ¢¼´²ÉÈ¡´ëÊ©*/
#defineKERN_CRIT"<2>"/*ÁÙ½çÌõ¼þ£¬Í¨³£Éæ¼°ÑÏÖØµÄÓ²¼þ»òÈí¼þ²Ù×÷ʧ°Ü*/
#defineKERN_ERR"<3>"/*´íÎóÌõ¼þ£¬Çý¶¯³ÌÐò³£ÓÃKERN_ERRÀ´±¨¸æÓ²¼þµÄ´íÎó*/
#defineKERN_WARNING"<4>"/*¾¯¸æÌõ¼þ£¬¶Ô¿ÉÄܳöÏÖÎÊÌâµÄÇé¿ö½øÐо¯¸æ*/
#defineKERN_NOTICE"<5>"/*Õý³£µ«ÓÖÖØÒªµÄÌõ¼þ£¬ÓÃÓÚÌáÐÑ¡£³£ÓÃÓÚÓ밲ȫÏà¹ØµÄÏûÏ¢*/
#defineKERN_INFO"<6>"/*ÌáʾÐÅÏ¢£¬ÈçÇý¶¯³ÌÐòÆô¶¯Ê±£¬´òÓ¡Ó²¼þÐÅÏ¢*/
#defineKERN_DEBUG"<7>"/*µ÷ÊÔ¼¶±ðµÄÏûÏ¢*/
extern int console_printk[];
#define console_loglevel ¡¡(console_printk[0])
#define default_message_loglevel¡¡ (console_printk[1])
#define minimum_console_loglevel¡¡ (console_printk[2])
#define default_console_loglevel¡¡ (console_printk[3])
ÈÕÖ¾¼¶±ðµÄ·¶Î§ÊÇ0¡«7£¬Ã»ÓÐÖ¸¶¨ÈÕÖ¾¼¶±ðµÄprintkÓï¾äĬÈϲÉÓõļ¶±ðÊÇ DEFAULT_ MESSAGE_LOGLEVEL£¬Æä¶¨ÒåÁгöÈçÏ£¨ÔÚlinux26/kernel/printk.cÖУ©£º
/*ûÓж¨ÒåÈÕÖ¾¼¶±ðµÄprintkʹÓÃÏÂÃæµÄĬÈϼ¶±ð*/
#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING ¾¯¸æÌõ¼þ*/
Äں˿ɰÑÏûÏ¢´òÓ¡µ½µ±Ç°¿ØÖÆÌ¨ÉÏ£¬¿ÉÒÔÖ¸¶¨¿ØÖÆÌ¨Îª×Ö·ûģʽµÄÖÕ¶Ë»ò´òÓ¡»úµÈ¡£Ä¬ÈÏÇé¿öÏ£¬“¿ØÖÆÌ¨”¾ÍÊǵ±Ç°µÄÐéÄâÖÕ¶Ë¡£
ΪÁ˸üºÃµØ¿ØÖƲ»Í¬¼¶±ðµÄÐÅÏ¢ÏÔʾÔÚ¿ØÖÆÌ¨ÉÏ£¬ÄÚºËÉèÖÃÁË¿ØÖÆÌ¨µÄÈÕÖ¾¼¶±ðconsole_loglevel¡£printkÈÕÖ¾¼¶±ðµÄ×÷ÓÃ
Ïà¹ØÎĵµ£º
1.Ê×ÏÈÊÇ»ñµÃlinuxÄÚºËÔ´Â룬ºÃÏñÊÇ·Ï»°£¬ÏÂÔØµØÖ·ÈçÏ£ºftp://ftp.kernel.org/pub/linux/kernel/v2.6/ÏÂÔØ£º
linux-2.6.16.22.tar.bz2 patch-2.6.22.6.bz2
ÉÏÃæÒ»²½ÐèҪ˵Ã÷µÄÊÇÒ»°ã¶øÑÔ£¬linuxÄں˵ĸ÷¸ö²¹¶¡ÎļþÊǸù¾Ýij¸ölinuxÄں˵İ汾ºÅÀ´×÷µÄpatch¡£
½«ÉÏÃæµÄÁ½¸öѹËõÎļþ½âѹ:
tar jxvf linux-2.6.22.ta ......
֮ǰװÍêwindowsºó¾Í·¢ÏÖlinuxµÄÆô¶¯ÏîÕÒ²»µ½ÁË£¬¿ªÊ¼Ê±£¬ÊµÔÚÊÇÎÞÄΰ¡£¡½á¹ûÖ»ºÃ֨װlinux£¡£¡ºÜ²Ë°É£¡£¡
ÏÖÔÚÖÕÓÚÖªµÀÁË£¬ÆäʵÊÇ¿ÉÒԺܼòµ¥µØ¾Í°ÑlinuxÕÒ»ØÀ´µÄ£¡
Õâ¸ö·½·¨Ö»ÏÞÓÚÓð²×°Å̵ÄÓû§£¡£¡£¡£¡
×°Èëlinux°²×°ÅÌ£¬ÒÔ¹âÇýÆô¶¯£¬½ ......
±¸·ÝMBR·ÖÇø
0. ±¸·ÝÓ²Å̵ķÖÇøÐÅÏ¢£º
#fdisk /dev/sda -l > /tem/sda.txt
¡¡
¡¡¡¡1.ʹÓÃfdisk -l È·¶¨MBRλÖÃ
¡¡
¡¡¡¡2.±¸·ÝMBR
¡¡
¡¡¡¡dd if=/dev/sda1 of=/root/mbr bs=512 count=1
¡¡
¡¡¡¡3.»Ö¸´MBR
¡¡
¡¡¡¡dd if=/root/mbr of=/dev/sda1 bs=512 count=1
¡¡
¡¡ ......
linuxµÄechoÃüÁî, ÔÚshell±à³ÌÖм«Îª³£ÓÃ, ÔÚÖÕ¶ËÏ´òÓ¡±äÁ¿valueµÄʱºòÒ²Êdz£³£Óõ½µÄ, Òò´ËÓбØÒªÁ˽âÏÂechoµÄÓ÷¨
echoÃüÁîµÄ¹¦ÄÜÊÇÔÚÏÔʾÆ÷ÉÏÏÔʾһ¶ÎÎÄ×Ö£¬Ò»°ãÆðµ½Ò»¸öÌáʾµÄ×÷Óá£
¸ÃÃüÁîµÄÒ»°ã¸ñʽΪ£º echo [ -n ] ×Ö·û´®
ÆäÖÐÑ¡Ïîn±íʾÊä³öÎÄ×Öºó²»»»ÐУ»×Ö·û´®ÄܼÓÒýºÅ£¬Ò²Äܲ»¼ÓÒýºÅ¡£ÓÃechoÃüÁîÊä³ö¼ÓÒýº ......
1.fork
´´½¨Ò»¸öнø³Ì
2.clone
°´Ö¸¶¨Ìõ¼þ´´½¨×Ó½ø³Ì
3.execve
ÔËÐпÉÖ´ÐÐÎļþ
4.exit   ......