内容简介:内核体系
单内核体系设计、但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。
内核组成部分核心,一般为 bzImage ,通常在 /boot 目录下,名称为 vmlinuz-VERSION-RELEASE ;:
kernel: 内核
kernel object: 内核对象,一般放置于 /lib/modules/VERSION-RELEASE/
[ ]: N
[M]: M
[*]: Y
辅助文件:ramdisk
initrd
initramfs
运行中的内核:
uname命令:
uname – print system information
uname [OPTION]…
-n: 显示节点名称;
-r: 显示 VERSION-RELEASE;
例一:显示内核节点名称
[root@localhost ~]# uname -r 2.6.32-71.el6.x86_64 [root@localhost ~]# uname -n localhost.localdomain
模块:
lsmod 命令:
显示由核心已经装载的内核模块
例一:显示已经装载的模块
[root@localhost ~]# lsmod Module Size Used by sit 10313 0 tunnel4 2877 1 sit autofs4 27683 3
显示的内容来自于: /proc/modules文件
modinfo命令:
显示模块的详细描述信息
modinfo [ -k kernel ] [ modulename|filename… ]
-n: 只显示模块文件路径
-p: 显示模块参数
-a: author
-d: description
-l: license
例一:查询内核信息
[root@localhost ~]# modinfo xfs filename: /lib/modules/2.6.32-71.el6.x86_64/kernel/fs/xfs/xfs.ko license: GPL description: SGI XFS with ACLs, security attributes, large block/inode numbers, no debug enabled author: Silicon Graphics, Inc. srcversion: 74805DEC132C154FBA7FC91 depends: exportfs vermagic: 2.6.32-71.el6.x86_64 SMP mod_unload modversions
modprobe命令:
装载或卸载内核模块
modprobe [ -C config-file ] [ modulename ] [ module parame-ters… ]
配置文件: /etc/modprobe.conf, /etc/modprobe.d/*.conf
modprobe [ -r ] modulename…
例一:卸载内核
[root@localhost ~]# modprobe xfs [root@localhost ~]# lsmod |grep xfs xfs 982863 0 exportfs 4202 1 xfs [root@localhost ~]# modprobe -r xfs [root@localhost ~]# lsmod | grep xfs
depmod 命令:
内核模块依赖关系文件及系统信息映射文件的生成工具;
装载或卸载内核模块:
insmod 命令:
insmod [ filename ] [ module options… ]
例一:安装指定路径
[root@localhost ~]# insmod $(modinfo -n exportfs) [root@localhost ~]# insmod $(modinfo -n xfs) [root@localhost ~]# lsmod Module Size Used by xfs 982863 0
rmmod
rmmod [ modulename ]
例一:移除内核
[root@localhost ~]# rmmod xfs [root@localhost ~]# lsmod | grep xfs [root@localhost ~]# lsmod | grep exportfs exportfs 4202 0 [root@localhost ~]# rmmod exportfs
/proc 目录:
内核把自己内部状态信息及统计信息,以及可配置参数通过 proc 伪文件系统加以输出;
参数:
只读:输出信息
可写:可接受用户指定 “新值”来实现对内核某功能或特性的配置
/proc/sys
(1) sysctl 命令用于查看或设定此目录中诸多参数;
sysctl -w path.to.parameter=VALUE
~]# sysctl -w kernel.hostname=mail.magedu.com
(2) echo 命令通过重定向的方式也可以修改大多数参数的值;
echo “VALUE” > /proc/sys/path/to/parameter
~]# echo “www.magedu.com” > /proc/sys/kernel/hostname
sysctl 命令:
默认配置文件: /etc/sysctl.conf
(1) 设置某参数
sysctl -w parameter=VALUE
(2) 通过读取配置文件设置参数
sysctl -p [/path/to/conf_file]
例一:重新读取配置文件
[root@localhost ~]# sysctl -p net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1
内核中的路由转发:
/proc/sys/net/ipv4/ip_forward
常用的几个参数:
net.ipv4.ip_forward
vm.drop_caches
kernel.hostname
例一:回收路由
[root@localhost ~]# sysctl -w vm.drop_caches=1 vm.drop_caches = 1
/sys 目录:
sysfs :输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的设定信息;有些参数是可以修改的,用于调整硬件工作特性。
udev 通过此路径下输出的信息动态为各设备创建所需要设备文件; udev 是运行用户空间程序;专用工具: udevadmin, hotplug ;
udev 为设备创建设备文件时,会读取其事先定义好的规则文件,一般在 /etc/udev/rules.d 及 /usr/lib/udev/rules.d 目录下;
ramdisk 文件的制作:
(1) mkinitrd 命令
为当前正在使用的内核重新制作 ramdisk 文件
~] # mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
例一: 为当前正在使用的内核重新制作 ramdisk 文件
[root@localhost ~]# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) [root@localhost ~]# ls /boot/ config-2.6.32-71.el6.x86_64 initramfs-2.6.32-71.el6.x86_64.img System.map-2.6.32-71.el6.x86_64 efi lost+found vmlinuz-2.6.32-71.el6.x86_64 grub symvers-2.6.32-71.el6.x86_64.gz
(2) dracut 命令
为当前正在使用的内核重新制作 ramdisk 文件
~] # dracut /boot/initramfs-$(uname -r).img $(uname -r)
编译内核:
前提:
(1) 准备好开发环境;
(2) 获取目标主机上硬件设备的相关信息;
(3) 获取到目标主机系统功能的相关信息,例如要启用的文件系统;
(4) 获取内核源代码包;
www.kernel.org
准备好开发环境:
包组 (CentOS 6) :
Server Platform Development
Development Tools
目标主机硬件设备相关信息:
CPU :
~]# cat /proc/cpuinfo
~]# x86info -a
~]# lscpu
[root@localhost ~]# x86info -a
PCI 设备:
~]# lspci
-v
-vv
~]# lsusb
-v
-vv
[root@localhost ~]# lsusb
~]# lsblk
了解全部硬件设备信息
~]# hal-device
[root@localhost ~]# hal-device
简单依据模板文件的制作过程:
~]# tar xf linux-3.10.67.tar.xz -C /usr/src
~]# cd /usr/src
~]# ln -sv linux-3.10.67 linux
~]# cd linux
~]# cp /boot/config-$(uname -r) ./.config
~]# make menuconfig
~]# screen
~]# make -j #
~]# make modules_install
~]# make install
重启系统,并测试使用新内核;
[root@localhost ~]# tar xf linux-3.10.105.tar.xz -C /usr/src [root@localhost ~]# cd /usr/src [root@localhost src]# ls debug kernels linux-3.10.105 [root@localhost ~]# ls -lh linux-3.10.105.tar.xz -rw-r--r--. 1 root root 70M 5月 30 2017 linux-3.10.105.tar.xz [root@localhost ~]# tar xf linux-3.10.105.tar.xz -C /usr/src [root@localhost ~]# cd /usr/src [root@localhost src]# ls debug kernels linux-3.10.105 [root@localhost src]# cd linux [root@localhost linux]# ls -a . COPYING drivers include Kconfig MAINTAINERS README security virt .. CREDITS firmware init kernel Makefile REPORTING-BUGS sound arch crypto fs ipc lib mm samples tools block Documentation .gitignore Kbuild .mailmap net scripts usr [root@localhost linux]# cp /boot/config-2.6.32-71.el6.x86_64 .config [root@localhost linux]# ls -a . .config Documentation .gitignore Kbuild .mailmap net scripts usr .. COPYING drivers include Kconfig MAINTAINERS README security virt arch CREDITS firmware init kernel Makefile REPORTING-BUGS sound block crypto fs ipc lib mm samples too
回顾:内核组成部分、内核编译
内核组成部分:
核心、模块
核心: /boot/vmlinuz-VERSION-RELEASE
模块: /lib/modules/VERSION-RELEASE/
模块管理的相关命令:
lsmod, modinfo, modprobe [-r], insmod, rmmod, depmod
内核编译:
[ ]
[*]
[M]
步骤:
make menuconfig :配置内核选项
.config :文本文件
make [-j #]
make modules_install
make install
安装 bzImage 为 /boot/vmlinuz-VERSION-RELEASE
生成 initramfs 文件
编辑 grub 的配置文件
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 编程体系结构:Java 异常体系
- 企业安全体系架构分析:安全体系架构概述
- 产品数据体系建设基础:一个产品的数据体系建设
- 指标体系:四个模型教会你指标体系构建的方法
- RTC 技术知识体系
- SSIS体系结构
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Pro Git (Second Edition)
Scott Chacon、Ben Straub / Apress / 2014-11-9 / USD 59.99
Scott Chacon is a cofounder and the CIO of GitHub and is also the maintainer of the Git homepage ( git-scm.com ) . Scott has presented at dozens of conferences around the world on Git, GitHub and the ......一起来看看 《Pro Git (Second Edition)》 这本书的介绍吧!