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:是一個簡裝版的根文件系統
·內核信息獲?。?/strong>
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.www58058.com/45557