2017-02-02 39 views
1

我是freebsd的新手。我在VMware上安裝了freebsd。我想寫第一個freebsd內核模塊。我發現這個鏈接:How to write a FreeBSD Kernel Modulefreebsd內核模塊 - 「make」命令:無法找到內核源碼樹。設置SYSDIR覆蓋

但在第3步,後使命令我得到: 無法找到內核源代碼樹。設置SYSDIR以覆蓋。

的輸出是什麼令命令? 現在我該怎麼做?

+1

您是否嘗試過** google **此錯誤消息?你的機器上安裝了內核源代碼(通常在'/ usr/src'下)? – Tsyvarev

+0

是的,我搜索,但沒有成功!我該怎麼做? **找不到sysinstall **命令! – user7194905

+0

所以你的**實際問題**是「如何安裝內核源代碼」,不是嗎?那你爲什麼要問關於如何構建這個模塊?如果你知道,如果沒有內核源代碼,這不起作用。 – Tsyvarev

回答

0

一般來說,你要開始的地方是檢查FreeBSD源代碼。就像這樣:

svnlite合作http://svn.freebsd.org/base/head

這將創建一個 「頭」 目錄。然後:將模塊的源代碼移動到head/sys/dev /中。 Go頭/ sys/modules /,使用'pty'作爲示例(cp -r pty yourmodule),修改head/sys/modules/yourmodule/Makefile(不言自明,只需更改輸出名稱和源文件名),修改head/sys/modules/Makefile以添加「yourmodule」(再次,在那裏搜索「pty」,複製,粘貼,重命名)。瞧 - 你已經以儘可能最好的方式將你的內核模塊連接到了構建中;你現在可以使用「make buildkernel installkernel」,kgdb(8)會知道你的代碼的來源在哪裏,你有INVARIANTS啓用等等。

0

在創建/測試你自己的模塊之前,我會建議先編譯一個generic kernel,接下來是自定義內核,並且只有在成功完成所有這些後,才能嘗試開始測試您的模塊。這個想法是爲了熟悉freebsd構建過程如何工作並幫助您更快地實現您的模塊。

這是基本的 「快」 的步驟(skiping mergemaster)做全面清理升級:

  1. CD/usr/src目錄
  2. svnlite合作的svn://svn.freebsd.org/base /穩定/ 11/usr/src目錄
  3. make buildworld的(如果有多個內核,你可以嘗試讓-j40 buildworld的)
  4. 進行內核(或使-j40內核)
  5. 化妝的installworld(跳過在mergemaster -p)
  6. 是|使刪除老
  7. CP -R /等/etc.old & &坎德拉/ usr/src目錄& &化妝分佈DESTDIR =/
  8. CD /etc.old & & CP組的passwd master.passwd /等& & pwd_mkdb/etc/master。passwd
  9. reboot
  10. yes |使刪除,老庫

做這一切之後,你就可以開始定製您建立通過編輯/etc/src.conf文件,並在那裏你可以定義只編譯你的模塊,因此使構建過程更快/etc/make.conf ,下方例如/etc/make.conf的,這將只編譯zfsopensolaris模塊除了使用定製的內核/usr/src/sys/amd64/conf/TEQUILA

MODULES_OVERRIDE=zfs opensolaris 
KERNCONF=TEQUILA 

這樣做,你可以編譯/測試速度更快,你確實可以只做:

MODULES_OVERRIDE=mymodule