Linux Kernel:
单内核体系设计、但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。
内核组成部分:
kernel: 内核核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-VERSION-RELEASE;
kernel object: 内核对象,一般放置于/lib/modules/VERSION-RELEASE/
[ ]: N
[M]: M
: Y
辅助文件:ramdisk
initrd
initramfs
运行中的内核:
uname命令:
uname - print system information
uname [OPTION]...
-n: 显示节点名称;
-r: 显示VERSION-RELEASE;
模块:
lsmod命令:
显示由核心已经装载的内核模块
显示的内容来自于: /proc/modules文件
modinfo命令:
显示模块的详细描述信息
modinfo [ -k kernel ] [ modulename|filename... ]
-n: 只显示模块文件路径
-p: 显示模块参数
-a: author
-d: description
-l: license
[iyunv@slave ~]# modinfo ext4
filename: /lib/modules/2.6.32-504.el6.x86_64/kernel/fs/ext4/ext4.ko
license: GPL
description: Fourth Extended Filesystem
author: Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion: 2DA002AAC5B453054C69FB2
depends: mbcache,jbd2
vermagic: 2.6.32-504.el6.x86_64 SMP mod_unload modversions
[iyunv@slave ~]# modinfo Ip
ERROR: modinfo: could not find module Ip
[iyunv@slave ~]# modinfo stp
filename: /lib/modules/2.6.32-504.el6.x86_64/kernel/net/802/stp.ko
license: GPL
srcversion: ADE6C8A333621C77ACAC02C
depends: llc
vermagic: 2.6.32-504.el6.x86_64 SMP mod_unload modversions
准备好开发环境:
包组(CentOS 6):
Server Platform Development
Development Tools
目标主机硬件设备相关信息:
CPU:
~]# cat /proc/cpuinfo
~]# x86info -a
~]# lscpu
PCI设备:
~]# lspci
-v
-vv
~]# lsusb
-v
-vv
~]# lsblk
了解全部硬件设备信息
~]# 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 -j 4 #4表示开4个线程编译