Estou tentando instalar drivers para uma placa sem fio RNX-N600UBE da rosewill (chipset Ralink RT2870) no Kali Linux. Eu baixei os drivers do site e os descompactei / descompactei, mas agora, quando tento executar o comando 'make', recebo esse erro.
/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
Respostas:
O problema é que um dos cabeçalhos / interfaces do kernel mudou em um kernel 3.x recente. Onde os valores UID / GID eram originalmente chamados de números inteiros regulares, agora são estruturas com um único elemento. Qualquer código baseado na definição mais antiga agora falhará na compilação até ser atualizado para corresponder aos novos cabeçalhos do kernel.
Atualmente, estou experimentando corrigir um erro semelhante no virtualbox-guest-utils para minha instalação do Ubuntu; em teoria, localizar e substituir instâncias de
->i_uid =
com->i_uid.val =
ou->i_gid =
com->i_gid.val =
os números de linha relatados no erro deve resolver o problema (mas não posso garantir que, neste momento, a compilação esteja falhando em um erro diferente e não relacionado) para mim).Sua melhor aposta é entrar em contato com o autor original do seu código para obter uma versão atualizada da fonte que funciona com os kernels mais recentes.
fonte
current_fsuid()
paracurrent_fsuid().val
current_fsgid()
paracurrent_fsgid().val
int
parakuid_t
também parece funcionar.Encontrei uma correção para os erros de compilação em outro driver neste site: http://www.arnelborja.com/compiling-rt2870-wifi-driver-in-fedora/
abaixo está o conteúdo do patch:
fonte
kuid_t
ekgid_t
foram introduzidos. Para aqueles,k
deve ser descartado, como emuid_t fsuid;
egid_t fsgid;
make
relata apenas os erros, mas na verdade são erros do seu compilador (provavelmente o gcc):Basicamente, seu código é
make
incorreto ou inapropriado para sua plataforma, mas funciona corretamente.fonte
Esta solução funcionou para mim. O procedimento que segui foi:
Segui os passos para a minha distribuição (Debian Jessie) a partir daqui .
Salvei o driver para Linux do fabricante (que acompanha o equipamento no CD-ROM) e descompactei em uma pasta.
Na pasta, digitei
make
(asroot
) e recebi um erro. Então, eu fiz a modificação acima e funcionou.Digitei
make install
(asroot
), reiniciei o computador e a interface sem fio foi reconhecida. Eu configurei e funcionou. ;)Meu sistema é: Debian Jessie, kernel 3.16.0-4-amd64, usando o gnome.
fonte