Linux É豸Çý¶¯³ÌÐò½ø½×£¨0£©
ºÜ¾ÃûÓÐд¼¼Êõ²©ÎÄÁË£¬´ÓÕâÀ↑ʼÎÒµÄÑо¿ÉúÉúÑÄ£¬×ªÑÛ¾ÍÒªÔÚÖ°³¡ÉÏÑø¼Òºý¿Ú£¬Éú»îÕæµÄ²»ÈÝÒ×£¬ÐҺû¹Óм¼ÊõÏà°éΪÎé¡£
ÓÉÓÚ¹¤×÷µÄ¹ØÏµ£¬ÖÕÓÚ½Ó´¥µ½linuxÍøÂçºÍkernelµÄ±à³Ì£¬×ÜÌåÀ´Ëµ×ÜÊÇÒ»¸öºÃµÄÆõ»ú¡£ÈÃÎÒÄܹ»ÉîÈë²Ù×÷ϵͳÄںˡ£×ö¹ýÒ»¶Îʱ¼äµÄÓû§³ÌÐòµÄ¿ª·¢£¬×ÜÊÇÔÚWindowsƽ̨ÉÏ£¬ÖÕÓÚÓлú»áÔÚlinuxÉÏ×öµã¶«Î÷£¬»¹ÊǺÜÐ˷ܵġ£
Ê×ÏÈÊÇÒ»¸öHello WorldµÄÄں˳ÌÐò£¬È»ºó¾ÍÊÇÒ»´ó¶Ñ±àÒëµÄÎÊÌ⣬ÓÉÓÚûÓнӴ¥¹ýLinuxËùÒÔ»¨·ÑÁ˺ܶàʱ¼äÔÚÕâÉÏÃæ¡£
1£© hellokernel.c ÎҵıàÒë»·¾³ÊÇÔÚÐéÄâµÄLinux Redhat 5.0 ÉϱàÒëµÄ
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL")£» //Õâ¸öºêµÄÒâ˼ÎÒ»¹ÊDz»Ì«Ã÷°×£¬Ö±½Ó³Á˹ýÀ´
static int hello_init(void)
{
printk(KERN_ALERT"Hello,world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodby,cruel world\n");
}
module_init(hello_init); //µ±ÄÚºËÄ£¿é±»×°ÔصÄʱºòµ÷ÓÃhello_initº¯Êý
module_exit(hello_exit); //µ±ÄÚºËÄ£¿é±»Ð¶ÔصÄʱºòµ÷ÓÃhello_exitº¯Êý
2£©Ô´´úÂë×¼±¸ºÃÁËÖ®ºóÏÂÃæ¾ÍÊDZàÒëµÄÎÊÌâ
step1: ×¼±¸ºÃlinuxÄÚºËÔ´´úÂ룬עÒâ°æ±¾ºÅÒªÓëÖ÷»úÒ»Ö£¬ÕâÀïÒòΪÎÒÖ±½ÓÔÚÖ÷»ú£¨Linux»úÆ÷£©ÉϱàÒ룬ËùÒÔ²»´æÔÚ½»²æ±àÒëµÄÎÊÌâ¡£²é¿´linux»úÆ÷µÄÄں˰汾ºÅÓкܶàÃüÁÎÒÓõÄÊÇuname -r
[root@localhost ~]# uname -r
2.6.18-128.el5
¿´µ½Äں˰汾֮ºó¾Í¿ÉÒÔÔÚ¹ÙÍøÉÏÏÂÔØ¶ÔÓ¦°æ±¾µÄÄںˡ£http://www.kernel.org/pub/linux/kernel/v2.6/ÔÚÕâÀïÕÒµ½linux-2.6.18.tar.bz2 Õâ¸ö°æ±¾£¬È»ºó½âѹµ½/usr/src/Ŀ¼Ï¡£½âѹÃüÁîÊÇtar -xvf linux-2.6.18.tar.bz2¾Í¿ÉÒÔÁË¡£
step2: ×¼±¸¹¤×÷×öºÃÖ®ºóÊ×ÏÈÊDZàÒëÄںˣ¬Èç¹ûÄãÏÂÔØµÄÄں˰汾ºÍÄãµÄÖ÷»ú°æ±¾ÊÇÒ»Ò»¶ÔÓ¦µÄ£¬ÄÇô±àÒëÆðÀ´ºÜ¼òµ¥µÄ£¬Ò»°ãûÓÐʲôÎÊÌâµÄ£¬Ö÷Òª¾ÍÊǼ¸¸ömakeÃüÁ
make oldconfig
make prepare
make scripts
step 3: ÏÂÃæ¾ÍÊÇÔÚhellokernel.cµÄĿ¼Ï±àдMakefileÎļþ£¬×¢ÒâMakefileµÄµÚÒ»×Öĸ±ØÐë´óд£¬ÎÒ¾ÍÊÇÔÚÕâÀï·¸´í£¬²éÁ˰ëÌìû²é³öÎÊÌâ¡£MakefileµÄ±àд¶ÔÓÚÕâ¸öÀý×Ӻܼòµ¥£¬µ«ÊÇÈç¹û¸´ÔÓµÄÄÚºËÄ£¿éµÄ¿ª·¢»¹ÊÇÒªºÃºÃѧϰÔõô±àдµÄ¡£
Æäʵ¾ÍÊǼòµ¥µÄ¼¸¾ä»°¾ÍokÁË£º
obj-m := hellokernel.o //Ä¿±êÄ£¿éµÄ±àÒëÀ´×ÔÓÚhellokernel.oµÄÎļþ, hellokerne
Ïà¹ØÎĵµ£º
°üº¬3¸öÎļþ¼Ð
Ŀ¼×éÖ¯½á¹¹ÈçÏ£º
inc/hello.h
main/main.c, Makefile
src/hello.c
ÎļþÄÚÈÝÈçÏ£º
hello.h:
void hello(char name[]);
main.c:
#include <stdio.h>
#include "../inc/hello.h"
// The second hello.h should in ""
int main()
{
hello("GCC");
printf("Haha Linux Ub ......
Ò».²é¿´ËùÓÐÓ²Å̵Äuuid
ls -all /dev/disk/by-uuid
longseakerµÄʵÀý
lrwxrwxrwx 1 root root 10 2009-09-19 08:17 05434a61-8a78-4ee5- a5db-6a49079b9e3d -> ../../sda5
lrwxrwxrwx 1 root root 10 2009-09-19 08:17 07D8-0104 -> ../../sda1
lrwxrwxrwx 1 root root 10 2009-09-19 08:17 18201249-998a-4bb1 ......
½ñÌì¿´µ½Ê¦ÐÖ¹¤Î»ÉÏÓб¾Linux Kernel In a Nutshell£¬»¹ÊÇȫӢµÄÓ°Ó¡°æ£¬ËùÒԾͽè¹ýÀ´¿´¿´£¬·¢ÏÖÏÖÔÚ¿´Ó¢ÎĵÄÊé½¥½¥ÊÊÓ¦ÁË£¬»¹ÊDZȽÏÈÝÒ׵ģ¬ÊéÖпªÊ¼½éÉÜÈçºÎ±àÒëLinuxÄںˣ¬LinuxÄں˴óÈýµÄʱºòҲѧ¹ý±àÒë¹ý£¬µ«Êǵ±Ê±±àÒë±È½Ï¼òµ¥£¬Õâ´Î¾ö¶¨ÔÙÖØÍ·µ½Î²ºÃºÃ±àÒëһϣ¬Ê×ÏÈÏÂÔØlinux kernel£¬ÔÙÓÃsecureCRTÉÏ´«µ½Ubuntu 8. ......
°²×°£¬Éý¼¶ºÍÐ¶ÔØÓ¦ÓÃÈí¼þÊÇÓ°ÏìÓû§¶Ô²Ù×÷ϵͳÆÀ¼ÛµÄ¾ö¶¨ÐÔÒòËØÖ®Ò»¡£¶ÔÓÚÈÕ½¥Á÷ÐÐµÄ GNU/Linux ²Ù×÷ϵͳ£¬ÓµÓмò½àÇ¿´óµÄÈí¼þ°ü¹ÜÀí»úÖÆ¹¦²»¿Éû¡£±¾ÎÄ´Ó»ù±¾µÄ rpm/dpkg ÃüÁîÐгö·¢£¬ÒÔ RHEL ºÍ Ubuntu
ΪÀý£¬½éÉܵäÐÍ Linux ϵͳÖÐÓ¦ÓÃÈí¼þµÄ¹ÜÀíºÍʹÓá£
RPM/DPKG Á½´óÕóÓª¼ò½é
ÔÚ GNU/Linux( ÒÔϼò³Æ Linux) ²Ù× ......