我是freebsd的新手。我在VMware上安装了freebsd。我想先编写一个freebsd内核模块。我找到了这个链接:How to write a FreeBSD Kernel Module
但是在第3步中,在 make 命令后,我得到: 无法找到内核源代码树。将SYSDIR设置为覆盖。
make 命令的输出是什么? 我现在该怎么办?
答案 0 :(得分:1)
一般来说,你要开始的地方是检查FreeBSD源代码。像这样:
svnlite co http://svn.freebsd.org/base/head
这将创建“head”目录。然后:将包含模块源代码的目录移动到head / sys / dev /中。去做head / sys / modules /,使用'pty'作为示例(cp -r pty yourmodule),修改head / sys / modules / yourmodule / Makefile(这是不言自明的,只需更改输出名称和源文件名),修改head / sys / modules / Makefile以添加“yourmodule”(再次,只在那里搜索“pty”,复制,粘贴,重命名)。 Voila - 您已经以最佳方式将内核模块连接到构建;您现在可以使用“make buildkernel installkernel”,kgdb(8)将知道代码的来源,启用了INVARIANTS等。
答案 1 :(得分:0)
FreeBSD handbook描述了如何使用svn获取内核源代码。
答案 2 :(得分:0)
在创建/测试自己的模块之前,我建议首先尝试编译generic kernel,接下来是自定义内核,并且只有在成功完成所有这些之后,才尝试开始测试模块。这样做的目的是熟悉freebsd构建过程的工作原理,并帮助您更快地实现模块。
这是基本的"快速"步骤(滑动mergemaster
)进行全面清洁升级:
完成所有这些操作后,您可以通过编辑/etc/src.conf文件和您可以定义的/etc/make.conf来自定义构建,以便仅编译模块,从而加快构建过程,以下是/etc/make.conf
的示例,除了使用自定义内核/usr/src/sys/amd64/conf/TEQUILA
之外,它只会编译zfs
和opensolaris
个模块:
MODULES_OVERRIDE=zfs opensolaris
KERNCONF=TEQUILA
通过这样做,您可以更快地编译/测试,您确实可以这样做:
MODULES_OVERRIDE=mymodule