Kali Linuxにrosewill RNX-N600UBEワイヤレスカード(Ralink RT2870チップセット)のドライバーをインストールしようとしています。ドライバーをウェブサイトからダウンロードして解凍/解凍しましたが、「make」コマンドを実行しようとすると、このエラーが発生します。
/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.c:1156:20: error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’
/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.c:1157:20: error: incompatible types when assigning to type ‘int’ from type ‘kgid_t’
make[4]: *** [/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.o] Error 1
make[3]: *** [_module_/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux] Error 2
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2
問題は、カーネルヘッダー/インターフェースの1つが最近の3.xカーネルで変更されたことです。 UID/GID値が最初は通常の整数と呼ばれていたところ、現在は単一の要素を持つ構造体になっています。古いカーネル定義に依存するコードは、新しいカーネルヘッダーに一致するように更新されるまで、コンパイルに失敗します。
現在、Ubuntuのインストール用にvirtualbox-guest-utilsの同様のエラーにパッチを適用する実験を行っています。理論的には、エラーで報告された行番号で->i_uid =
のインスタンスを->i_uid.val =
に、または->i_gid =
を->i_gid.val =
に置き換えて、問題を解決する必要があります(ただし、現時点では、コンパイルは別の無関係なエラーで失敗しているため)。
あなたの最善の策は、新しいカーネルで動作するソースの更新バージョンについて、コードの元の作者に連絡することです。
このウェブサイトの別のドライバーでコンパイルエラーの修正を見つけました: http://www.arnelborja.com/compiling-rt2870-wifi-driver-in-Fedora/
以下はパッチの内容です:
--- include/os/rt_linux.h 2013-09-12 13:27:14.000000000 +0800
+++ include/os/rt_linux.h.patched 2014-03-23 11:45:03.907628847 +0800
@@ -279,8 +279,8 @@ typedef struct file* RTMP_OS_FD;
typedef struct _OS_FS_INFO_
{
- int fsuid;
- int fsgid;
+ kuid_t fsuid;
+ kgid_t fsgid;
mm_segment_t fs;
} OS_FS_INFO;
make
はエラーのみを報告しますが、実際にはコンパイラー(おそらくgcc)からのエラーです。
error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’
基本的に、コードはバグがあるか、プラットフォームにとって不適切ですが、make
は正しく機能します。
この解決策は私にとってうまくいきました。私が従った手順は:
私は here から私のディストリビューション(Debian Jessie)の手順に従いました。
メーカーのLinux用ドライバー(CDROMに同梱されています)を保存し、フォルダに解凍しました。
フォルダーにmake
(root
として)と入力したところ、エラーが発生しました。だから、私は上記の修正を行い、それはうまくいきました。
make install
(root
として)、コンピューターを再起動し、ワイヤレスインターフェイスが認識されました。私はそれを設定し、それは働いた。 ;)
私のシステムは、Debian Jessie、カーネル3.16.0-4-AMD64、gnomeを使用しています。