Linux Kernel:
CentOS 启动流程:POST –> BootLoader(BIOS,MBR) –>Kernel(initrd) –> rootfs –> switch_root –> /sbin/init
root (hd0,0)
kernel
initrd
ldd命令:
ldd – print shared library dependencies
ldd [option]… FILE
内核设计体系:单内核、微内核
·Linux:单内核设计,但充分借鉴了微内核体系的设计的优点;为内核引入了模块化机制
·内核的组成部分:
kernel:内核核心。一般为bzimage,通常位于/boot目录,名称为vmlinuz-VERSION-release
kernel object:内核对象,即内核模块,一般放于/lib/modules/VERSION-release/
内核模块于内核核心版本一定要严格匹配:
[ ]:N
[M]:Module
[*]:Y,编译进内核核心
内核:动态装载和卸载
ramdisk:辅助性文件,并非必须,这取决于内核是否能直接驱动rootfs所在的设备
目标设备驱动:例如SCSI设备的驱动
逻辑设备驱动:例如LVM设备的驱动
文件系统:例如xfs文件系统
ramdisk:是一个简装版的根文件系统
·内核信息获取:
uname命令:
uname – print system information
格式:uname [OPTION]…
-r:内核的release号
-n:主机名
-a:显示所有信息
·模块信息获取和管理:
·lsmod命令:
lsmod – program to show the status of modules in the Linux Kernel
显示的内核信息来自于/proc/modules
·modinfo命令:
modinfo – program to show information about a Linux Kernel module
modinfo [ -F field ] [ -k kernel ] [ modulename|filename… ]
-F field:仅显示指定字段的信息
-n:显示文件路径
·modprobe命令:
modprobe – program to add and remove modules from the Linux Kernel
modprobe [-r] module_name
模块的动态装载:modeprobe module_name
模块的动态卸载:modeprobe -r modele_name
网卡模块:e1000
·depmod命令:
depmod – program to generate modules.dep and map files
内核模块依赖关系文件的生成工具
·模块的装载和卸载的另一组命令:
insmod命令:
insmod [filename] [module options…]
filename:模块文件的文件路径
rmmod命令:
rmmod [module_name]
·ramdisk文件的管理:
(1) mkinitrd命令:
为当前使用中的内核重新制作ramdisk文件:
mkinitrd [OPTION…] [<initrd-image>] <kernel-version>
–with=<module>:除了默认的模块之外需要装载至initramfs中的模块
–preload=<modele>:initramfs所提供的模块需要预先装载的模块
示例:# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
(2)dracut命令
dracut – create initial ramdisk images for preloading modules
dracut [OPTION…] [<image>[<kernel version>]]
示例:# bracut /boot/initramfs-$(uname -r).img $(uname -r)
·内核信息输出的伪文件系统:
·/proc:内核状态和统计信息的输出接口;同时,还提供一个配置接口,/proc/sys
参数:
只读:信息输出;例如/proc/#/*
只写:可接收用户指定一个“新值”来实现对内核某功能或特性的配置;/proc/sys/
/proc/sys:
net/ipv4/ip_forward相当于net.ipv4.ip_forward
(1)sysctl命令
专门用于查看或设定/proc/sys目录下参数的值
sys [option] [variable[=value]]
查看:
# sysctl -a
# sysctl variable
修改其值:
# sysctl -w variable=value
(2)文件系统命令 (cat,echo)
查看:
# cat /proc/sys/PATH/TO/SOME_KERNEL_FILE
设定:
# echo "VALUE" > /proc/sys/PATH/TO/SOME_KERNEL_FILE
注意:上述两种方式的设定仅对当前运行内核有效
(3)配置文件:/etc/sysctl.conf ,/etc/sysctl.d/*.conf
修改配置文件后,立即生效的方式:
sysctl -p [/PATH/TO/CONFIG_FILE]
内核参数:
net.ipv4.ip_forward:核心转发
vm.drop_caches:虚拟内存caches
kernel.hostname:主机名
net.ipv4.icmp_echo_ignore_all:忽略所有ping操作
0:开启 1:关闭
·/sys目录:
sysfs:输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特殊的可设置参数,对此些参数的修改,即可定制硬件设备工作特性
udev:同读取/sys目录下的硬件设备信息按需为各硬件设备创建文件:udev是用户空间程序;专用工具:devadmin,hotplug
udev为设备创建设备文件时,会读取其事先定义好的规则文件,一般在/etc/udev/rule.d/目录下,以及/usr/lib/udev/rules.d/目录下
原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/45557