内核设计风格:
- 微内核:windows,solaris(支持真正的线程)
- 单内核:linux(用LWP模拟线程)
linux内核 = 核心 + 内核模块ko(kernel object)
核心/boot/vmlinuz可以动态加载/lib/modules/version/*.ko,所以初始化的时候是内核核心的初始化;
用户和内核通信的方式:
- /proc, 伪文件系统
- /proc/sys:此目录中的文件很多是可读写的
- /sys:某些文件可写
### 设定内核参数的方法:
# echo VALUE > /proc/sys/xxx
# sysctl -w kernel.hostname=hello #此方法可以省略/proc/sys前缀,
### 这两种方式能立即生效但不是永久有效,如果想永久生效,需要修改/etc/sysctl.conf,使用sysctl -p立即生效,使用sysctl -a显示所有内核参数
内核模块管理:
lsmod #查看当前系统加载的模块
modinfo #查看模块的具体信息
insmod /PATH/TO/MODULEFILE #装载模块
modprobe MODULENAME #自动到modules文件目录下查找并装载模块
modprobe -r MODULENAME #卸载模块
rmmod MODULENAME #卸载模块
depmod /PATH/TO/MODULESDIR #生成依赖关系文件
编译内核:
内核中的功能除了核心功能之外,在编译时,大多数功能有三种选择:
- 不使用此功能[ ];
- 编译成内核模块[M];
- 编译进内核[*];
编译过程
2.1 定制内核
### 3种定制内核命令:
###A. Gnome桌面环境使用,需要安装图形开发库组:GNOME software development
# make gconfig
###B. KDE桌面环境使用
# make kconfig
###C. 文本图形库
# make menuconfig 生成.config文件
2.2 编译
# make #等待较长时间
2.3 安装模块
# make modules_install
2.4安装内核
# make install
2.5 二次编译清理
# make clean
# make mrproper #比clean清理的更彻底,注意备份配置文件
注意:
如果想使用远程连接编译内核,建议使用screen,否则一旦连接断开内核编译将被终止
screen命令:
screen -ls:显示已经建立的屏幕
screen:直接打开一个新的屏幕
ctrl+a, d:剥离屏幕
screen -r ID:还原回某屏幕
exit:退出