LinuxÖеĵØÖ·¿Õ¼ä
LinuxÖеĵØÖ·¿Õ¼ä
ÓÐÕâôһϵÁеÄÎÊÌ⣬ÊÇ·ñÔÚÀ§ÈÅ×ÅÄ㣺Óû§³ÌÐò±àÒëÁ¬½ÓÐγɵĵØÖ·¿Õ¼äÔÚʲô·¶Î§ÄÚ£¿Äں˱àÒëºóµØÖ·¿Õ¼äÔÚʲô·¶Î§ÄÚ£¿Òª¶ÔÍâÉè½øÐзÃÎÊ£¬I/OµÄµØÖ·¿Õ¼äÓÖÊÇʲôÑùµÄ£¿
ÏȻشðµÚÒ»¸öÎÊÌâ¡£Linux×î³£¼ûµÄ¿ÉÖ´ÐÐÎļþ¸ñʽΪelf(Executable and Linkable Format)¡£ÔÚelf¸ñʽµÄ¿ÉÖ´ÐдúÂëÖУ¬ld×ÜÊÇ´Ó0x8000000¿ªÊ¼°²ÅųÌÐòµÄ“´úÂë¶Î”£¬¶Ôÿ¸ö³ÌÐò¶¼ÊÇÕâÑù¡£ÖÁÓÚ³ÌÐòÖ´ÐÐʱÔÚÎïÀíÄÚ´æÖеÄʵ¼ÊµØÖ·£¬ÔòÓÉÄÚºËΪÆä½¨Á¢ÄÚ´æÓ³ÉäʱÁÙʱ·ÖÅ䣬¾ßÌåµØÖ·È¡¾öÓÚµ±Ê±Ëù·ÖÅäµÄÎïÀíÄÚ´æÒ³Ãæ¡£
ÎÒÃÇ¿ÉÒÔÓÃLinuxµÄʵÓóÌÐòobjdump¶ÔÄãµÄ³ÌÐò½øÐз´»ã±à£¬´Ó¶øÖªÏþÆäµØÖ··¶Î§¡£
ÀýÈ磺¼Ù¶¨ÎÒÃÇÓÐÒ»¸ö¼òµ¥µÄC³ÌÐòHello.c
# include
greeting ( )
{
printf(“Hello,world!\n”);
}
main()
{
greeting();
}
Ö®ËùÒÔ°ÑÕâÑù¼òµ¥µÄ³ÌÐòд³ÉÁ½¸öº¯Êý£¬ÊÇΪÁË˵Ã÷Ö¸ÁîµÄ×ªÒÆ¹ý³Ì¡£ÎÒÃÇÓÃgccºÍld¶ÔÆä½øÐбàÒëºÍÁ¬½Ó£¬µÃµ½¿ÉÖ´ÐдúÂëhello¡£È»ºó£¬ÓÃLinuxµÄʵÓóÌÐòobjdump¶ÔÆä½øÐз´»ã±à£º
$objdump –d hello
µÃµ½µÄÖ÷ҪƬ¶ÎΪ£º
08048568 :
8048568: pushl %ebp
8048569: movl %esp, %ebp
804856b: pushl $0x809404
8048570: call 8048474 <_init+0x84>
8048575: addl $0x4, %esp
8048578: leave
8048579: ret
804857a: movl %esi, %esi
0804857c :
804857c: pushl %ebp
804857d: movl %esp, %ebp
804857f: call 8048568&n
Ïà¹ØÎĵµ£º
7.1.1 Linux·ÖÇø¼ò½é
Ëùν·ÖÇø£¬¾ÍÊÇ´ÅÅÌÉϽ¨Á¢µÄÓÃÓÚ´æ´¢Êý¾ÝºÍÎļþµÄµ¥¶ÀÇøÓò²¿·Ö¡£´ÅÅÌ·ÖÇø¿ÉÒÔ·ÖΪÖ÷·ÖÇøºÍÀ©³ä·ÖÇø£¬ÆäÖÐÖ÷·ÖÇø¾ÍÊǰüº¬²Ù×÷ϵͳÆô¶¯Ëù±ØÐëµÄÎļþºÍÊý¾ÝµÄ´ÅÅÌ·ÖÇø£»À©³ä·ÖÇøÒ»°ãÓÃÀ´´æ·ÅÊý¾ÝºÍÓ¦ÓóÌÐòÎļþ¡£Ò»¸ö´ÅÅÌ×î¶à¿É·ÖΪ4¸ö·ÖÇø£¬×î¶à¿ÉÒÔÓÐ4¸öÖ÷·ÖÇø£¬¼´È«²¿·ÖÇø¶¼±»»®·ÖΪÖ÷·ÖÇø¡£Èç¹ ......
ÔÚLinux²Ù×÷ϵͳÏÂÐÞ¸ÄIP¡¢DNSºÍ·ÓÉÅäÖÃ
¡¡¡¡ifconfig eth0 ÐÂip
¡¡¡¡È»ºó±à¼/etc/sysconfig/network-scripts/ifcfg-eth0£¬ÐÞ¸Äip
¡¡¡¡Ò»¡¢ÐÞ¸ÄIPµØÖ·
¡¡¡¡[aeolus@db1 network-scripts]$ vi ifcfg-eth0
¡¡¡¡DEVICE=eth0
¡¡¡¡ONBOOT=yes
¡¡¡¡BOOTPROTO=static
¡¡¡¡IPADDR=219.136.241.211
¡¡¡¡NETMASK=255 ......
ºÜ¼òµ¥µÄÒ»¸ö³ÌÐò,subÄ£¿éÌṩÁ½¸öº¯Êýsub_integer,add_integer£¬²¢½«Æäµ¼³öµ½Äں˷ûºÅ±íÖУ¬sub_testÄ£¿é¶ÔÕâÁ½¸öº¯Êý½øÐе÷Óá£ÕâËãÊÇ×Ô¼ºÐ´µÄµÚÒ»¸öÄÚºËÄ£¿é³ÌÐò°É£¬¼ÍÄîÒ»ÏÂ.
sub.c:
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL") ......