这个命令应该需要root权限来执行,通常在/sbin或/usr/sbin目录下。默认情况下,普通用户的PATH环境变量不包含它们,所以显示找不到。
B. linux操作系统中,加载和删除内核模块的命令是什么。
modprobe命令
Linux命令:modprobe 。
功能说明:自动处理可载入模块。
语法:modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值]。
补充说明:modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。
内容
1、modprobe 命令是根据depmod -a的输出/lib/moles/version/moles.dep来加载全部的所需要模块。
2、删除模块的命令是:modprobe -r filename。
3、系统启动后,正常工作的模块都在/proc/moles文件中列出。使用lsmod命令也可显示相同内容。
4、在内核中有一个“Automatic kernel mole loading"功能被编译到了内核中。当用户尝试打开某类型的文件时,内核会根据需要尝试加载相应的模块。/etc/moles.conf或 /etc/modprobe.conf文件是一个自动处理内核模块的控制文件。
modprobe命令主要用于在Linux 2.6内核中加载和删除Linux内核模块。通过此命令用户可以轻松地加载和删除Linux内核模块,同时使用此命令加载Linux内核模块时,Linux内核会自动解决内核模块之间的依赖关系,将相互依赖的模块自动加载,如下所示:
1) 加载RAID1阵列级别模块:
[root@rhel5 boot]# modprobe raid1
2) 显示已加载的RAID1阵列级别模块:
[root@rhel5 boot]# lsmod |grep raid1 raid1 25153 0
3) 删除RAID1阵列级别模块:
[root@rhel5 boot]# modprobe -r raid1
4) 显示RAID1阵列级别模块:
[root@rhel5 boot]# lsmod |grep raid1
modprobe命令在加载模块时会自动解决依赖的模块。当加载的模块需依赖另一个模块时,系统会自动将此模块加载。而当用户使用insmod命令加载模块时,则不会自动解决相对应的依赖模块。
modprobe命令中的"-r"参数表示删除指定模块,"-c"参数表示显示/etc/modprobe.conf配置文件的参数,"-C"参数表示指定内核配置文件,"-f"表示覆盖,"-l"表示显示模块的绝对路径。
[root@rhel5 boot]# modprobe -l|grep raid /lib/moles/2.6.18-8.el5/kernel/drivers/md/raid0.ko /lib/moles/2.6.18-8.el5/kernel/drivers/md/raid456.ko /lib/moles/2.6.18-8.el5/kernel/drivers/md/raid1.ko /lib/moles/2.6.18-8.el5/kernel/drivers/md/raid10.ko /lib/moles/2.6.18-8.el5/kernel/drivers/scsi/megaraid.ko /lib/moles/2.6.18-8.el5/kernel/drivers/scsi/aacraid/aacraid.ko /lib/moles/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_mbox.ko /lib/moles/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_mm.ko /lib/moles/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_sas.ko /lib/moles/2.6.18-8.el5/kernel/drivers/scsi/raid_class.ko
以上命令表示显示系统中所有的编译模块,并过滤包含有raid字符串的模块。
C. linux系统中哪个命令可以用来加载驱动程序
在2.4内核中,加载驱动命令为:insmod ,删除模块为:rmmod;
在2.6以上内核中,除了insmod与rmmod外,加载命令还有modprobe;
insmod与modprobe不同之处:
insmod 绝对路径/××.o,而modprobe ××即可,不用加.ko或.o后缀,也不用加路径;最重要的一点是:modprobe同时会加载当前模块所依赖的其它模块;
lsmod查看当前加载到内核中的所有驱动模块,同时提供其它一些信息,比如其它模块是否在使用另一个模块。
D. 关于linux挂载文件,好像使用vb写的
这是xshell 脚本,用于远程登录。
简单来说 xsh.Screen.Send "一个字符串"
他实际就是用来发送一个字符串。其效果等价于手工输入。
insmod 是linux 加载内核模块的命令。
"insmod sunrpc.ko" & VbCr
就等同于 用键盘输入insmod sunrpc.ko再加上换行(VbCr)
执行后即加载 sunrpc.ko 模块。
xsh.Session.Sleep 1000 让交互环境等待1秒,目的是等待上一条命令执行结束。
后面几条同理 。
mount -o nolock -t nfs 192.168.1.53:/tmp /mnt
命令 就是挂载网络文件系统到本地/mnt目录,网络文件系统 位于 192.168.1.53 主机上的 /tmp 文件夹。
前面加载的
lockd.ko (NFS锁定管理守护程序(lockd))
nfs.ko(NFS即NetFileSystem)
sunrpc.ko(SUN Remote Procere Call ,SUN远程过程调用)
都是为mount做准备,即让内核支持 lockd ,nfs。
E. make mole_install和 insmod的区别
我觉得差别的话,你可以看Makefile里面moles_install命令是怎么安排工作,比如先完成哪个,后完成哪个,(这是比较自动的方式来完成)然后对比单独的insmod。
另外,有一种情况区别比较大,就是如果模块比较大,要分成几个xxx.ko文件,这时候如果用
make moles_install的方式会把这几个xxx.ko按照既定的顺序insmod上去。而如果是自己手动逐个insmod的话,可能会有次序错误的问题出现,(主要原因是这些xxx.ko之间有些依赖关系,后来的依赖先到的)当然一般情况下这个问题也比较容易解决。
F. Linux职业认证考试有关
Linux职业认证考试102的必考点1. /proc/interrupts 文件显示当前系统中正在使用的中断。
2. Linux支持标准串/并口和游戏棒口。 /dev目录下对应每个设备/端口有一个文件。setserial命令用于显示修改串口配置。
3. dmesg命令可显示Linux在启动时发现了哪些硬件。
4. fdisk用于硬盘分区。 newe2fs用于建立文件系统。 mount用于将分区挂在总文件树上。
5. ifconfig是最常用的网络配置工具。 ping通过发送ICMP消息观察一台网上机器是否可被连通。 RedHat的sndconfig用于配置声卡。 minicom用于配置modem.
6. PPP协议是最通用的串行通讯协议。 /etc/ppp/options中有PPP的配置信息。
PAP(Password Authentication Protocol)和CHAP(Challenge Handshake Authentication Protocol)是PPP下最流行的两个认证协议。
系统安装和软件包安装
7. hda 表示第一个IDE盘, hda1是它的第一个分区。 sda表示第一个SCSI盘, sda1是它的第一个分区。
8. swap分区的大小应至少和内存大小一样。 root分区应尽量小。data/user等分区越细, 备份就越容易。
9. 分区完成后, 可以用mke2fs建立文件系统。
10. /etc/lilo.conf 中有Lilo的配置信息。 编辑完此文件后必须运行/sbin/lilo安装LILO bootloader.
11. tarball是最方便的打包工具。 "x"选项用于解包, "c" 选项用于打包, "v"选项提供更多过程信息。 "f"选项用于指明包文件名。
12. make使用Makefile文件提供的编译参数命令编译系统。 "configure"脚本用于软件的环境配置。
13. 动态共享库方便不同的软件共享库函数, 而且在库升级时, 使用它的软件无需重新编译。 ldd命令用于显示软件的共享库使用情况。 ldconfig命令用于更新维护系统的共享库数据缓存(cache of shared library data)。
"ldconfig -p"显示当前的共享库缓存。
14. 软件包管理工具有RedHat的RPM和Debian的dpkg.
15. rpm选项包括:
-i 安装包-e 卸载包-V 验证包的安装情况 (-Va验证所有包的安装情况)
-q 查寻哪个包有哪个文件 (-qf 查寻哪个文件属于哪个包 )
-b 建立包-p 显示包的信息。
16. dpkg (略)
内核
17. lsmod命令显示系统中已装载的模块。 insmod命令用于装载模块。rmmod命令用于卸载模块。 modinfo用于显示模块的有关信息。
18. modprobe工具可根据模块的依赖情况装载模块。 depmod 显示模块的依赖情况。
19. conf.moles 和 moles.conf 没有任何区别。 不同的Linux发布商使用不同的文件。
20. 内核通常使用linux-x.y.z命名, x.y.z 代表版本号。
21. "make config" 提供一字符界面用于配置内核。
22. "make xconfig"提供一X图形界面用于配置内核。
23. "make dep" 用于建立内核文件的依赖关系。 编好新内核后, 要修改/etc/lilo.conf, 以使用新内核。
文本编辑,处理和打印
24. vi的方向键:
h ——左
l ——右
j ——下
k ——上
25. vi的命令:
c -修改文本
d -删除文本
i -插入文本
o -在当前行下插入一新行
O -在当前行上插入一新行
p -将缓冲区内容插入
r -字符替换
R -替换模式
u - undo
x -删除字符
y -拷贝入缓冲区
26. The lpc utility is the main one used to manage the print service,while lpq is the primary tool for looking at and interacting with the print queue.
27. The lpr command is used to submit jobs to the print service, and there are a wide number of options that can be used with it, including:
-b to suppress a banner
-K to specify a number of copies to print
-# the same as -K
-m to send error messages via mail
-T to signify a title page
-w to define the width
28. The /etc/printcap file is a database defining what each known printer is capable of. It is read once by lpd at starup.
29. The lpd.perms file hods the permissions for the lpd service and can affect the operation as such utilities as lpc and lpq.
30. The lpd.conf file is used to configure the actual lpd service. There are 180 options that can be configured.
31. The lprm command is used to remove print jobs, and lprm -a will attempt to remove all spooled jobs.
32. /etc/profile在用户登陆时被执行,然后不同的SHELL会执行用户home下的对应配置文件.如bash依次查找.bash_profile, .bash_login和.profile.
33. .bashrc在SHELL运行开始时被执行. .inputrc用于键盘配置.
34. SHELL脚本必须有可执行权限,或是直接被SHELL读入执行. 0代表正常退出.
35. SHELL脚本中应用"#!"说明解释器位置(如#!/usr/bin/perl)
36. $1代表第一个命令行参数. shift命令将$2变为$1,依此类推.
37. test或者[]可用于进行逻辑测试. if-fi构成判断块.
X窗口
38. "X -showconfig"显示X的配置情况. startx用于启动X窗口.
39. xterm参数:
-bd设置边界颜色
-bg设置后景色
-fg设置前景色
-fn设置字体
网络
40. /etc/services 提供端口号与服务名的对应. 如 80 - http, 23 - telnet...
41. DHCP用于自动分配IP. IP地址有32位, 8位一组. 通过前8位将IP地址分为不同类组:
1-126 A 类
128-191 B 类
192-223 C 类
在Internet上的IP地址必须独立(UNIQUE).
42. 一些IP地址可用于内部网络:
10.x.x.x A 类
172.16.x.x B 类
192.168.x.x C 类
43. netmask用于识别一个主机是否属于当前网络. 缺省netmask为:
A 类 255.0.0.0
B 类 255.255.0.0
C 类 255.255.255.0
网络服务
44. inetd 是超级daemon, 调用其他服务. 它使用/etc/inetd.conf配置文件决定应管理哪些服务.
45. hosts.allow 和 hosts.deny 用于访问控制. NFS 使用/etc/exports提供的配置决定export那些文件系统. SMB用于与WINDOWS主机通讯. NMB用于识别WINDOWS主机提供的资源.
46. sendmail.cf 是 sendmail的主要配置文件. /etc/aliases 提供mail地址别名. /var/spool/mqueue 中存有mail的消息队列. mailq用于检查mail的消息队列. newaliases 用于建立新的别名文件.
47. Apache提供WEB服务. access.conf, httpd.conf和srm.conf是它的配置文件.
安全
48. /etc/profile 中的umask值应小心配置, 尽量减小新文件的权限.
49. 对于SUID和SGID程序要特别小心, 尽量用权限最小的user和group.
50. shadow password用于提高 /etc/passwd的安全性. 应使用quotas对用户的磁盘空间进行限制. 应有对密码的安全性检查, 保证密码至少有6-8个字符, 并定期更换密码.
注:102为考试代号,并非是指有102个考点
G. linux内核操作的主要命令及作用
初期linux的驱动程序是必须编译在内核之中的(相应地驱动程序提供的是源程序以符合GNU规则,例如DFE530TX网卡的驱动就是ftp://www.scyld.com/pub/network/via-rhine.c),后来推广使用以后一则感觉不方便、二则普通用户也没有能力自己编译内核、三则当时内核不能太大,里面驱动程序太多超过1M的话会瘫掉,于是发明了模块(moles),就是事先将驱动程序编译成mole,使用时再将他们装载到系统里以避免重新编译内核。再经过发展以后,几乎内核里的大多数功能都能以模块形式存在,例如读写NTFS、支持PPP协议等等,所以模块功能已经不局限于驱动程序了。
modprobe功能就是,对系统里的模块进行增、减、安装、删除等等操作。
H. 在linux中 加载/卸载模块可以使用什么命令
insmod :加载模块,该命令可以加入适当的参数;
rmmod:卸载模块;
I. arm linux中 mknod insmod mount区别与用法cat/proc/devices是什么意思谢谢
mknod 是创建设备节点命令
insmod 是加载内核模块的命令
mount 是挂载命令
编译后的内核模块xxxxx.ko 使用insmod加载,然后再/dev 下创建设备节点或者叫设备文件(使用的命令就是mknod)。
mount挂载用的和上面2个没啥联系、
cat/proc/devices 是查看内核使用的主设备号
J. 如何高效阅读linux设备驱动程序
第一个驱动:在用户空间加载和移除驱动
====================================
现在将展示如何完成第一个驱动,在内核中将看作模块
新建一个文件nothing.c如下
#include <linux/mole.h>
MODULE_LICENSE("Dual BSD/GPL");
2.6.x版本后的内核,编译模块会略微复杂一点。首先,需要有一份完整的、编译过的内
核源码树。在下面的文字中,将假设使用2。6。8版本的内核。
其次,需要一个makefile文件,本例中的makefile文件名为Makefile,内容如下:
obj-m := nothing.o
与之前版本的内核不同,现在编译模块时使用的内核需要与模块将要加载的内核相同。
编译上面的文件,可以使用命令:
make -C /usr/src/kernel-source-2.6.8 M=pwd moles
这个极其简单的模块就属于内核空间,一旦其被加载,它就是内核空间的一部分。
在用户空间,可以使用下面的命令加载它,需要root权限:
insmod nothing.ko
insmod 这个命令用于为内核加载模块。尽管现在我们已经加载了nothing.ko这个模块,
但是这个模块毕竟没有任何用处。
可以通过查看系统里已加载的模块来检查是否已经成功加载了nothing.ko
lsmod
最后,需要卸载该模块时使用下面的命令:
rmmod nothing
重新使用lsmod,可以发现nothing模块已经不在了。
"Hello world"驱动:在内核空间加载和移除驱动
===========================================
当一个模块设备驱动加载到内核,将执行一些初始的工作,如重新设置设备,reserving
RAM, reserving interrupts, reserving input/output ports, etc.
这些工作得以在内核空间执行,必须要有两个函数存在:mole_init 和
mole_exit;它们对应于用户空间的insmod和rmmod命令。总之,用户命令insmod和
rmmod使用了内核空间的函数mole_init和mole_exit.
来看一个经典的程序 HELLO WORLD:
//hello.c
#include <linux/init.h>
#include <linux/mole.h>
#inlucde <linux/kernel.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk("<1> Hello world!\n");
return 0;
}
static void hello_exit(void)
{
printk("<1> Bye, cruel world!\n");
}
mole_init(hello_init);
mole_exit(hello_exit);
其中hello_init 和 hello_exit 函数可以取任意名,但为了加载和移除功能是更容易识
别,它们作为参数传递给函数mole_init 和 mole_exit.
printk函数与printf函数非常类似,但printk只工作在内核中。<1>表示打印信息
为最高优先级(数字越低,优先级越高)。这样,不仅可以在内核系统日志中看到该
打印信息,还能在系统控制台接收到该打印信息。