【kernel + modules】

kernel + modules

# uname -r
2.6.18-308.el5
==kernel相关概念==
双树结构(测试版,稳定版)

一、 升级内核 : linux-2.6.39.tar.gz
==升级内核的目的
追求前瞻性
开发测试使用
增加新的功能
使用新的硬件驱动
给内核瘦身
其它需求(嵌入式开发)

==实施步骤
1. 安装编译所需的工具 gcc lib make(开发工具 开发库)
2. 下载内核源码
   a. www.kernel.org(最新)
   b. ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server
      ftp://ftp.redhat.com/pub/redhat/linux/enterprise/6Server
3. 解压linux-2.6.39.tar.gz (解压到/usr/src)
4. 配置内核编译的参数  make menuconfig (类似./configure)
5. 开始编译make (等价于这两个命令:make bzImage  make modules)           #make -j 2 (使用两个cpu内核编译,默认使用一个)
6. 安装模块 make modules_install     //安装到了 /lib/modules/$(uname -r)
7. 安装内核make install             //安装到了 /boot
8. 检查 ls /boot, /boot/grub/grub.conf  查看是否有了新的内核

==具体实施
1. yum -y  groupinstall  "开发工具" "开发库"
2. 下载
3. # tar xvf linux-2.6.39.tar.gz -C /usr/src/        //-C 指定解压到哪里
   # cd /usr/src/linux-2.6.39/
4. #  make prproper       清理代码树
   # make menuconfig     ******这个很重要,以后要学会根据需要配置

     General setup  --->
      [*] Enable deprecated sysfs features to support old userspace tool
       [*]   Enable deprecated sysfs features by default 
5. # make
6. # make modules_install
7. # make install
8. 检查 ls /boot, /boot/grub/grub.conf

二、给当前内核增加功能(模块)kernel-2.6.18-308.el5.src.rpm
   注:使用和当前内核版本完全匹配内核源码包
1. 查看当前内核版本
[root@station230 ~]# uname -r
2.6.18-308.el5

2. 建议不要从www.kernel.org
ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server
kernel-2.6.18-308.el5.src.rpm

3. 需要工具rpm-build,开发工具,开发库
[root@station230 ~]# rpm -q rpm-build
rpm-build-4.4.2.3-27.el5
[root@station230 ~]# ls /usr/src/redhat/
BUILD  RPMS  SOURCES  SPECS  SRPMS

4. 释放src.rpm   //因为模块在这个内核源码包里,所以要先释放这个
[root@station230 kernel]# rpm -ivh kernel-2.6.18-308.el5.src.rpm
[root@station230 ~]# rpmbuild -bp --target=$(uname -m) /usr/src/redhat/SPECS/kernel.spec   将源码解压
[root@station230 ~]# cd /usr/src/redhat/BUILD/
[root@station230 BUILD]# ls
kernel-2.6.18
[root@station230 ~]# cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18-308.el5.i686/
[root@station230 linux-2.6.18-308.el5.i686]# ls
arch     CREDITS        fs       Kbuild       Makefile  REPORTING-BUGS  sound
block    crypto         include  kernel       mm        samples         tools
configs  Documentation  init     lib          net       scripts         usr
COPYING  drivers        ipc      MAINTAINERS  README    security

示例:安装xfs.ko jfs.ko
以下的操作在内核的源码目录
==编译模块
[root@station230 linux-2.6.18-308.el5.i686]# make menuconfig
│<M> JFS filesystem support                                           │ │ 
  │ │[ ]   JFS POSIX Access Control Lists (NEW)                           │ │ 
  │ │[ ]   JFS Security Labels (NEW)                                      │ │ 
  │ │[ ]   JFS debugging (NEW)                                            │ │ 
  │ │[ ]   JFS statistics (NEW)                                           │ │ 
  │ │<M> XFS filesystem support
[root@station230 linux-2.6.18-308.el5.i686]# mkdir .tmp_versions  //建立这个目录是因为后面报错了没有它
[root@station230 linux-2.6.18-308.el5.i686]# ls
arch     crypto         init    MAINTAINERS     net             security
block    Documentation  ipc     Makefile        README          sound
configs  drivers        Kbuild  mm              REPORTING-BUGS  tools
COPYING  fs             kernel  Module.markers  samples         usr
CREDITS  include        lib     Module.symvers  scripts
[root@station230 linux-2.6.18-308.el5.i686]# make fs/xfs/xfs.ko        //安装模块
[root@station230 linux-2.6.18-308.el5.i686]# make fs/jfs/jfs.ko

==复制模块到当前内核模块目录/lib/modules
[root@station230 ~]# mkdir /lib/modules/2.6.18-308.el5/kernel/fs/{xfs,jfs}
[root@station230 linux-2.6.18-308.el5.i686]# pwd
/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18-308.el5.i686
[root@station230 linux-2.6.18-308.el5.i686]# cp fs/jfs/jfs.ko /lib/modules/2.6.18-308.el5/kernel/fs/jfs/
[root@station230 linux-2.6.18-308.el5.i686]# cp fs/xfs/xfs.ko /lib/modules/2.6.18-308.el5/kernel/fs/xfs/

==重新生成模块的依赖关系
[root@station230 ~]# cd /lib/modules/2.6.18-308.el5/
[root@station230 2.6.18-308.el5]# ls
build           modules.dep          modules.seriomap
[root@station230 2.6.18-308.el5]#  depmod  *****//更新依赖关系

管理模块
lsmod       查看已加载的模块
modinfo 查看模块的信息
modprobe  jfs        //手动加载模块
modprobe xfs
modprobe -r xfs 移出模块

示例:创建一个jfs的文件系统
1. fdisk -u /dev/sda
2. 安装创建jfs文件系统的软件
tar xvf  jfsutils-1.1.15.tar.gz      解压
[root@station230 ~]# cd jfsutils-1.1.15
[root@station230 jfsutils-1.1.15]# ./configure && make && make install  安装三部曲
3. 创建文件系统
[root@station230 ~]# mkfs.jfs /dev/md0
[root@station230 ~]# mkdir /mnt/jfs
[root@station230 ~]# mount /dev/md0  /mnt/jfs
[root@station230 ~]# lsmod |grep jfs
jfs                   149228  1



======= 安装网卡驱动 ========
rm -rf /lib/modules/2.6.18-308.el5/kernel/drivers/net/e1000
rm -rf /lib/modules/2.6.18-308.el5/kernel/drivers/net/e1000e
[root@station230 ~]# depmod
[root@station230 ~]# modinfo e1000e
modinfo: could not find module e1000e
[root@station230 ~]# modinfo e1000
modinfo: could not find module e1000


下载相应的网卡驱动
[root@station230 ~]# tar xvf e1000e-2.0.0.1.tar.gz
[root@station230 ~]# cd e1000e-2.0.0.1
[root@station230 e1000e-2.0.0.1]# ls
COPYING  e1000e.7  e1000e.spec  pci.updates  README  src  SUMS
[root@station230 e1000e-2.0.0.1]# vim  README
2. Untar/unzip archive:

     tar zxf e1000e-x.x.x.tar.gz

3. Change to the driver src directory:

     cd e1000e-x.x.x/src/

4. Compile the driver module:

     # make install

[root@station230 src]# pwd
/root/e1000e-2.0.0.1/src
[root@station230 src]# make install (可能会报错,需要安装对应版本的kernel-devel [root@station3 ~]# yum list |grep kernel )

[root@station230 ~]# depmod
[root@station230 ~]# modinfo e1000e
[root@station230 ~]# modprobe e1000e
[root@station230 ~]# lsmod |grep e1000e
e1000e                187608  0
8021q                  25929  2 e1000e,cxgb3

#modinfo -n e1000e      (根据模块名查找位置)





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值