linux操作系统中,加载和删除内核模块的命令是什么?
modprobe命令 Linux命令:modprobe 。 功能说明:自动处理可载入模块。 语 法:modprobe 。 补充说明: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阵列级别模块: # modprobe raid1 2) 显示已加载的RAID1阵列级别模块: # lsmod |grep raid1 raid1 25153 0 3) 删除RAID1阵列级别模块: # modprobe -r raid1 4) 显示RAID1阵列级别模块: # lsmod |grep raid1 modprobe命令在加载模块时会自动解决依赖的模块。当加载的模块需依赖另一个模块时,系统会自动将此模块加载。而当用户使用insmod命令加载模块时,则不会自动解决相对应的依赖模块。 modprobe命令中的”-r”参数表示删除指定模块,”-c”参数表示显示/etc/modprobe.conf配置文件的参数,”-C”参数表示指定内核配置文件,”-f”表示覆盖,”-l”表示显示模块的绝对路径。 # 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初始服务器启动盘如何使用?
答具体方法如下
启动第一步--加载 BIOS
当你打开计算机电源,计算机会首先加载 BIOS 信息,BIOS 信息是如此的重要,以至于计
算机必须在最开始就找到它。这是因为 BIOS 中包含了 CPU 的相关信息、设备启动顺序信
息、硬盘信息、内存信息、时钟信息、PnP 特性等等。在此之后,计算机心里就有谱了,
知道应该去读取哪个硬件设备了。
启动第二步--读取 MBR
众所周知,硬盘上第 0 磁道第一个扇区被称为 MBR,也就是 Master Boot Record,即主
引导记录,它的大小是 512 字节,别看地方不大,可里面却存放了预启动信息、分区表信
息。
系统找到 BIOS 所指定的硬盘的 MBR 后,就会将其复制到 0x7c00 地址所在的物理内存中。
其实被复制到物理内存的内容就是 Boot Loader,而具体到你的电脑,那就是 lilo 或者 grub
了。
启动第三步--Boot Loader
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可
以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,
以便为最终调用操作系统内核做好一切准备。
Boot Loader 有若干种,其中 Grub、Lilo 和 spfdisk 是常见的 Loader。
我们以 Grub 为例来讲解吧,毕竟用 lilo 和 spfdisk 的人并不多。
系统读取内存中的 grub 配置信息(一般为 menu.lst 或 grub.lst),并依照此配置信息来
启动不同的操作系统。
启动第四步--加载内核
根据 grub 设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕
一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK,
booting the kernel”。
系统将解压后的内核放置在内存之中,并调用 start_kernel()函数来启动一系列的初始化函
数并初始化各种设备,完成 Linux 核心环境的建立。至此,Linux 内核已经建立起来了,基
于 Linux 的程序应该可以正常运行了。
启动第五步--用户层 init 依据 inittab 文件来设定运行等级
内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab 文件,并依据
此文件来进行初始化工作。
其实/etc/inittab 文件最主要的作用就是设定 Linux 的运行等级,其设定形式是“:
id:5:initdefault:”,这就表明 Linux 需要运行在等级 5 上。Linux 的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有 X-Window 支持的多用户模式
6:重新引导系统,即重启
启动第六步--init 进程执行 rc.sysinit
在设定了运行等级后,Linux 系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit 脚本程
序,它做的工作非常多,包括设定 PATH、设定网络配置(/etc/sysconfig/network)、启
动 swap 分区、设定/proc 等等。如果你有兴趣,可以到/etc/rc.d 中查看一下 rc.sysinit 文
件。
启动第七步--启动内核模块
具体是依据/etc/modules.conf 文件或/etc/modules.d 目录下的文件来装载内核模块。
启动第八步--执行不同运行级别的脚本程序
根据运行级别的不同,系统会运行 rc0.d 到 rc6.d 中的相应的脚本程序,来完成相应的初始
化工作和启动相应的服务。
启动第九步--执行/etc/rc.d/rc.local
你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然
rc.local 就是在一切初始化工作后,Linux 留给用户进行个性化的地方。你可以把你想设置
和启动的东西放到这里。
启动第十步--执行/bin/login 程序,进入登录状态
tunko内核模块怎么加载?
1.hello.c
#include
#include
MODULE_LICENSE(“DualBSD/GPL”);
MODULE_AUTHOR(“MDAXIA”);
static int __inithello_init(void)
{
printk(KERN_ALERT “Helloworld!n”);
return 0;
}
static void __exithello_exit(void)
{
printk(KERN_ALERT “Goodbye,cruelworld!”);
}
module_init(hello_init);
module_exit(hello_exit);
2.Makefile
ifeq ($(KERNELRELEASE),)
KDIR := /lib/modules/$(shell uname-r)/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KDIR) M=$(PWD)modules
modules_install:
$(MAKE) -C $(KDIR) M=$(PWD)modules_install
clean:
rm -rf *.o *.ko .depend *.mod.o*.mod.c Module.* modules.*
.PHONY:modules modules_installclean
else
obj-m :=hello.o
endif
3. 编译模块
#sudomake (调用第一个命令default)
这时,在hello.c 所在文件夹就会有 hello.ko,这个就是我们需要的内核模块啦
#sudo make clean
清理编译垃圾,hello.ko 也会清理掉。
4. 插入模块,让其工作。注意必须是root权限
#sudo insmod ./hello.ko
我们用dmesg 就可以看到 产生的内核信息啦,Hello world!
如果没有输出”hello from helloworld”,因为如果你在字符终端而不是终端模拟器下运行的话,就会输出,因为在终端模拟器下时会把内核消息输出到日志文件/var/log/kern.log中。
#sudo rmmod ./hello
再用dmesg 可以看到 Bye world!
扩展阅读:
示例一 将开机信息发邮件
man dmesg 写道
The program helps users to print out their bootup messages.Instead of copying the messages by hand, the user need only:
dmesg > boot.messages
and mail the boot.messages file to whoever can debug their problem.
# dmesg >boot.messages
# ls -l boot.messages
-rw-r–r– 1 root root 15838 12-09 12begin_of_the_skype_highlighting 15838 12-0912 免费 end_of_the_skype_highlighting:55boot.messages
# mail -s “Boot Log of Linux Server”public@web3q.net
#
通过管道查找
dmesg | grep world
dmesg | tail
dmesg -a
dmesg -c打印并清除
如何获知linux是否支持内核模块动态加载?
希望能帮到你, 用EXPORT_SYMBOL_GPL 声明一下。
向delay()都有标准函数,不需要自己写。
操作系统加载详细过程?
计算机接通电源后,要进行加电自检,检查RAM、驱动器等;然后BIOS会读取活动分区主引导记录的启动装载器;然后完成启动装载器初始化,然后操作系统启动正式开始,分为引导阶段、加载内核阶段、初始化内核阶段、登录系统启动这四个阶段。
是先读取C盘中的启动文件,然后进行初始化,系统需要加载很多底层硬件的驱动程序,读取注册表信息、寻找新硬件设备、启动相关服务,初始化显示设备和显示出用户界面等。到这就能看见“欢迎使用”了(XP系统),然后就登录了。大概就是这样。