内核简介:
    内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
  Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源程序代码。当我们拥有源代码时就意味着我们可以编辑内核实现最优化,定制适合我们自己的内核版本。
内核作用:  

1系统初始化,探测硬件资源,启动系统

2 进程调度

3  内存管理  4,安全管理  5,文件系统  6,硬件驱动 7 提供缓存和缓冲以加速硬件的访问  8网络协议栈当我们知道了具有的这么多的功能,这时我们就想哪些是我们需要的,把需要的编译进来,把多余的扔掉,那么我们就需要编译内核,由于是开源的软件我们就可以获取源代码包了,同时由于开源有许多优秀的工程师对其加入新的代码,修补老版本的漏洞所以就需要编译内核进行升级。

  内核分为微内核和单内核  
    单内核 它为潜在的硬件提供了大量完善的硬件抽象操作。 
  微内核 只提供了很小一部分的硬件抽象,大部分功能由一种特殊的用户态程序:服务器来完成。
  对内核的编译首先要有以下几个步骤:
  1,具有编译环境安装这样的组“Development Tools”,“Development Libraries"
  2,获取源码包,由于是开源的我们可以官方网站上下载自己需要的内核版本,同时还要解压缩的(/usr/src)
 
tar –xvf  linux-version –C /usr/src
cd /usr/src
ln –sv  linux-version  linux    创建连接
cd linux

3,这时准备工作做好了就可以对内核进行配置了,开始之前我们要清下垃圾:mak emrproper
make menuconfig  出现框状的界面可以对内核进行选择,可以直接做进内核或者做成模块,在使用到模块时自动加载上,说道模块,我们就需要提下模块的 优点:
减小内核体积从而降低内存使用,使内核富有弹性(可扩充),安装方便

*:编辑进内核 M:编辑成内核 []:不启用

4当我们对内核选项选择完成后就可以对其进行编译了(在这一块的编译工作要是不懂的话可以参考金步国文章中有篇关于内核编译的把英文译成了汉语)


make bzImage 编译内核
 make modules 编译模块
  make modules_install 安装模块

make install


5.这时我们的编译工作就完成了,可以重新启动下系统,看我们的内核是否编译成功!



第二部分

1内核模块:我们把内核编译好了,但是具体我们都加了什么模块呢?太多我们记不住这时使用命令来查看的

查看模块:lsmod 显示全部模块 
 modinfo 模块名称 用于查看某个模块概要信息
卸载某个模块:modprobe –r name
安装加载:modprobe name
定义模块参数:/etc/modprobe.conf
2:内核优化:
内核参数:有些是可以改变的
虚拟文件系统:用于接口输出包括procfs挂载/proc记录内核参数和进程详细信息 sysfs 挂载/sysfs用于输入硬件工作参数及驱动程序相关信息
/proc/的目录下部分文件简介:
/buddyinfo 伙伴系统的信息实现防止内存碎片
/bus各种总线的信息
/cmdline 内核参数
/cpuinfo cpu信息
/filesystems 可用和启用文件系统
/interrupts 中断的信息
/iomen/ioports io的信息
/loadavg  系统平均负载
/mdstat  REID的管理
/meminfo 内存信息
/modules 模块信息
/partitions 分区表
/swaps 交换分区的信息
/uptime 系统运行时间
/version  系统信息
/vmstat     用命令vmstat 显示该文件的内容 后面跟一个数字表刷新频率,再跟一数字时表显示次数
其中/proc/sys/目录下的文件参数可以修改的
例如: 
   ./kernel/hostname  可修改主机名称  domin域名
   ./net/ipv4/ip_forward 是否启用路由功能0不启用1启用
  ./vm/drop_caches  清除部分内存缓存0不清除,1清除
 ./vm/swappines  定义在多大程度上使用内存(0-1000表示能不使用就不适应,100表示能使用就使用 默认是60
 
修改方式:临时有效1,直接echo一个有效值  echo ‘VALUE’ > /proc/sys/path/to/somefile
     2 sysctl –w 路径中不带/proc/sys/ 另外斜杠用点表示  sysctl –w net.ipv4.ip_forwar = n  
         永久有效:编辑/etc/sysctl.conf      编辑后立即生效:sysctl –p
sysctl –a 查看正在使用的内核参数
命令显示
dmidecode  可以显示主机bios信息
安装yum install X86info 后可用x86info显示cpu信息 –a显示的详细
hal-device  列出设备信息
hal-device-manger &图形化类似于windows的设备管理器

手动创建设备文件:mknod 选项 文件名 设备类型 主设备号 次设备号重启后失效