Centos7 下编译ramdisk内核模块brd.ko的方法

1. 确保centos7上有gcc和make等工具

2. 获取centos7源码。
    CentOS-7-x86_64-1503-01版本的内核是3.10.0-229.el7.x86_64,下载该distribution版本的内核源码,拷贝到根目录:
    http://vault.centos.org/7.1.1503/updates/Source/SPackages/kernel-3.10.0-229.1.2.el7.src.rpm
   
    安装该源码包
    [user@host]# rpm -i kernel-3.10.0-229.1.2.el7.src.rpm 
    
    现在内核的源代码目录树可以在 ~/rpmbuild/SOURCE/ 这个目录内找得到,源码文件是linux-3.10.0-229.1.2.el7.tar.xz
   
3. 编译内核源码
    (1) 将linux-3.10.0-229.1.2.el7.tar.xz 文件拷贝到目录  /usr/src/kernels/ 下
   
    (2) 解压内核源码
        [user@host kernels]#  tar -xvf linux-3.10.0-229.1.2.el7.tar.xz
       
    (3) 切换到 linux-3.10.0-229.1.2.el7目录
        [user@host kernels] #  cd linux-3.10.0-229.1.2.el7
       
    (4)清除从前编译内核时残留的.o 文件和不必要的关联。
           确保源代码目录下没有不正确的.o文件和文件依赖关系,执行该命令后,内核选项会回到默认的状态下。如果你是下载的内核源码,而且是第一次编译,就没有必要执行这一步操作
        [user@host inux-3.10.0-229.1.2.el7]# make mrproper
       
        将已存在的./.config文件内容,作为新版本内核的默认值。
        [user@host inux-3.10.0-229.1.2.el7]# make oldconfig
       
    (5) 配置内核,修改相关参数
        [user@host inux-3.10.0-229.1.2.el7]# make menuconfig
        在内核配置菜单中配置ramdisk块驱动模块的个数和大小,并保存退出
            Device Drivers
                |-->Block devices
                            |-->  [M]RAM block device support
                                     (xx) Default number of RAM disks
                                     (xx) Default RAM disk size(kbytes)
       
    (6) 编译内核和内核模块
        [user@host inux-3.10.0-229.1.2.el7]# make bzImage  
        [user@host inux-3.10.0-229.1.2.el7]# make modules
   
    (7) 编译后的Ramdisk模块的存放位置
        /usr/src/kernels/linux-3.10.0-229.1.2.el7/drivers/block/brd.ko
   
4. 安装新的brd.ko模块

    (1) 将新的brd.ko模块拷贝到Centos7系统的 如下目录/lib/modules/3.10.0-229.el7.x86_64/kernel/drivers/block/,
        覆盖原来的ramDisk模块brd.ko。

    (2) 将旧的brd.ko模块从内核中移除。
        [root@localhost ~]# rmmod brd
   
    (3) 更新内核模块依赖。
        [root@localhost  ~]# depmod -a
  
    (4) 重新挂载内核模块。
        [root@localhost  ~]# modprobe brd
   
    (5) 检查内核模块是否挂载成功,
        如果上面的内核选项中[Default number of RAM disks]的值设置的是2,那么,
        新模块加载成功后,命令会输出显示/dev/ram0 和 /dev/ram1 两个设备
        [root@localhost  ~]#  ls /dev/ram*   
    
    (6) 检查ramdisk的容量大小(以1024M的ramdisk为例),输入以下命令。
         [root@localhost  ~] mkdir /tmp/ramdisk0
         [root@localhost  ~] mke2fs /dev/ram0
         [root@localhost  ~] mount /dev/ram0 /tmp/ramdisk0
         [root@localhost  ~] df -h
            Filesystem               Size  Used Avail Use% Mounted on
            /dev/ram0               1008M  1.3M  956M   1% /tmp/ramdisk0

你可能感兴趣的:(Centos7 下编译ramdisk内核模块brd.ko的方法)