labunix's blog

labunixのラボUnix

「dkms.conf」のエラーには「BUILT_MODULE_NAME」行を追加するといいよ。

■「dkms.conf」のエラーには「BUILT_MODULE_NAME」行を追加するといいよ。

結論から言うと、「dkms.conf」に「BUILT_MODULE_NAME」行が
不足しているためにエラーになる。

これは他の「*-dkms」も同様のようだ。

$ sudo grep NAME /usr/src/ndiswrapper-1.57/dkms.conf
PACKAGE_NAME="ndiswrapper"
BUILT_MODULE_NAME[0]="ndiswrapper"

$ sudo /usr/lib/dkms/dkms_autoinstaller start
[ ok ] dkms: running auto installation service for kernel 3.2.0-4-amd64:.

■Kernelのアップデート時のエラーの確認。
 「BUILT_MODULE_NAME」が見つからないエラー。

...
run-parts: executing /etc/kernel/header_postinst.d/dkms 3.2.0-4-amd64
dkms.conf: Error! No 'BUILT_MODULE_NAME' directive specified for record #0.
Error! Bad conf file.
File: 
does not represent a valid dkms.conf file.
linux-libc-dev:amd64 (3.2.65-1) を設定しています ...
linux-source-3.2 (3.2.65-1) を設定しています ...

$ sudo grep "Error" /var/log/apt/term.log
dkms.conf: Error! No 'BUILT_MODULE_NAME' directive specified for record #0.
Error! Bad conf file.
dkms.conf: Error! No 'BUILT_MODULE_NAME' directive specified for record #0.
Error! Bad conf file.

■dkmsについて

$ find /etc/kernel/ | grep dkms
/etc/kernel/header_postinst.d/dkms
/etc/kernel/prerm.d/dkms
/etc/kernel/postinst.d/dkms

$ dpkg -l *dkms* | awk '/^ii/ {print $2}'
dkms
ndiswrapper-dkms

$ sudo dkms status
dkms.conf: Error! No 'BUILT_MODULE_NAME' directive specified for record #0.
Error! Bad conf file.
File: 
does not represent a valid dkms.conf file.

$ dpkg -L ndiswrapper-dkms | grep dkms.conf
/usr/src/ndiswrapper-1.57/dkms.conf

■これは以下のバグと同じ。

 Debian Bug report logs - #695824
 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=695824

■一度、新しいKernelを反映するために再起動

$ sudo shutdown -r now && exit

■モジュールは起動しているように見える。

$ find /etc/dkms /var/lib/dkms -print | grep dkms.conf
/var/lib/dkms/ndiswrapper/1.57/build/dkms.conf

$ sudo find /var/lib -type f -name "dkms.conf"
/var/lib/dkms/ndiswrapper/1.57/build/dkms.conf

$ lsmod | grep ndiswrapper
ndiswrapper           220250  0 
usbcore               128741  8 xhci_hcd,ehci_hcd,usbhid,btusb,ath3k,uvcvideo,ndiswrapper

■「ndiswrapper」を削除すると問題なく起動する。

$ sudo apt-get purge -y ndiswrapper-dkms
(データベースを読み込んでいます ... 現在 179566 個のファイルとディレクトリがインストールされています。)
ndiswrapper-dkms を削除しています ...

-------- Uninstall Beginning --------
Module:  ndiswrapper
Version: 1.57
Kernel:  3.2.0-4-amd64 (x86_64)
-------------------------------------

Status: Before uninstall, this module version was ACTIVE on this kernel.

ndiswrapper.ko:
 - Uninstallation
   - Deleting from: /lib/modules/3.2.0-4-amd64/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.

depmod....

DKMS: uninstall completed.

------------------------------
Deleting module version: 1.57
completely from the DKMS tree.
------------------------------
Done.

$ sudo /usr/lib/dkms/dkms_autoinstaller start
[ ok ] dkms: running auto installation service for kernel 3.2.0-4-amd64:.

■ということは「ndiswrapper-dkms」パッケージの
 「dkms.conf」ファイル側に問題がありそうだ。

$ sudo apt-get install -y ndiswrapper-dkms
$ sudo /usr/lib/dkms/dkms_autoinstaller start
[....] dkms: running auto installation service for kernel 3.2.0-4-amd64:dkms.conf: Error! No 'BUILT_MODULE_NAME' directive specified for record #0.
Error! Bad conf file.
File: 
does not represent a valid dkms.conf file.
. ok 

■「ndiswrapper-dkms」の「dkms.conf」に「BUILT_MODULE_NAME[0]=ndiswrapper」と
 書けば良さそう。

 以下を参照。
 http://code.openhub.net/?s=%22BUILT_MODULE_NAME%22&browser=Default?s=%22BUILT_MODULE_NAME%22&browser=Default

■というわけで復旧。
 「dpkg-reconfigure」しても「dkms.conf」は変わらないことを確認。
 ステータスも正常に取得出来る。

$ cat /usr/src/ndiswrapper-1.57/dkms.conf
PACKAGE_NAME="ndiswrapper"
BUILT_MODULE_NAME[0]="ndiswrapper"
PACKAGE_VERSION="1.57"
DEST_MODULE_LOCATION[0]="/updates"
AUTOINSTALL="yes"

$ sudo dpkg-reconfigure ndiswrapper-dkms

$ grep ^BUILT /usr/src/ndiswrapper-1.57/dkms.conf
BUILT_MODULE_NAME[0]="ndiswrapper"

$ sudo /usr/lib/dkms/dkms_autoinstaller start
[ ok ] dkms: running auto installation service for kernel 3.2.0-4-amd64:.

$ sudo dkms status
ndiswrapper, 1.57, 3.2.0-4-amd64, x86_64: installed