Linux kernel

 

单内核设计:

 

  把所有功能做成一个程序,每个功能在程序中使用线程实现(内核线程) 

 

微内核设计:

 

  每个功能使用独立子系统实现,联合完成

 

 

lsmod:内容来自/proc/modules

modinfo:show information about linux kernel module

modprobe:

  1. modprobe --show-depends ext4       显示ext4内核模块的依赖关系
  2. --dry-run       测试目的
  3. --show-config      显示内核模块的所有配置
  4. --force      Force module insertion or removal
  5. --remove     移除模块
  6. modprobe    进行操作,需要依靠/usr/lib/modules/$(uname -r)/modules.dep.bin此二进制文件为依据,此文件是由modules.dep生成,便于检索

depmod:
 depmod will output a dependency list suitable for the modprobe utility.

  1. --all        Probe all modules            default
  2. --quick       Only does the work if there's a new module
  3. --show        write the dependencies to stdout         可用于查找模块

 

/etc/modprobe.d/*.conf       modprobe命令的配置文件

 

functiondesc
alias wildcard modulename 用来配置模块的别名
blacklist modulename 忽略该模块的内部别名
install modulename command… 使用modprobe加载模块时的替换命令,此时并不执行默认的加载操作,而是执行command
remove modulename command… 同install功能,只不过是在使用modprobe -r操作时会执行的command
options modulename option… 为模块添加option功能,也就相当于module参数

 

install esoteric /sbin/modprobe kvm-intel
remove esoteric /sbin/modprobe -r kvm-intel

 

esoteric不存在, 但是相当于操作kvm-intel

  

options <module> parameter_name=parameter_value  # 模块参数
blacklist kvm-intel # 屏蔽kvm-intel
alias <alias> <module>

 

These are aliases stored in the module file itself (nvidia.ko). modinfo prints them out, depmod writes them out to /lib/modules/$(uname -r)/modules.aliases for modprobe to read

 

可于开机时使用module.parameter_name=parameter_value临时传递内核参数,传递不存在参数时, 忽略, /sys/module/<module>/parameters

 

 

 

modprobe.blacklist=module,..........临时禁用内核模块

man modprobe.d 获取info

内核模块开机自动加载:

RHEL:

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
modinfo modulename >& dev/null
if [[ $? == 0 ]];then
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
fi
EOF

chmod 755 /etc/sysconfig/modules/ipvs.modules

 

Systemd:

/etc/modules-load.d/*.conf 中每行写入加载的内核模块

/usr/lib/modules-load.d/*.conf  中每行写入加载的内核模块
上面两个目录下 *.conf文件的的加载需要依靠systemd-modules-load.service,内核模块需要执行权限

 

查看加载的内核模块:

cut -f1 -d' ' /proc/modules | grep -e ip_vs -e nf_conntrack

 

systool -vm xfs       显示xfs内核模块信息,只能显示加载的内核模块

posted @ 2020-06-14 18:05  ascertain  阅读(536)  评论(0编辑  收藏  举报