设为首页 收藏本站
查看: 2100|回复: 0

[经验分享] linux kernel modules

[复制链接]

尚未签到

发表于 2019-2-17 12:19:19 | 显示全部楼层 |阅读模式
  # 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
  4. 配置内核编译的参数make menuconfig (类似./configure)
  5. 开始编译make (等价于这两个命令 make bzImage  make modules)
  6. 安装模块make modules_install     //安装到了 /lib/modules/$(uname -r)
  7. 安装内核make install             //安装到了 /boot
  8. 检查 ls /boot, /boot/grub/grub.conf, /lib/modules查看是否有了新的内核
  ==具体实施
  1. yum -y groupinstall "开发工具" "开发库"
  2. 下载
  3. # tar xvf linux-2.6.39.tar.gz -C /usr/src/
  # cd /usr/src/linux-2.6.39/
  4. # make prproper 清理代码树
  # cp /boot/config-2.6.18-308.el5PAE .config将系统中原有的config复制
  # make menuconfig     ******这个很重要,以后要学会根据需要配置
  RHEL5:
  General setup  --->
  
  • Enable deprecated sysfs features to support old userspace tool
      
  •    Enable deprecated sysfs features by default
      ===================
      # head -5 Makefile 修改kernel版本名
      VERSION = 2
      PATCHLEVEL = 6
      SUBLEVEL = 39
      EXTRAVERSION = -yangsheng
      ===================
      5. # make
      6. # make modules_install
      7. # make install
      8. 检查 ls /boot, /boot/grub/grub.conf
      # ls /lib/modules/2.6.39-yangsheng/kernel/fs/ntfs/
      ntfs.ko
      二、给当前内核增加功能(模块)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
      │ JFS filesystem support                                           │ │
      │ │[ ]   JFS POSIX Access Control Lists (NEW)                           │ │
      │ │[ ]   JFS Security Labels (NEW)                                      │ │
      │ │[ ]   JFS debugging (NEW)                                            │ │
      │ │[ ]   JFS statistics (NEW)                                           │ │
      │ │ 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  //更新依赖关系
      管理模块
      modinfo 查看模块的信息  modinfo xfs    modinfo -n xfs
      lsmod  查看已加载的模块
      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
      =======安装网卡驱动========
      [root@station253 ~]# modinfo -n e1000e
      /lib/modules/2.6.18-308.el5xen/kernel/drivers/net/e1000e/e1000e.ko
      [root@station253 ~]# rm -rf /lib/modules/2.6.18-308.el5xen/kernel/drivers/net/e1000e
      [root@station230 ~]# depmod
      [root@station230 ~]# modinfo e1000e
      modinfo: could not find module e1000e
      下载相应的网卡驱动
      [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
      [root@station230 ~]# depmod
      [root@station230 ~]# modinfo e1000e
      [root@station230 ~]# modprobe e1000e
      [root@station230 ~]# lsmod |grep e1000e
      e1000e                187608  0
      8021q                  25929  2 e1000e,cxgb3
      kernel-headers-2.6.18-308.el5




  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-673564-1-1.html 上篇帖子: linux find tar 下篇帖子: linux cron
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表