linux自动加载模块 linux动态加载模块的命令
大家好,今天来为大家分享linux自动加载模块的一些知识点,和linux动态加载模块的命令的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
Linux如何在系统启动时自动加载模块
为搞清楚如何在系统启动时自动加载模块,搜索了好久,网上有很多人提出这个问题,但都没有正确的答案。大家的回答都没有讲到点子上,无非是围绕modprobe.conf、modprobe讲来讲去的,要不就是针对特定问题尝试不同的方法。有的还建议把modprobe modulename写入rc.local,却不曾想rc.local的执行被放在整个启动顺序的很后面,而启动init.d下面定义的服务却在rc.local前面,那么如果某个服务要用这个模块,就不行了。在测试LVS时,因为我的Fedora7的Kernel(2.6.21-1)缺省没有加载ip_vs模块,而内核中已经包含编译好的IPVS相关的模块了,放在:/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/下面,有:/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs.ko/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_dh.ko/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_ftp.ko/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_lblc.ko/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_lc.ko/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_nq.ko/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_rr.ko/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_sed.ko/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_sh.ko/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_wlc.ko/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_wrr.ko其中ip_vs.ko是IPVS的基本模块,不加载IPVS就不能工作(运行ipvsadm会报错的),而其他的都是IPVS的调度算法或特定协议的辅助模块,需要时则须加载。要了解如何在系统启动时自动加载模块(Automatically load kernel modules),就得先了解系统是如何启动的,启动的过程中按什么顺序做了什么,怎么做的,这些启动操作都有那些文件和脚本控制。整个开机流程是:(1)载入BIOS的硬件信息,并取得第一个开机装置的代号(2)读取第一个开机装置的MBR的boot Loader(grub)的开机信息(3)载入OS Kernel信息,解压Kernel,尝试驱动硬件(4) Kernel执行init程序并获得run-lebel信息(如3或5)(5) init执行/etc/rc.d/rc.sysinit(6)启动内核外挂模块(/etc/modprobe.conf)(7) init执行run-level的各种Scripts,启动服务(8) init执行/etc/rc.d/rc.local(9)执行/bin/login,等待用户Login(10)Login后进入Shell看来正确的方式是把需要加载的模块放在(5)或(6),我修改了/etc/rc.d/rc.sysinit就成功加载了。初步尝试在rc.sysinit最后增加 modprobe.conf ip_vs,重启后lsmod| grep ip_vs,发现成功自动加载了。于是仿效rc.sysinit中其他模块的加载方法,扩展改脚本文件,在最后增加下来一段:# load LVS IPVS modules if [-d/lib/modules/$unamer/kernel/net/ipv4/ipvs ]; then for module in/lib/modules/$unamer/kernel/net/ipv4/ipvs/*; do module=${module##*/} module=${module%.ko} modprobe$module>/dev/null 2>&1 done fi就把/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/下的所有模块都自动加载。
linux操作系统中,加载和删除内核模块的命令是什么
modprobe命令
Linux命令:modprobe。
功能说明:自动处理可载入模块。
语法:modprobe [-acdlrtvV][--help][模块文件][符号名称=符号值]。
补充说明:modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。
内容
1、modprobe命令是根据depmod-a的输出/lib/modules/version/modules.dep来加载全部的所需要模块。
2、删除模块的命令是:modprobe-r filename。
3、系统启动后,正常工作的模块都在/proc/modules文件中列出。使用lsmod命令也可显示相同内容。
4、在内核中有一个“Automatic kernel module loading"功能被编译到了内核中。当用户尝试打开某类型的文件时,内核会根据需要尝试加载相应的模块。/etc/modules.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/modules/2.6.18-8.el5/kernel/drivers/md/raid0.ko/lib/modules/2.6.18-8.el5/kernel/drivers/md/raid456.ko/lib/modules/2.6.18-8.el5/kernel/drivers/md/raid1.ko/lib/modules/2.6.18-8.el5/kernel/drivers/md/raid10.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/aacraid/aacraid.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_mbox.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_mm.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/megaraid/megaraid_sas.ko/lib/modules/2.6.18-8.el5/kernel/drivers/scsi/raid_class.ko
以上命令表示显示系统中所有的编译模块,并过滤包含有raid字符串的模块。
linux自动加载ko模块linux自动加载
linux怎么让程序开机自动启动?
1.开机启动时自动运行程序Linux加载后,它将初始化硬件和设备驱动,然后运行第一个进程init。
init根据配置文件继续引导过程,启动其它进程。
通常情况下,修改放置在/etc/rc或/etc/rc.d或/etc/rc?.d目录下的脚本文件,可以使init自动启动其它程序。
例如:编辑/etc/rc.d/rc.local文件(该文件通常是系统最后启动的脚本),在文件最末加上一行“xinit”或“startx”,可以在开机启动后直接进入X-Window。2.登录时自动运行程序用户登录时,bash先自动执行系统管理员建立的全局登录script:/ect/profile然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、/.profile,但只执行最先找到的一个。
因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。
如何让linux启动自动运行指定程序?
就是重启啊??仅仅修改配置有的时候可以使用SIGHUP,这个信号本来是用于终端挂断时通知的,许多后台服务会特别处理这个信号,在遇到这个信号时重新加载配置或者执行重新启动过程。
但是更新软件并不在这个范围内,一定会使用servicestop来结束旧的服务,然后用servicestart启动新的服务,因为没法保证旧的服务运行状况正常,且SIGHUP的处理没有bug,更不要说很多服务并不会真的从可执行程序重启而是重新加载一下配置或者重新走一遍启动流程。
在Linux上升级时自动重启是通过RPM包中自带的脚本进行的,RPM包的spec中可以指定preinstall,postinstall等段来在指定时机执行特定的脚本,比如preinstall的时候停止服务,postinstall的时候根据参数,如果$1是1表示执行update,自动启动服务;否则暂不启动服务,给用户一个修改配置文件的机会。
大部分Linux服务的实现比Windows上更简单,很多就是在main()当中用while(1){}做一个死循环,利用SIGNAL的默认处理程序退出。
并没有复杂的机制用来热更新。
linux如何禁用netfs网络文件系统自动挂载服务?
现将netfs服务守护进程kill掉,然后将netfs进程kill掉就不会再自启动自动挂载了。
Linux如何自动挂载光盘镜像?
在/etc/fstab里添加一行代码/dev/hdc/media/cdrom0udf,iso9660user,auto00或/dev/hdc/media/cdrom0udf,iso9660defaults00然后重启机器即可reboot如果想取消自动挂载,在/etc/fstab里添加/dev/hdc/media/cdrom0udf,iso9660user,noauto00
linux下如何开机自启动dhcp服务?
1,通过编辑/etc/rc.local文件来使dhcp服务开机自启动
使用命令vi/etc/rc.local,
然后在文件最后一行添加“sudo/etc/init.d/dhcp3-serverstart”就能使dhcp服务开机自启动。
2,使用crontab任务提交计划
先写一个简单的检查dhcp服务是否启动了的脚本a.sh:
#!/bin/bash ps-ef|grepdhcp|grep-vgrep if then exit0 else sudo/etc/init.d/dhcp3-serverstart>/dev/null2>1 fi
如果在用户目录下没有cron文件,使用vi新建一个my.cron的crontab文件,将以下内容写进去:
*/5****bash$HOME/a.sh
然后crontabmy.corn提交,这样系统就会在每5分钟运行一次a.sh脚本,检测dhcp服务已经启动了,如果没有启动或者停止了就会再启动一次。
3,注册系统服务
chkconfig--add服务名称(首先,添加为系统服务,注意add前面有两个横杠)
chkconfig-leve启动级别服务名on
(说明,3级别代表在命令行模式启动,5级别代表在图形界面启动,on表示开启)
chkconfig-leve启动级别服务名off
(说明,off表示关闭自启动)
例如注册dhcp为系统服务并在开机时自启动:
chkconfig--adddhcp chkconfig-level3dhcpon
总结一下:第一种方法其实是将指定服务设置为开机自启动,第三种方法是将服务升级为系统服务并且设置为开机时启动,而第二种方法对于那些最好或者必须开机启动的服务最好不要使用,但是可以使用crontab来实时监测服务是否在线。