资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Linux,的模块化机制,Linux,操作系统的内核是单一体系结构,(monolithic kernel),的,也就是说,整个内核是一个单独的非常大的程序。这样,系统的速度和性能都很好,但是可扩展性和可维护性就比较差。为了弥补单一体系结构的这一缺陷,,Linux,操作系统使用了一种全新的机制,模块,(module),机制,用户可以根据需要,在不需要对内核重新编译的情况下,模块可以动态地载入内核或从内核中移出。,内核模块:实验一,实验一:,编写一个内核模块,hello,,当用,insmod,命令插入模块时,会显示,hello world,!,hello.c,:,#define _NO_VERSION_,#define _KERNEL_,#define MODULE,#include,#include,int,init_module(void,),printk(hello,world!n);,return 0;,int,cleanup_module(void,),printk(goodbye.n,);,内核模块:实验一,对该文件进行编译:,gcc,c I/usr/src/linux-2.4/include Wall,hello.c,(,注:,-I,选项后面跟着头文件的路径,),生成,hello.o,模块文件,用下列命令将模块插入内核,(,需要,root,权限,),:,insmod,hello.o,加载模块,会看到输出:,hello world,!,dmesg,查看系统内核日志,请注意最后一行,lsmod,查看系统内核中的模块,看看有无,hello,模块,rmmod,hello,卸载模块,会输出:,goodbye,Dmesg,上述程序的功能仅仅是在内核系统日志中写了两句话,但这样简单的工作却是在核心态中完成的。如果你还认识不到其重要性,可以试试把,init_module,(),函数修改成,expr2.c,中的形式:,内核模块:实验二,expr2.c,:,#define _NO_VERSION_,#define _KERNEL_,#define MODULE,#include,#include,int,init_module,(),_,asm_(movb,$0xed,%al;out %al,$0x60);,_,asm_(movb,$7,%al;out %al,$0x60);,return 0;,内核模块:实验二,如果键盘不是,usb,接口的话,那么加载上面的模块后,键盘的,Caps Lock,NumLock,ScrollLock,三个指示灯,(,即键盘右上角的灯,),都会被点亮。这是我们在核心态绕过操作系统,直接对硬件进行操作的结果。在用户态程序中,想编写程序控制三个键盘指示灯是非常困难的,因为操作系统为了安全起见,会拦截一切对硬件的直接访问。因此,这可以证明内核模块确实是在核心态下执行的。,ssh,服务,ftp,服务,http,服务,Linux,的网络服务,ssh,(Secure Shell),在,rsh,(Remote Shell),的基础上对传输的数据进行加密,使其更加安全。,使用,ssh,服务,需要服务器端启动,ssh,服务,可通过,ps,ef,查看是否启动。,ssh,客户端的连接,ssh,服务,Redhat,9,的,ftp,服务器采用,vsftpd,可通过命令,rpm q,vsftpd,查看是否安装。,启动服务,/,sbin,/service,vsftpd,start,现在可通过,Leapftp,访问该服务。,配置文件,/etc/,vsftpd/vsftpd.conf,ftp,服务的根目录为,/,var,/ftp/,ftp,服务,源代码安装,rpm,包安装,二进制文件安装,Linux,下软件的安装,实例:,bison,的安装,在当前目录下有,bison-2.3.tar.gz,tar -,zxvf,bison-2.3.tar.gz,解压,cd,bison-2.3,./configure -prefix=/,usr,配置,根据配置信息生成,makefile,文件,make,根据,makefile,进行编译,make install,安装,在第三步配置时,,prefix,选项指明安装路径,,若不指明路径,默认安装在,/,usr,/local,下,源代码安装,rpm(redhat,package management),:红帽子公司提供的一种包管理器,实例:,gcc,的安装,当前目录下有,gcc-3.2.2-5.i386.rpm,文件,# rpm ,ivh,gcc-3.2.2-5.i386.rpm,rpm,包安装,扩展名为,.bin,文件是二进制的,它也是源程序经,编译后得到的机器语言。有一些软件可以发布为以,.bin,为后缀的安装包,例如,流媒体播放器,RealONE,。,#,chmod,+xr1p1_linux22_libc6_i386_a1.bin,# ./r1p1_linux22_libc6_i386_a1.bin,二进制文件的安装,
展开阅读全文