【问题标题】:freebsd kernel module - "make" command: unable to locate the kernel source tree. Set SYSDIR to overridefreebsd 内核模块-“make”命令:无法定位内核源代码树。将 SYSDIR 设置为覆盖
【发布时间】:2017-06-19 08:46:00
【问题描述】:

我是freebsd的新手。我在VMware上安装了freebsd。我想写第一个freebsd内核模块。我找到了这个链接:How to write a FreeBSD Kernel Module

但在第 3 步中,在 ma​​ke 命令之后,我得到: 无法定位内核源代码树。将 SYSDIR 设置为覆盖。

ma​​ke 命令的输出是什么? 我现在该怎么办?

【问题讨论】:

  • 您是否尝试过google此错误消息?你的机器上是否安装了内核源代码(通常在/usr/src 下)?
  • 是的,我搜索,但没有成功!我该怎么做? sysinstall 命令未找到!
  • 所以你的实际问题是“如何安装内核源代码”,不是吗?那么,如果您知道没有内核源代码将无法工作,为什么还要询问构建模块?
  • 我不知道!我今天知道了,在测试了一些方法后,我发送了这篇文章。我是这个领域很多问题的初学者。

标签: freebsd kernel-module


【解决方案1】:

一般来说,您要从查看 FreeBSD 源代码开始。像这样:

svnlite cohttp://svn.freebsd.org/base/head

这将创建“头”目录。然后:将包含模块源代码的目录移动到 head/sys/dev/。去head/sys/modules/,以'pty'为例(cp -r pty yourmodule),修改head/sys/modules/yourmodule/Makefile(不言自明,只需更改输出名称和源文件名),修改 head/sys/modules/Makefile 以添加“yourmodule”(同样,只需在此处搜索“pty”,复制、粘贴、重命名)。瞧——您已经以最佳方式将内核模块连接到构建;您现在可以使用“make buildkernel installkernel”,kgdb(8) 将知道您的代码的来源在哪里,您是否启用了 INVARIANTS 等等。

【讨论】:

    【解决方案2】:

    FreeBSD handbook 描述了如何使用svn 获取内核源代码。

    【讨论】:

      【解决方案3】:

      在创建/测试你自己的模块之前,我建议首先尝试编译一个generic kernel,然后是一个自定义内核,只有在成功完成所有这些之后,尝试开始测试你的模块。这样做的目的是熟悉 freebsd 构建过程的工作原理并帮助您更快地实现模块。

      这是进行完全干净升级的基本“快速”步骤(跳过 mergemaster):

      1. cd /usr/src
      2. svnlite co svn://svn.freebsd.org/base/stable/11 /usr/src
      3. make buildworld(如果有多个内核,您可以尝试 make -j40 buildworld)
      4. 制作内核(或制作 -j40 内核)
      5. make installworld(跳过 mergemaster -p)
      6. 是 |使删除旧
      7. cp -R /etc /etc.old && cd /usr/src && make 分发 DESTDIR=/
      8. cd /etc.old && cp group passwd master.passwd /etc && pwd_mkdb /etc/master.passwd
      9. 重启
      10. 是 |删除旧库

      完成所有这些之后,您可以通过编辑/etc/src.conf 文件和/etc/make.conf 来开始自定义构建,您可以在其中定义仅编译您的模块,从而使构建过程更快,下面和示例一个/etc/make.conf,除了使用自定义内核/usr/src/sys/amd64/conf/TEQUILA之外,它只会编译zfsopensolaris模块:

      MODULES_OVERRIDE=zfs opensolaris
      KERNCONF=TEQUILA
      

      通过这样做,您可以更快地编译/测试,您确实只能这样做:

      MODULES_OVERRIDE=mymodule
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-13
        • 1970-01-01
        • 2014-04-17
        相关资源
        最近更新 更多