linux新增内核,为已安装好的 Linux 系统新增一个内核模块

By Falcon of TinyLab.org

Dec 10, 2019

背景简介

有一个具体的需求:那就是 docker for mac 的内核没有编译进 minix 内核模块,导致 Linux 0.11 Lab 在这种情况下无法挂载 minix 的文件系统。所以,得根据用户内核的情况,单独去编译这个内核模块。

这里简单介绍一下,如何快速下载相应的模块源码,并在 host 下编译。

安装 linux headers

首先安装 linux-headers:

$ sudo apt-get -y update

$ sudo apt-get install -y linux-headers-`uname -r`

接着下载相应模块的代码(一定要是同一个版本的内核),比如说用 uname -r 命令看到的是:4.4.0-165-generic,那么下载 v4.4 的内核,可以到国内镜像站下载。

下载内核模块的源代码

考虑到只能在内核源码中找到 minix 模块,这里直接下载整个内核源码。

打开如下链接,在右侧“克隆/下载”那点击“下载ZIP”,ZIP 包只有 159M,下载还是很快的。

也可以用 wget 直接下载:

$ wget -c https://gitee.com/tinylab/linux-stable/repository/archive/v4.4.zip

基于 /lib/modules/ 来编译

以 minix fs 为例,

$ cd /path/to/linux-stable

$ cd fs/minix/

$ make -C /lib/modules/`uname -r`/build M=$PWD modules CONFIG_MINIX_FS=m LOCALVERSION=

make: Entering directory '/usr/src/linux-headers-4.4.0-165-generic'

CC [M] /labs/linux-lab/minix/module/bitmap.o

CC [M] /labs/linux-lab/minix/module/itree_v1.o

CC [M] /labs/linux-lab/minix/module/itree_v2.o

CC [M] /labs/linux-lab/minix/module/namei.o

CC [M] /labs/linux-lab/minix/module/inode.o

CC [M] /labs/linux-lab/minix/module/file.o

CC [M] /labs/linux-lab/minix/module/dir.o

LD [M] /labs/linux-lab/minix/module/minix.o

Building modules, stage 2.

MODPOST 1 modules

CC /labs/linux-lab/minix/module/minix.mod.o

LD [M] /labs/linux-lab/minix/module/minix.ko

make: Leaving directory '/usr/src/linux-headers-4.4.0-165-generic'

直接在内核源码中编译

如果是类似上面有完整的内核源代码,那么可以直接在 Linux 源码根目录下配置编译。

不过,需要先拿到配置文件,通常可以在 /proc/config.gz 中拿到:

$ cd /path/to/linux

$ zcat /proc/config.gz > .config

通常也可以从 /boot 下面拿到:

$ cp /boot/config-`uname -r` .config

然后用老的配置文件配置一遍:

$ make olddefconfig

之后准备以下内核模块需要编译的环境:

$ make modules_prepare

接着直接编译 minix fs 模块:

$ make fs/minix/minix.ko CONFIG_MINIX_FS=m LOCALVERSION=

补充

如果内核源码目录有内容没有被提交,或者不干净,那么会在内核版本后面加上 + 和 dirty,如果不想关注它们,直接把 LOCALVERSION 设置为空。也可以用 git clean -fdX 和 git reset --hard 清理一下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值