命令
uname
uname
可用来显示系统相关信息。
uname [option]...
-a:显示所有信息;
-s:显示系统名称;
-r:显示内核版本号;
-n:显示当前主机名称;
-v:显示内核的制作版本信息;
-m:显示当前硬件平台;
-p:显示处理器类型;
-i:显示硬件平台架构,主要取决于 CPU 和主板;
-o:显示操作系统全名称;
lsmod
lsmod
可用来查看内核已装载的内核模块。
lsmod
其实是显示 /proc/modules
中的内容,只是将该内容做了格式化后显示。
modinfo
modinfo
可用来查看指定模块的详细信息。
modinfo [option]... <module_name>
option:
-k:指定内核;
-n:显示指定模块的文件路径;
-a:显示指定模块的作者;
-d:显示描述信息;
-p:显示模块参数;
-l:查看模块的许可证;
module_name:模块名称;
要注意的是该命令是可以用来查看未装载的模块信息,前提是模块文件存在于对应目录且已被索引。
modprobe
modprobe
可用来装载或卸载内核模块。
modprobe [oprion]... [module_name]
option:
-r:卸载指定模块;
-q:静默模式;
-C:指定模块配置的配置文件,默认读取的是 /etc/modprobe.conf 、/etc/modprobe.d/*.conf 文件;
-n:测试;
module_name:模块名称;
例 1 :拆除 ip_tables
:
modprobe -r ip_tables
例 2:装载 ip_tables
:
modprobe ip_tables
insmod&rmmod
insmod
可用来装载模块,rmmod
可用来卸载模块,与 modprobe
不同的是,insmod
只会装载我们指定的文件,而 modprobe
在装载模块时会自动帮我们解决依赖关系。
insmod <module_path>
module_path:模块文件路径,可通过 modinfo 命令查看其文件路径及依赖的模块;
lsmod <module_name>
module_name:模块名称;
例 1:装载 ip_tables
:
insmod `modinfo -n ip_tables`
例 2:卸载 ip_tables
:
rmmod ip_tables
/proc目录
内核把自己的运行状态信息以及统计信息、可配置参数通过 proc 伪文件系统输出,以目录的形式展示出来。
以下面目录或文件为例:
/proc/mounts
:已挂载的文件系统信息;/proc/module
:已装载的模块信息;/proc/<pid>
:每个进程号为 pid 的进程的状态信息;/proc/scsi
:SCSI 接口设备相关;/proc/fs
:文件系统相关;/proc/bus
:总线相关;/proc/driver
:驱动相关;
所以我们能够像操作文件一样来操作这里数据,但能修改的只是可配置参数,这些可配置参数可用来设置内核的某功能或特性。
sysctl
/proc/sys
目录是一个可配置目录,该目录下的参数可以使用 sysctl
命令来控制。
sysctl
的设置参数的格式如下:
sysctl [option]... <parameter>=<value>
option:
-a:查看所有可设定的参数;
-w:设置参数;
-p <config_file>:通过配置文件设置参数,省略 config_file 参数时默认读取 /etc/sysctl.conf;
parameter:指的是相对 `/proc/sys` 指定的一个路径下的一个文件名;
value:值;
echo
命令通过重定向的方式也可以修改大多数参数的值。
echo <value> > <parameter>
parameter:指的是相对 `/proc/sys` 指定的一个路径下的一个文件名;
value:值;
如果希望让配置的参数永久有效,可直接修改 sysctl
的配置文件内容,对应文件为 /etc/sysctl.conf
,修改完毕后使用 sysctl -p
使其立即生效。
例:
例 1:修改主机名。
主机名对应的文件为 /proc/sys/kernel/hostname
。
使用 sysctl
设置:
sysctl -w kernel/hostname=hahah
使用 echo
设置:
echo 'hahah' > /proc/sys/kernel/hostname
例 2:开启或关闭核心转发功能。
核心转发功能对应的参数文件为 /proc/sys/net/ipv4/ip_forward
。
使用 sysctl
开启:
sysctl -w net/ipv4/ip_forward=1
使用 echo
关闭:
echo 0 > /proc/sys/net/ipv4/ip_forward
例 3:回收当前占用的 buffer 和 cache 空间。
/proc/sys/vm/drop_caches
命令可以用来控制立即回收 buffer 和 cache,只需要给它设定一个 1
即可,例:
sysctl -w vm/drop_caches=1
/sys目录
/sys
目录其实也是内核用来输出信息的,不同的地方在于:
/proc
目录是用 proc 伪文件系统输出内核自己的运行状态信息以及统计信息、可配置参数;/sys
目录是用 sysfs 伪文件系统输出硬件设备的相关属性信息,也有内核对硬件特性的设定信息,有些参数是可以修改的,用户调整硬件的工作特性;
udev 通过此路径下的输出信息动态为各设备创建所需要的设备文件。
udev 是运行在用户空间的程序,它借助 udevadmin、hotplug 等插件来完成配置。
udev 创建设备文件时,会读取事先定义好的规则文件,一般在 /etc/udev/rules.d
及 /usr/lib/udev/rules.d
目录下。
ramdisk文件的制作
ramdisk 文件是系统安装过程到最后一步时,通过当前系统所在硬件的相关信息按需创建的。
如果要手动制作 ramdisk 文件,可使用 mkinitrd
或 dracut
来完成,使用格式如下:
mkinitrd [OPTION...] [<initrd-image>] <kernel-version>
dracut [OPTION...] [<initrd-image>] <kernel-version>
initrd-image:要创建的文件;
kernel-version:针对的内核版本;
例:为当前系统创建 ramdisk 文件:
mkinitrd /boot/initramfs-`uname -r`.img `uname -r`
评论区